From b6be2ced3fa9726fc8065b89b6c845b6d6d89c3a Mon Sep 17 00:00:00 2001 From: Niklas Schulze Date: Sat, 30 Apr 2016 16:34:07 +0200 Subject: [PATCH 1/2] Support mail box names containing square brackets --- lib/Parser.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/Parser.js b/lib/Parser.js index c00a1ac0..2b4913b7 100644 --- a/lib/Parser.js +++ b/lib/Parser.js @@ -375,7 +375,7 @@ function parseQuotaRoot(text, literals) { } function parseBoxList(text, literals) { - var r = parseExpr(text, literals); + var r = parseExpr(text, literals, null, null, false); return { flags: r[0], delimiter: r[1], From 475d5165ef1328855c07f4b95ac0a30dd7477735 Mon Sep 17 00:00:00 2001 From: Niklas Schulze Date: Sat, 30 Apr 2016 17:47:59 +0200 Subject: [PATCH 2/2] Add mailbox name parsing test --- test/test-parse-mailbox-names.js | 58 ++++++++++++++++++++++++++++++++ 1 file changed, 58 insertions(+) create mode 100644 test/test-parse-mailbox-names.js diff --git a/test/test-parse-mailbox-names.js b/test/test-parse-mailbox-names.js new file mode 100644 index 00000000..82e40908 --- /dev/null +++ b/test/test-parse-mailbox-names.js @@ -0,0 +1,58 @@ +var parseExpr = require('../lib/Parser').parseExpr; + +var assert = require('assert'), + inspect = require('util').inspect; + +[ + + { source: '(\HasNoChildren) "." SimpleName', + expected: [ [ 'HasNoChildren' ], '.', "SimpleName" ], + what: 'Simple mailbox name' + }, + + { source: '(\HasNoChildren) "." "SimpleNameQuoted"', + expected: [ [ 'HasNoChildren' ], '.', "SimpleNameQuoted" ], + what: 'Quoted mailbox name' + }, + + { source: '(\HasNoChildren) "." "Simple Name Quoted With Spaces"', + expected: [ [ 'HasNoChildren' ], '.', "Simple Name Quoted With Spaces" ], + what: 'Quoted mailbox name with spaces' + }, + + { source: '(\HasNoChildren) "." [NameWithBrackets].AndChild', + expected: [ [ 'HasNoChildren' ], '.', [ 'NameWithBrackets' ], '.AndChild' ], + what: 'Mailbox name containings brackets' + }, + + { source: '(\HasNoChildren) "." "[Name With Quotes Spaces Brackets.AndChild]"', + expected: [ [ 'HasNoChildren' ], '.', '[Name With Quotes Spaces Brackets.AndChild]' ], + what: 'Mailbox name containings quotes, spaces and brackets' + }, + + + +].forEach(function(v) { + var result; + + try { + result = parseExpr(v.source, null, null, false); + } catch (e) { + console.log(makeMsg(v.what, 'JS Exception: ' + e.stack)); + return; + } + + assert.deepEqual(result, + v.expected, + makeMsg(v.what, + 'Result mismatch:' + + '\nParsed: ' + inspect(result, false, 10) + + '\nExpected: ' + inspect(v.expected, false, 10) + ) + ); + +}); + +function makeMsg(what, msg) { + return '[' + what + ']: ' + msg; +}