diff options
author | Azul <azul@riseup.net> | 2012-11-20 10:51:54 +0100 |
---|---|---|
committer | Azul <azul@riseup.net> | 2012-11-20 10:51:54 +0100 |
commit | 555491c4420a3b8b23b74fb081b76a5bf7778049 (patch) | |
tree | fd280571682a640d248c6b714c2831633031052c /spec/login_spec.js | |
parent | 2859af0287d7672df0a8965be43fb9859fca8bf8 (diff) | |
parent | 082f859bbdaedf4f03eb85aea9b8f88ffda2fe6d (diff) |
Merge branch 'feature/clean-srp' into develop
Diffstat (limited to 'spec/login_spec.js')
-rw-r--r-- | spec/login_spec.js | 49 |
1 files changed, 28 insertions, 21 deletions
diff --git a/spec/login_spec.js b/spec/login_spec.js index 4df62a8..da343a5 100644 --- a/spec/login_spec.js +++ b/spec/login_spec.js @@ -1,9 +1,4 @@ -describe("Login", function() { - - it("has an identify function", function() { - var srp = new SRP(jqueryRest()); - expect(typeof srp.identify).toBe('function'); - }); +describe("Login with srp var", function() { describe("(Compatibility with py-srp)", function (){ // these need to be the same as in the spec runner: @@ -24,11 +19,9 @@ describe("Login", function() { beforeEach(function() { - this.srp = new SRP(jqueryRest()); - specHelper.setupFakeXHR.apply(this); - A_ = this.srp.session.calculateAndSetA(a) + A_ = srp.session.calculateAndSetA(a) }); afterEach(function() { @@ -40,37 +33,51 @@ describe("Login", function() { }); it("calculates the same verifier", function(){ - expect(this.srp.session.getV().toString(16)).toBe(V); + expect(srp.session.getV().toString(16)).toBe(V); }); it("calculates the same key", function(){ - this.srp.session.calculations(salt, B); - expect(this.srp.session.key()).toBe(K); + srp.session.calculations(salt, B); + expect(srp.session.key()).toBe(K); }); - it("works with JSON responses", function(){ - var success = sinon.spy(); - this.srp.identify(success); + it("authenticates successfully", function(){ + srp.loggedIn = sinon.spy(); + srp.login(); this.expectRequest('sessions.json', 'login=' +login+ '&A=' +A, 'POST'); this.respondJSON({salt: salt, B: B}); this.expectRequest('sessions/'+login+'.json', 'client_auth='+M, 'PUT'); this.respondJSON({M2: M2}); - expect(success).toHaveBeenCalled(); + expect(srp.loggedIn).toHaveBeenCalled(); + }); + + it("reports errors during handshake", function(){ + srp.error = sinon.spy(); + var error = {login: "something went wrong on the server side"}; + srp.login(); + + this.expectRequest('sessions.json', 'login=' +login+ '&A=' +A, 'POST'); + this.respondJSON(error, 422); + //this.expectNoMoreRequests(); + + expect(srp.error).toHaveBeenCalled; + var args = srp.error.args[0]; + expect($.parseJSON(args[0].responseText)).toEqual(error); }); it("rejects B = 0", function(){ - var success = sinon.spy(); - var error = sinon.spy(); - this.srp.identify(success, error); + srp.loggedIn = sinon.spy(); + srp.error = sinon.spy(); + srp.login(); this.expectRequest('sessions.json', 'login=' +login+ '&A=' +A, 'POST'); this.respondJSON({salt: salt, B: 0}); // aborting if B=0 expect(this.requests).toEqual([]); - expect(error).toHaveBeenCalled(); - expect(success).not.toHaveBeenCalled(); + expect(srp.error).toHaveBeenCalledWith("Server send random number 0 - could not login."); + expect(srp.loggedIn).not.toHaveBeenCalled(); }); }); |