summaryrefslogtreecommitdiffstats
path: root/comm/mailnews/mime/jsmime/test/unit/test_custom_headers.js
diff options
context:
space:
mode:
Diffstat (limited to 'comm/mailnews/mime/jsmime/test/unit/test_custom_headers.js')
-rw-r--r--comm/mailnews/mime/jsmime/test/unit/test_custom_headers.js43
1 files changed, 43 insertions, 0 deletions
diff --git a/comm/mailnews/mime/jsmime/test/unit/test_custom_headers.js b/comm/mailnews/mime/jsmime/test/unit/test_custom_headers.js
new file mode 100644
index 0000000000..85c86628de
--- /dev/null
+++ b/comm/mailnews/mime/jsmime/test/unit/test_custom_headers.js
@@ -0,0 +1,43 @@
+"use strict";
+define(function (require) {
+ var assert = require("assert");
+ var jsmime = require("jsmime");
+
+ suite("Custom decoder support", function () {
+ function customDecoder(values) {
+ let value = values.join("");
+ return atob(value);
+ }
+ function customEncoder(value) {
+ this.addText(btoa(value), true);
+ }
+ test("addStructuredEncoder", function () {
+ assert.equal(
+ "X-Base64: String\r\n",
+ jsmime.headeremitter.emitStructuredHeader("X-Base64", "String", {})
+ );
+ jsmime.headeremitter.addStructuredEncoder("X-Base64", customEncoder);
+ assert.equal(
+ "X-Base64: U3RyaW5n\r\n",
+ jsmime.headeremitter.emitStructuredHeader("X-Base64", "String", {})
+ );
+ assert.equal(
+ "X-Base64: U3RyaW5n\r\n",
+ jsmime.headeremitter.emitStructuredHeader("x-bASe64", "String", {})
+ );
+ });
+ test("addStructuredDecoder", function () {
+ assert.throws(function () {
+ jsmime.headerparser.parseStructuredHeader("X-Base64", "U3RyaW5n");
+ }, /Unknown structured header/);
+ jsmime.headerparser.addStructuredDecoder("X-Base64", customDecoder);
+ assert.equal(
+ "String",
+ jsmime.headerparser.parseStructuredHeader("X-Base64", "U3RyaW5n")
+ );
+ assert.throws(function () {
+ jsmime.headerparser.addStructuredDecoder("To", customDecoder);
+ }, /Cannot override header/);
+ });
+ });
+});