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 | |
parent | 2859af0287d7672df0a8965be43fb9859fca8bf8 (diff) | |
parent | 082f859bbdaedf4f03eb85aea9b8f88ffda2fe6d (diff) |
Merge branch 'feature/clean-srp' into develop
Diffstat (limited to 'spec')
-rw-r--r-- | spec/helper.js | 4 | ||||
-rw-r--r-- | spec/login_spec.js | 49 | ||||
-rw-r--r-- | spec/session_spec.js | 1 | ||||
-rw-r--r-- | spec/signup_spec.js | 32 |
4 files changed, 47 insertions, 39 deletions
diff --git a/spec/helper.js b/spec/helper.js index 11327af..8bae2c6 100644 --- a/spec/helper.js +++ b/spec/helper.js @@ -30,11 +30,11 @@ var specHelper = (function() { request.respond(200, header, body); } - function respondJSON(object) { + function respondJSON(object, responseCode) { var request = this.requests.pop(); header = { "Content-Type": "application/json;charset=utf-8" }; body = JSON.stringify(object); - request.respond(200, header, body); + request.respond(responseCode || 200, header, body); } return { 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(); }); }); diff --git a/spec/session_spec.js b/spec/session_spec.js index b7f16f0..643a717 100644 --- a/spec/session_spec.js +++ b/spec/session_spec.js @@ -15,7 +15,6 @@ describe("Session", function() { var session; beforeEach(function() { - var srp = new SRP(jqueryRest()); session = new srp.Session(compare.username, compare.password); }); diff --git a/spec/signup_spec.js b/spec/signup_spec.js index e4d70df..41af179 100644 --- a/spec/signup_spec.js +++ b/spec/signup_spec.js @@ -1,27 +1,30 @@ -describe("Signup", function() { +describe("Loading SRP", function() { + it("provides a signup function", function() { + expect(typeof srp.signup).toBe('function'); + }); + it("provides session which calculates the right x", function(){ + srp.session = new srp.Session(); + expect(srp.session.calcX("7686acb8").toString(16)).toBe('84d6bb567ddf584b1d8c8728289644d45dbfbb02deedd05c0f64db96740f0398'); + }); +}); + +describe("Signup with srp var", function() { + beforeEach(function() { - this.srp = new SRP(jqueryRest()); specHelper.setupFakeXHR.apply(this); + srp.session = new srp.Session(); }); afterEach(function() { this.xhr.restore(); }); - - it("has a register function", function() { - expect(typeof this.srp.register).toBe('function'); - }); - - it("calculates the right x", function(){ - expect(this.srp.session.calcX("7686acb8").toString(16)).toBe('84d6bb567ddf584b1d8c8728289644d45dbfbb02deedd05c0f64db96740f0398'); - }); - + it("identifies after successful registration (INTEGRATION)", function(){ var callback = sinon.spy(); - this.srp.identify = callback; - this.srp.session.getSalt = function() {return "4c78c3f8"}; - this.srp.register(); + srp.signedUp = callback; + srp.session.getSalt = function() {return "4c78c3f8"}; + srp.signup(); this.expectRequest('users.json', "user[login]=testuser&user[password_salt]=4c78c3f8&user[password_verifier]=474c26aa42d11f20544a00f7bf9711c4b5cf7aab95ed448df82b95521b96668e7480b16efce81c861870302560ddf6604c67df54f1d04b99d5bb9d0f02c6051ada5dc9d594f0d4314e12f876cfca3dcd99fc9c98c2e6a5e04298b11061fb8549a22cde0564e91514080df79bca1c38c682214d65d590f66b3719f954b078b83c", 'POST') this.respondJSON({password_salt: "4c78c3f8", login: "testuser", ok: "true"}); expect(callback).toHaveBeenCalled(); @@ -29,4 +32,3 @@ describe("Signup", function() { }); - |