summaryrefslogtreecommitdiff
path: root/frontend/gamma/tests/tests/Clipperz/PM/Connection.test.js
Side-by-side diff
Diffstat (limited to 'frontend/gamma/tests/tests/Clipperz/PM/Connection.test.js') (more/less context) (ignore whitespace changes)
-rw-r--r--frontend/gamma/tests/tests/Clipperz/PM/Connection.test.js255
1 files changed, 255 insertions, 0 deletions
diff --git a/frontend/gamma/tests/tests/Clipperz/PM/Connection.test.js b/frontend/gamma/tests/tests/Clipperz/PM/Connection.test.js
new file mode 100644
index 0000000..e4d0d15
--- a/dev/null
+++ b/frontend/gamma/tests/tests/Clipperz/PM/Connection.test.js
@@ -0,0 +1,255 @@
+/*
+
+Copyright 2008-2011 Clipperz Srl
+
+This file is part of Clipperz's Javascript Crypto Library.
+Javascript Crypto Library provides web developers with an extensive
+and efficient set of cryptographic functions. The library aims to
+obtain maximum execution speed while preserving modularity and
+reusability.
+For further information about its features and functionalities please
+refer to http://www.clipperz.com
+
+* Javascript Crypto Library is free software: you can redistribute
+ it and/or modify it under the terms of the GNU Affero General Public
+ License as published by the Free Software Foundation, either version
+ 3 of the License, or (at your option) any later version.
+
+* Javascript Crypto Library is distributed in the hope that it will
+ be useful, but WITHOUT ANY WARRANTY; without even the implied
+ warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+ See the GNU Affero General Public License for more details.
+
+* You should have received a copy of the GNU Affero General Public
+ License along with Javascript Crypto Library. If not, see
+ <http://www.gnu.org/licenses/>.
+
+*/
+
+Clipperz.Crypto.PRNG.defaultRandomGenerator().fastEntropyAccumulationForTestingPurpose();
+
+var tests = {
+
+ //-------------------------------------------------------------------------
+
+ 'simple_tests': function () {
+ var deferredResult;
+
+ deferredResult = new Clipperz.Async.Deferred("simple_tests", {trace:false});
+ deferredResult.addCallback(function() {
+ var connection;
+
+ SimpleTest.is(Clipperz.PM.Connection.communicationProtocol.versions['current'], Clipperz.PM.Connection.SRP['1.1'], "the current connection is 1.1");
+
+ connection = new Clipperz.PM.Connection.communicationProtocol.versions['current']();
+ SimpleTest.ok(connection != null, "can create a connection with the 'current' communication protocol");
+
+ SimpleTest.is(connection.proxy(), Clipperz.PM.Proxy.defaultProxy, "the connection uses the defaultProxy if no proxy is specified on the constructor");
+ });
+
+ deferredResult.callback();
+
+ return deferredResult;
+ },
+
+ //-------------------------------------------------------------------------
+
+ 'simpleProxy_tests': function () {
+ var deferredResult;
+
+ deferredResult = new Clipperz.Async.Deferred("simple_tests", {trace:false});
+ deferredResult.addCallback(function() {
+ var connection;
+ var proxy;
+
+ proxy = new Clipperz.PM.Proxy();
+ connection = new Clipperz.PM.Connection.communicationProtocol.versions['current']({proxy:proxy});
+ SimpleTest.is(connection.proxy(), proxy, "the connection uses the specified proxy, when present");
+ });
+
+ deferredResult.callback();
+
+ return deferredResult;
+ },
+
+ //-------------------------------------------------------------------------
+
+ 'login_test': function () {
+ var deferredResult;
+ var connection;
+ var proxy;
+
+ proxy = new Clipperz.PM.Proxy.Test({shouldPayTolls:false, shouldCheckExpectedRequests:true});
+ connection = new Clipperz.PM.Connection.communicationProtocol.versions['current']({
+ proxy: proxy,
+ getCredentialsFunction: function() { return {username:'joe', password:'clipperz'}; }
+ });
+
+ deferredResult = new Clipperz.Async.Deferred("login_tests", {trace:false});
+ deferredResult.addMethod(proxy.dataStore(), 'setupWithEncryptedData', testData['joe_clipperz_offline_copy_data']);
+ deferredResult.addCallback(function() {
+ proxy.expectedRequests().unshift({
+ name: "First handshake step",
+ functionName: 'handshake',
+ parameters: {
+ parameters: {
+ message: MochiKit.Base.partial(MochiKit.Base.operator.eq, "connect"),
+ version: MochiKit.Base.partial(MochiKit.Base.operator.eq, "0.2"),
+ parameters: {
+ C: MochiKit.Base.partial(MochiKit.Base.operator.eq, "f527cdd90d0d47f8524b4e165398ad1455eba515d04abd101d1e93b3c6ae0674"),
+ A: MochiKit.Base.operator.truth
+ }
+ }
+ }
+ });
+ });
+ deferredResult.addCallback(function() {
+ proxy.expectedRequests().unshift({
+ name: "Second handshake step",
+ functionName: 'handshake',
+ parameters: {
+ parameters: {
+ message: MochiKit.Base.partial(MochiKit.Base.operator.eq, "credentialCheck"),
+ version: MochiKit.Base.partial(MochiKit.Base.operator.eq, "0.2"),
+ parameters: {
+ M1: MochiKit.Base.operator.truth
+ }
+ }
+ }
+ });
+ });
+ deferredResult.addMethod(connection, 'login'/*, 'joe', 'clipperz'*/);
+ deferredResult.addCallback(function(aResult) {
+ SimpleTest.is(aResult.result, 'done', "successfully logged in");
+ })
+ deferredResult.addErrback(SimpleTest.ok, false, "the login procedure should succeed, and NOT going through this code path");
+ deferredResult.callback();
+
+ return deferredResult;
+ },
+
+ //-------------------------------------------------------------------------
+
+ 'login_with_toll_test': function () {
+ var deferredResult;
+ var connection;
+ var proxy;
+
+ proxy = new Clipperz.PM.Proxy.Test({shouldPayTolls:true, shouldCheckExpectedRequests:true});
+ connection = new Clipperz.PM.Connection.communicationProtocol.versions['current']({
+ proxy:proxy,
+ getCredentialsFunction: function() { return {username:'joe', password:'clipperz'}; }
+ });
+
+ deferredResult = new Clipperz.Async.Deferred("login_with_toll_test", {trace:false});
+ deferredResult.addMethod(proxy.dataStore(), 'setupWithEncryptedData', testData['joe_clipperz_offline_copy_data']);
+ deferredResult.addCallback(function() {
+ proxy.expectedRequests().unshift({
+ name: "knock step",
+ functionName: 'knock',
+ parameters: {
+ requestType: MochiKit.Base.partial(MochiKit.Base.operator.eq, "CONNECT")
+ }
+ });
+ });
+ deferredResult.addCallback(function() {
+ proxy.expectedRequests().unshift({
+ name: "First handshake step",
+ functionName: 'handshake',
+ parameters: {
+ parameters: {
+ message: MochiKit.Base.partial(MochiKit.Base.operator.eq, "connect"),
+ version: MochiKit.Base.partial(MochiKit.Base.operator.eq, "0.2"),
+ parameters: {
+ C: MochiKit.Base.partial(MochiKit.Base.operator.eq, "f527cdd90d0d47f8524b4e165398ad1455eba515d04abd101d1e93b3c6ae0674"),
+ A: MochiKit.Base.operator.truth
+ }
+ },
+ toll: {
+ targetValue: MochiKit.Base.operator.truth,
+ toll: MochiKit.Base.operator.truth
+ }
+ }
+ });
+ });
+ deferredResult.addCallback(function() {
+ proxy.expectedRequests().unshift({
+ name: "Second handshake step",
+ functionName: 'handshake',
+ parameters: {
+ parameters: {
+ message: MochiKit.Base.partial(MochiKit.Base.operator.eq, "credentialCheck"),
+ version: MochiKit.Base.partial(MochiKit.Base.operator.eq, "0.2"),
+ parameters: {
+ M1: MochiKit.Base.operator.truth
+ }
+ },
+ toll: {
+ targetValue: MochiKit.Base.operator.truth,
+ toll: MochiKit.Base.operator.truth
+ }
+ }
+ });
+ });
+ deferredResult.addMethod(connection, 'login'/*, 'joe', 'clipperz'*/);
+ deferredResult.addCallback(function(aResult) {
+ SimpleTest.is(aResult.result, 'done', "successfully logged in");
+ })
+ deferredResult.callback();
+
+ return deferredResult;
+ },
+
+ //-------------------------------------------------------------------------
+
+ 'getUserDetails_test': function () {
+ var deferredResult;
+ var connection;
+ var proxy;
+
+ proxy = new Clipperz.PM.Proxy.Test({shouldPayTolls:true, shouldCheckExpectedRequests:false});
+ connection = new Clipperz.PM.Connection.communicationProtocol.versions['current']({
+ proxy:proxy,
+ getCredentialsFunction: function() { return {username:'joe', password:'clipperz'}; }
+ });
+
+ deferredResult = new Clipperz.Async.Deferred("getUserDetails_test", {trace:false});
+ deferredResult.addMethod(proxy.dataStore(), 'setupWithEncryptedData', testData['joe_clipperz_offline_copy_data']);
+ deferredResult.addMethod(connection, 'login'/*, 'joe', 'clipperz'*/);
+ deferredResult.addCallback(function(aResult) {
+ SimpleTest.is(aResult.result, 'done', "successfully logged in");
+ });
+ deferredResult.addMethod(proxy, 'setShouldCheckExpectedRequests', [
+ {
+ name: "Get user details",
+ functionName: 'message',
+ parameters: {
+ parameters: {
+ message: MochiKit.Base.partial(MochiKit.Base.operator.eq, "getUserDetails"),
+ srpSharedSecret: MochiKit.Base.operator.truth
+ },
+ toll: {
+ targetValue: MochiKit.Base.operator.truth,
+ toll: MochiKit.Base.operator.truth
+ }
+ }
+ }
+ ]);
+ deferredResult.addMethod(connection, 'message', 'getUserDetails');
+ deferredResult.addCallback(function(aResult) {
+ SimpleTest.ok(aResult['header'] != null, "got user details - header");
+ SimpleTest.ok(aResult['statistics'] != null, "got user details - statistics");
+ SimpleTest.ok(aResult['version'] == '0.3', "got user details - version");
+ });
+ deferredResult.callback();
+
+ return deferredResult;
+ },
+
+ //-------------------------------------------------------------------------
+ 'syntaxFix': MochiKit.Base.noop
+};
+
+//#############################################################################
+
+SimpleTest.runDeferredTests("Clipperz.PM.Connection", tests, {trace:false});