Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/thsmi/sieve.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
path: root/tests
diff options
context:
space:
mode:
authorThomas Schmid <schmid-thomas@gmx.net>2018-11-14 05:28:15 +0300
committerThomas Schmid <schmid-thomas@gmx.net>2018-11-14 05:28:15 +0300
commit6d3749337f02886aa06a56b0f0ef8a279130e4ac (patch)
tree5d9d98196092793262c1b49720a0151f2e9da209 /tests
parent5344a4831745c2a3bad6986fc0e7a2858636d39e (diff)
Improve Capability handling
Implement an anyof beside the allof Store capabilities and dependencies into a single object Consolidate current implementation into one class
Diffstat (limited to 'tests')
-rw-r--r--tests/tests/sieve/SieveFastMailTest.js16
-rwxr-xr-xtests/tests/tests.js1
-rwxr-xr-xtests/tests/validators/ScriptValidator.js123
3 files changed, 82 insertions, 58 deletions
diff --git a/tests/tests/sieve/SieveFastMailTest.js b/tests/tests/sieve/SieveFastMailTest.js
index 7d1e3da4..065e15ca 100644
--- a/tests/tests/sieve/SieveFastMailTest.js
+++ b/tests/tests/sieve/SieveFastMailTest.js
@@ -38,7 +38,7 @@
+ ' stop;\r\n'
+ '}\r\n';
- suite.expectValidScript(script, { "fileinto": true });
+ suite.expectValidScript(script, ["fileinto"]);
});
@@ -54,7 +54,7 @@
+ ' stop;\r\n'
+ '}\r\n';
- suite.expectValidScript(script, { "fileinto": true });
+ suite.expectValidScript(script, ["fileinto"]);
});
@@ -73,7 +73,7 @@
+ ' stop;\r\n'
+ '}\r\n';
- suite.expectValidScript(script, { "fileinto": true });
+ suite.expectValidScript(script, ["fileinto"]);
});
@@ -99,7 +99,7 @@
+ 'redirect "another@account.net";\r\n'
+ '\r\n';
- suite.expectValidScript(script, { "fileinto": true, "imap4flags" : true });
+ suite.expectValidScript(script, ["fileinto", "imap4flags"]);
});
suite.add(function () {
@@ -122,7 +122,7 @@
+ ' stop;\r\n'
+ '}\r\n';
- suite.expectValidScript(script, { "fileinto": true, "relational":true, "comparator-i;ascii-numeric": true });
+ suite.expectValidScript(script, ["fileinto", "relational", "comparator-i;ascii-numeric"]);
});
suite.add(function () {
@@ -138,7 +138,7 @@
+ ' stop;\r\n'
+ '}\r\n';
- suite.expectValidScript(script, { "fileinto": true });
+ suite.expectValidScript(script, ["fileinto"]);
});
suite.add(function () {
@@ -153,7 +153,7 @@
+ ' fileinto "INBOX.Sent Items";\r\n'
+ '}\r\n';
- suite.expectValidScript(script, { "fileinto": true, "imap4flags": true });
+ suite.expectValidScript(script, ["fileinto", "imap4flags"]);
});
suite.add(function () {
@@ -194,7 +194,7 @@
// + ' keep;\r\n'
+ '}\r\n';
- suite.expectValidScript(script, { "regex": true });
+ suite.expectValidScript(script, ["regex"]);
});
})();
diff --git a/tests/tests/tests.js b/tests/tests/tests.js
index 897098c9..5a346fe3 100755
--- a/tests/tests/tests.js
+++ b/tests/tests/tests.js
@@ -18,6 +18,7 @@
// JQuery
"./../common/jQuery/jquery.min.js",
// Basic Sieve Elements
+ "./../common/libSieve/toolkit/logic/GenericCapabilities.js",
"./../common/libSieve/toolkit/SieveParser.js",
"./../common/libSieve/toolkit/SieveLexer.js",
"./../common/libSieve/toolkit/SieveScriptDOM.js",
diff --git a/tests/tests/validators/ScriptValidator.js b/tests/tests/validators/ScriptValidator.js
index 5ff4fdb2..3c3abcb6 100755
--- a/tests/tests/validators/ScriptValidator.js
+++ b/tests/tests/validators/ScriptValidator.js
@@ -12,142 +12,165 @@
/* global window */
-
-( function ( exports ) {
+(function (exports) {
"use strict";
- /* global SieveDocument */
- /* global SieveLexer */
+ /* global SieveDocument */
+ /* global SieveLexer */
/* global SieveGrammar */
+ /* global SieveCapabilities */
var suite = exports.net.tschmid.yautt.test;
if (!suite)
- throw new Error( "Could not append script test tools to test suite" );
+ throw new Error("Could not append script test tools to test suite");
/**
* Parses the given script and returns a SieveDocument.
* It honors the server's capabilities.
*
- * @param{string} script
+ * @param {string} script
* the script to parse
- * @param{Object.<string, boolean>} [capabilities]
+ * @param {Object.<string, boolean>} [capabilities]
* optional parameter which simulates the the server's capabilities
*
- * @return{SieveDocument}
+ * @return {SieveDocument}
* the parsed sieve document
*/
- function parseScript( script, capabilities ) {
+ function parseScript(script, capabilities) {
- SieveGrammar.create( capabilities );
+ SieveGrammar.create(capabilities);
if (capabilities)
SieveLexer.capabilities(capabilities);
- var doc = new SieveDocument(SieveLexer,null);
+ let doc = new SieveDocument(SieveLexer, null);
doc.script(script);
return doc;
}
+
suite.parseScript = parseScript;
- function validateDocument( doc, script, capabilities ) {
+ /**
+ *
+ * @param {*} doc
+ * @param {*} script
+ * @param {*} capabilities
+ */
+ function validateDocument(doc, script, capabilities) {
suite.logTrace("Start Serializing Script");
- var rv = doc.script();
+ let rv = doc.script();
suite.logTrace("End Serializing Script");
suite.assertEquals(script, rv);
if (capabilities) {
- var requires = {};
- doc.root().require(requires);
+ let dependencies = new SieveCapabilities(capabilities);
+ doc.root().require(dependencies);
suite.logTrace(rv);
- for (var capability in capabilities) {
- suite.logTrace("Testing Capability: "+capability);
- suite.assertEquals( true, requires[capability], "Did not find capability '" + capability + "'" );
+ for (let capability of capabilities) {
+ suite.logTrace("Testing Capability: " + capability);
+ suite.assertTrue(dependencies.hasCapability(capability), "Did not find capability '" + capability + "'");
}
}
}
suite.validateDocument = validateDocument;
- function expectValidScript( script, capabilities ) {
+ /**
+ *
+ * @param {*} script
+ * @param {*} capabilities
+ */
+ function expectValidScript(script, capabilities) {
- suite.logTrace( "Start Parsing Script" );
- var doc = suite.parseScript( script, capabilities );
- suite.logTrace( "End Parsing Script" );
+ suite.logTrace("Start Parsing Script");
+ let doc = suite.parseScript(script, capabilities);
+ suite.logTrace("End Parsing Script");
- suite.logTrace( "Start Serializing Script" );
- validateDocument( doc, script, capabilities );
- suite.logTrace( "End Serializing Script" );
+ suite.logTrace("Start Serializing Script");
+ validateDocument(doc, script, capabilities);
+ suite.logTrace("End Serializing Script");
return doc;
}
suite.expectValidScript = expectValidScript;
+ /**
+ *
+ * @param {*} script
+ * @param {*} exception
+ * @param {*} capabilities
+ */
+ function expectInvalidScript(script, exception, capabilities) {
- function expectInvalidScript( script, exception, capabilities ) {
-
- SieveGrammar.create( capabilities );
+ SieveGrammar.create(capabilities);
if (capabilities)
SieveLexer.capabilities(capabilities);
- let doc = new SieveDocument(SieveLexer, null);
+ let doc = new SieveDocument(SieveLexer, null);
suite.logTrace("Start Parsing Script");
try {
doc.script(script);
}
- catch(e) {
+ catch (e) {
suite.logTrace("Exception caught");
- suite.assertEquals( exception, e.toString().substr( 0, exception.length ) );
+ suite.assertEquals(exception, e.toString().substr(0, exception.length));
return;
}
- throw new Error( "Exception expected" );
+ throw new Error("Exception expected");
}
suite.expectInvalidScript = expectInvalidScript;
+ /**
+ *
+ * @param {*} type
+ * @param {*} snipplet
+ * @param {*} capabilities
+ */
+ function expectValidSnipplet(type, snipplet, capabilities) {
- function expectValidSnipplet( type, snipplet, capabilities ) {
-
- SieveGrammar.create( capabilities );
+ SieveGrammar.create(capabilities);
- if ( capabilities )
- SieveLexer.capabilities( capabilities );
+ if (capabilities)
+ SieveLexer.capabilities(capabilities);
- var doc = new SieveDocument( SieveLexer, null );
+ let doc = new SieveDocument(SieveLexer, null);
// Create element with defaults and convert it to a script sniplet...
- let element = doc.createByName( type );
+ let element = doc.createByName(type);
let rv1 = element.toScript();
// ... and should match our expectation.
- suite.assertEquals( snipplet, rv1 );
+ suite.assertEquals(snipplet, rv1);
// ... then try to parse these script sniplet
- var rv2 = doc.createByName( type, rv1 ).toScript();
+ let rv2 = doc.createByName(type, rv1).toScript();
// and ensure both snipplets should be identical...
- suite.assertEquals( rv1, rv2 );
+ suite.assertEquals(rv1, rv2);
+
+ if (capabilities) {
- if ( capabilities ) {
- var requires = {};
- element.require( requires );
+ let dependencies = new SieveCapabilities(capabilities);
+ element.require(dependencies);
- suite.logTrace( rv1 );
+ suite.logTrace(rv1);
- for ( var capability in capabilities ) {
- suite.logTrace( "Testing Capability: " + capability );
- suite.assertEquals( true, requires[capability], "Did not find capability '" + capability + "'" );
+ for (let capability of capabilities) {
+ suite.logTrace("Testing Capability: " + capability);
+ suite.assertTrue(dependencies.hasCapability(capability), "Did not find capability '" + capability + "'");
}
}
@@ -156,4 +179,4 @@
suite.expectValidSnipplet = expectValidSnipplet;
-}( window ) );
+})(window);