diff options
author | Thomas Schmid <schmid-thomas@gmx.net> | 2018-11-14 05:28:15 +0300 |
---|---|---|
committer | Thomas Schmid <schmid-thomas@gmx.net> | 2018-11-14 05:28:15 +0300 |
commit | 6d3749337f02886aa06a56b0f0ef8a279130e4ac (patch) | |
tree | 5d9d98196092793262c1b49720a0151f2e9da209 /tests | |
parent | 5344a4831745c2a3bad6986fc0e7a2858636d39e (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.js | 16 | ||||
-rwxr-xr-x | tests/tests/tests.js | 1 | ||||
-rwxr-xr-x | tests/tests/validators/ScriptValidator.js | 123 |
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); |