Skip to content

Commit 3c347ca

Browse files
committed
Merge pull request #56 from kuzzleio/loginNotQueuable
made login and logout not queuable
2 parents 924618f + 61883d8 commit 3c347ca

File tree

6 files changed

+44
-18
lines changed

6 files changed

+44
-18
lines changed

dist/kuzzle.js

Lines changed: 7 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -677,7 +677,7 @@ Kuzzle.prototype.login = function (strategy, credentials, expiresIn, cb) {
677677
request.expiresIn = expiresIn;
678678
}
679679

680-
this.query({controller: 'auth', action: 'login'}, {body: request}, {}, function(error, response) {
680+
this.query({controller: 'auth', action: 'login'}, {body: request}, {queuable: false}, function(error, response) {
681681
if (error === null) {
682682
self.setJwtToken(response.result.jwt);
683683
renewAllSubscriptions.call(self);
@@ -713,7 +713,7 @@ Kuzzle.prototype.logout = function (cb) {
713713
body: {}
714714
};
715715

716-
this.query({controller: 'auth', action: 'logout'}, request, {}, function(error) {
716+
this.query({controller: 'auth', action: 'logout'}, request, {queuable: false}, function(error) {
717717
if (error === null) {
718718
self.setJwtToken(undefined);
719719

@@ -1249,7 +1249,11 @@ Kuzzle.prototype.query = function (queryArgs, query, options, cb) {
12491249
}
12501250

12511251
if (self.state === 'connected' || (options && options.queuable === false)) {
1252-
emitRequest.call(this, object, cb);
1252+
if (self.state === 'connected') {
1253+
emitRequest.call(this, object, cb);
1254+
} else if (cb) {
1255+
cb(new Error('Unable to execute request: not connected to a Kuzzle server.\nDiscarded request: ' + object));
1256+
}
12531257
} else if (self.queuing|| ['initializing', 'connecting'].indexOf(self.state) !== -1) {
12541258
cleanQueue.call(this, object, cb);
12551259

dist/kuzzle.min.js

Lines changed: 1 addition & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

dist/kuzzle.min.map

Lines changed: 1 addition & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

src/kuzzle.js

Lines changed: 7 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -402,7 +402,7 @@ Kuzzle.prototype.login = function (strategy, credentials, expiresIn, cb) {
402402
request.expiresIn = expiresIn;
403403
}
404404

405-
this.query({controller: 'auth', action: 'login'}, {body: request}, {}, function(error, response) {
405+
this.query({controller: 'auth', action: 'login'}, {body: request}, {queuable: false}, function(error, response) {
406406
if (error === null) {
407407
self.setJwtToken(response.result.jwt);
408408
renewAllSubscriptions.call(self);
@@ -438,7 +438,7 @@ Kuzzle.prototype.logout = function (cb) {
438438
body: {}
439439
};
440440

441-
this.query({controller: 'auth', action: 'logout'}, request, {}, function(error) {
441+
this.query({controller: 'auth', action: 'logout'}, request, {queuable: false}, function(error) {
442442
if (error === null) {
443443
self.setJwtToken(undefined);
444444

@@ -974,7 +974,11 @@ Kuzzle.prototype.query = function (queryArgs, query, options, cb) {
974974
}
975975

976976
if (self.state === 'connected' || (options && options.queuable === false)) {
977-
emitRequest.call(this, object, cb);
977+
if (self.state === 'connected') {
978+
emitRequest.call(this, object, cb);
979+
} else if (cb) {
980+
cb(new Error('Unable to execute request: not connected to a Kuzzle server.\nDiscarded request: ' + object));
981+
}
978982
} else if (self.queuing|| ['initializing', 'connecting'].indexOf(self.state) !== -1) {
979983
cleanQueue.call(this, object, cb);
980984

test/kuzzle/constructor.test.js

Lines changed: 10 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -851,7 +851,7 @@ describe('Kuzzle constructor', () => {
851851
}
852852
});
853853

854-
it('should be able to send a login request', function () {
854+
it('should be able to send a login request', function (done) {
855855
var
856856
kuzzle,
857857
loginCredentials = {username: 'foo', password: 'bar'};
@@ -862,16 +862,17 @@ describe('Kuzzle constructor', () => {
862862
connect: 'manual'
863863
});
864864

865-
kuzzle.queuing = true;
865+
kuzzle.query = function(queryArgs, query, options) {
866+
should(queryArgs.action).be.exactly('login');
867+
should(queryArgs.controller).be.exactly('auth');
868+
should(query.body.username).be.exactly('foo');
869+
should(query.body.password).be.exactly('bar');
870+
should(query.body.expiresIn).be.exactly('1h');
871+
should(options.queuable).be.false();
872+
done();
873+
};
866874

867875
kuzzle.login('local', loginCredentials, '1h');
868-
869-
should(kuzzle.offlineQueue.length).be.exactly(1);
870-
should(kuzzle.offlineQueue[0].query.action).be.exactly('login');
871-
should(kuzzle.offlineQueue[0].query.controller).be.exactly('auth');
872-
should(kuzzle.offlineQueue[0].query.body.username).be.exactly('foo');
873-
should(kuzzle.offlineQueue[0].query.body.password).be.exactly('bar');
874-
should(kuzzle.offlineQueue[0].query.body.expiresIn).be.exactly('1h');
875876
});
876877

877878
it('should forward token when logged in', function () {

test/kuzzle/query.test.js

Lines changed: 18 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -204,7 +204,7 @@ describe('Query management', function () {
204204
});
205205

206206
it('should emit the request directly without waiting the end of dequeuing if queuable is false', function () {
207-
kuzzle.state = 'reconnecting';
207+
kuzzle.state = 'connected';
208208
kuzzle.query(queryArgs, { body: { some: 'query'}}, {queuable: false});
209209
should(emitted).be.true();
210210

@@ -214,6 +214,23 @@ describe('Query management', function () {
214214
should(emitted).be.true();
215215
});
216216

217+
it('should discard the request if not connected and if queuable is false', function () {
218+
var
219+
errorRaised = false,
220+
callback = () => errorRaised = true;
221+
222+
kuzzle.state = 'reconnecting';
223+
kuzzle.query(queryArgs, { body: { some: 'query'}}, {queuable: false}, callback);
224+
should(emitted).be.false();
225+
should(errorRaised).be.true();
226+
227+
errorRaised = false;
228+
kuzzle.queuing = true;
229+
kuzzle.query(queryArgs, { body: { some: 'query'}}, {queuable: false}, callback);
230+
should(emitted).be.false();
231+
should(errorRaised).be.true();
232+
});
233+
217234
it('should queue the request during offline mode, if queuing has been activated', function () {
218235
var
219236
query = { body: { some: 'query'}},

0 commit comments

Comments
 (0)