diff --git a/.travis.yml b/.travis.yml index b9e5bbc..819ca6f 100644 --- a/.travis.yml +++ b/.travis.yml @@ -1,9 +1,11 @@ language: node_js +sudo: false node_js: - - "0.10" - - "0.11" + - 4.1 before_install: - npm install -g grunt-cli notifications: email: - - build@whiteout.io \ No newline at end of file + recipients: + - felix.hammerl@gmail.com + - andris.reinman@gmail.com diff --git a/README.md b/README.md index 08b22c1..d0a5cdc 100644 --- a/README.md +++ b/README.md @@ -1,8 +1,8 @@ -# mailbuild +# emailjs-mime-builder -*mailbuild* is a low level rfc2822 message composer. Define your own mime tree, no magic included. +*emailjs-mime-builder* is a low level rfc2822 message composer. Define your own mime tree, no magic included. -[![Build Status](https://travis-ci.org/whiteout-io/mailbuild.png?branch=master)](https://travis-ci.org/whiteout-io/mailbuild) +[![Build Status](https://travis-ci.org/emailjs/emailjs-mime-builder.png?branch=master)](https://travis-ci.org/emailjs/emailjs-mime-builder) ## StringEncoding API @@ -18,18 +18,18 @@ This module requires `TextEncoder` and `TextDecoder` to exist as part of the Str This module has dependencies that will be fetched automatically. -* [mimefuncs](https://github.com/whiteout-io/mimefuncs/) -* [mimetypes](https://github.com/whiteout-io/mimetypes/) -* [addressparser](https://github.com/whiteout-io/addressparser/) +* [emailjs-mime-codec](https://github.com/emailjs/emailjs-mime-codec/) +* [emailjs-mime-types](https://github.com/emailjs/emailjs-mime-types/) +* [emailjs-addressparser](https://github.com/emailjs/emailjs-addressparser/) * [punycode.js](https://github.com/bestiejs/punycode.js) -* [stringencoding](https://github.com/whiteout-io/stringencoding) +* [emailjs-stringencoding](https://github.com/emailjs/emailjs-stringencoding) ## API -Create a new `Mailbuild` object with +Create a new `MimeBuilder` object with ```javascript -var builder = new Mailbuild(contentType [, options]); +var builder = new MimeBuilder(contentType [, options]); ``` Where @@ -41,7 +41,7 @@ Where ## Methods -The same methods apply to the root node created with `new Mailbuild()` and to any child nodes. +The same methods apply to the root node created with `new MimeBuilder()` and to any child nodes. ### createChild @@ -51,12 +51,12 @@ Creates and appends a child node to the node object node.createChild(contentType, options) ``` -The same arguments apply as with `new Mailbuild()`. Created node object is returned. +The same arguments apply as with `new MimeBuilder()`. Created node object is returned. **Example** ```javascript -new Mailbuild("multipart/mixed"). +new MimeBuilder("multipart/mixed"). createChild("multipart/related"). createChild("text/plain"); ``` @@ -86,8 +86,8 @@ Method returns appended child node. **Example** ```javascript -var childNode = new Mailbuild("text/plain"), - rootNode = new Mailbuild("multipart/mixed"); +var childNode = new MimeBuilder("text/plain"), + rootNode = new MimeBuilder("multipart/mixed"); rootnode.appendChild(childNode); ``` @@ -115,9 +115,9 @@ Method returns replacement node. **Example** ```javascript -var rootNode = new Mailbuild("multipart/mixed"), +var rootNode = new MimeBuilder("multipart/mixed"), childNode = rootNode.createChild("text/plain"); -childNode.replace(new Mailbuild("text/html")); +childNode.replace(new MimeBuilder("text/html")); ``` Generates the following mime tree: @@ -141,7 +141,7 @@ Method returns removed node. ```javascript -var rootNode = new Mailbuild("multipart/mixed"), +var rootNode = new MimeBuilder("multipart/mixed"), childNode = rootNode.createChild("text/plain"); childNode.remove(); ``` @@ -173,7 +173,7 @@ Method returns current node. **Example** ```javascript -new Mailbuild("text/plain"). +new MimeBuilder("text/plain"). setHeader("content-disposition", "inline"). setHeader({ "content-transfer-encoding": "7bit" @@ -214,7 +214,7 @@ Method returns current node. **Example** ```javascript -new Mailbuild("text/plain"). +new MimeBuilder("text/plain"). addHeader("X-Spam", "1"). setHeader({ "x-spam": "2" @@ -248,7 +248,7 @@ Where **Example** ```javascript -new Mailbuild("text/plain").getHeader("content-type"); // text/plain +new MimeBuilder("text/plain").getHeader("content-type"); // text/plain ``` ## setContent @@ -267,7 +267,7 @@ Where **Example** ```javascript -new Mailbuild("text/plain").setContent("Hello world!"); +new MimeBuilder("text/plain").setContent("Hello world!"); ``` ## build @@ -283,7 +283,7 @@ Method returns the rfc2822 message as a string **Example** ```javascript -new Mailbuild("text/plain").setContent("Hello world!").build(); +new MimeBuilder("text/plain").setContent("Hello world!").build(); ``` Returns the following string: @@ -310,7 +310,7 @@ Method returns the envelope in the form of `{from:'address', to: ['addresses']}` **Example** ```javascript -new Mailbuild(). +new MimeBuilder(). addHeader({ from: "From ", to: "receiver1@example.com", @@ -340,7 +340,7 @@ the addresses are converted to punycode automatically. For attachments you should minimally set `filename` option and `Content-Disposition` header. If filename is specified, you can leave content type blank - if content type is not set, it is detected from the filename. ```javascript -new Mailbuild("multipart/mixed"). +new MimeBuilder("multipart/mixed"). createChild(false, {filename: "image.png"}). setHeader("Content-Disposition", "attachment"); ``` diff --git a/example/index.html b/example/index.html deleted file mode 100644 index 64d9c66..0000000 --- a/example/index.html +++ /dev/null @@ -1,14 +0,0 @@ - - - - - - - - - - - -

Output:


-
-
\ No newline at end of file
diff --git a/example/index.js b/example/index.js
deleted file mode 100644
index 61e62b6..0000000
--- a/example/index.js
+++ /dev/null
@@ -1,36 +0,0 @@
-require.config({
-    baseUrl: '../src',
-    paths: {
-        'addressparser': '../node_modules/addressparser/src/addressparser',
-        'mimetypes': '../node_modules/mimetypes/src/mimetypes',
-        'mimefuncs': '../node_modules/mimefuncs/src/mimefuncs',
-        'punycode': '../node_modules/punycode/punycode.min'
-    }
-});
-
-require(["mailbuild"], function(mailbuild) {
-    'use strict';
-
-    var mail = mailbuild("multipart/mixed");
-
-    mail.setHeader({
-        from: "test ",
-        to: "test ",
-        subject: "PGP Signature Demo"
-    });
-
-    var altNode = mail.createChild("multipart/alternative");
-    altNode.createChild({filename: "test.txt"}).setContent("Bacon ipsum dolor sit amet pastrami hamburger beef ribs fatback. Beef ribs sausage ham, tail jerky flank rump capicola ham hock ball tip. Pancetta t-bone pig, kevin tongue salami short ribs shank sausage sirloin venison beef cow doner swine. Filet mignon shank ball tip, pig ham hock shankle jerky swine boudin porchetta frankfurter pastrami. Tenderloin chuck salami meatball.");
-    altNode.createChild("text/html").setContent("

Hello world!

"); - altNode.createChild("text/html").setContent('

\nНо пожжэ омйттам жкаывола ыюм, зыд ыёрмод аюдирэ чингюльищ нэ.

'); - - mail.createChild("image/png", {filename: "image.png"}).setContent("BINARY_DATA"); - - // build entire message - var mailBody = mail.build(); - - document.getElementById("target").innerHTML = String(mailBody).replace(//g, ">"); -}); - - - diff --git a/package.json b/package.json index 6c0a0d4..5074b7c 100644 --- a/package.json +++ b/package.json @@ -1,39 +1,39 @@ { - "name": "mailbuild", - "version": "0.3.7", - "homepage": "https://github.com/whiteout-io/mailbuild", - "description": "mailbuild is a low level rfc2822 message composer. Define your own mime tree, no magic included.", - "author": "Andris Reinman ", - "keywords": [ - "RFC2822", - "mime" - ], - "license": "MIT", - "scripts": { - "test": "grunt" - }, - "repository": { - "type": "git", - "url": "git://github.com/whiteout-io/mailbuild.git" - }, - "main": "src/mailbuild", - "dependencies": { - "mimefuncs": "~0.3.5", - "mimetypes": "~0.1.1", - "wo-addressparser": "~0.1.3", - "punycode": "~1.2.4" - }, - "devDependencies": { - "chai": "~1.8.1", - "grunt": "~0.4.1", - "grunt-mocha-phantomjs": "~0.4.0", - "grunt-contrib-connect": "~0.6.0", - "grunt-contrib-jshint": "~0.8.0", - "grunt-mocha-test": "~0.10.0", - "mocha": "~1.16.2", - "phantomjs": "~1.9.7-1", - "requirejs": "~2.1.10", - "sinon": "^1.9.0", - "amdefine": "^0.1.0" - } + "name": "emailjs-mime-builder", + "version": "1.0.0", + "homepage": "https://github.com/emailjs/emailjs-mime-builder", + "description": "emailjs-mime-builder is a low level rfc2822 message composer. Define your own mime tree, no magic included.", + "author": "Andris Reinman ", + "keywords": [ + "RFC2822", + "mime" + ], + "license": "MIT", + "scripts": { + "test": "grunt" + }, + "repository": { + "type": "git", + "url": "git://github.com/emailjs/emailjs-mime-builder.git" + }, + "main": "src/emailjs-mime-builder", + "dependencies": { + "emailjs-addressparser": "^1.0.1", + "emailjs-mime-codec": "^1.0.1", + "emailjs-mime-types": "^1.0.0", + "punycode": "^1.4.0" + }, + "devDependencies": { + "amdefine": "^1.0.0", + "chai": "^3.4.1", + "grunt": "^0.4.5", + "grunt-contrib-connect": "^0.11.2", + "grunt-contrib-jshint": "^0.11.3", + "grunt-mocha-phantomjs": "^2.0.1", + "grunt-mocha-test": "^0.12.7", + "mocha": "^2.3.4", + "phantomjs": "^1.9.19", + "requirejs": "^2.1.22", + "sinon": "^1.17.2" + } } diff --git a/src/mailbuild.js b/src/emailjs-mime-builder.js similarity index 95% rename from src/mailbuild.js rename to src/emailjs-mime-builder.js index 03117a7..dcc594b 100644 --- a/src/mailbuild.js +++ b/src/emailjs-mime-builder.js @@ -22,13 +22,13 @@ 'use strict'; if (typeof define === 'function' && define.amd) { - define(['mimefuncs', 'mimetypes', 'punycode', 'addressparser'], factory); + define(['emailjs-mime-codec', 'emailjs-mime-types', 'punycode', 'emailjs-addressparser'], factory); } else if (typeof exports === 'object') { - module.exports = factory(require('mimefuncs'), require('mimetypes'), require('punycode'), require('wo-addressparser')); + module.exports = factory(require('emailjs-mime-codec'), require('emailjs-mime-types'), require('punycode'), require('emailjs-addressparser')); } else { - root.mailbuild = factory(root.mimefuncs, root.mimetypes, root.punycode, root.addressparser); + root['emailjs-mime-builder'] = factory(root['emailjs-mime-codec'], root['emailjs-mime-types'], root.punycode, root['emailjs-addressparser']); } -}(this, function(mimefuncs, mimetypes, punycode, addressparser) { +}(this, function(mimecodec, mimetypes, punycode, addressparser) { 'use strict'; /** @@ -372,14 +372,14 @@ switch (header.key) { case 'Content-Disposition': - structured = mimefuncs.parseHeaderValue(value); + structured = mimecodec.parseHeaderValue(value); if (this.filename) { structured.params.filename = this.filename; } value = this._buildHeaderValue(structured); break; case 'Content-Type': - structured = mimefuncs.parseHeaderValue(value); + structured = mimecodec.parseHeaderValue(value); this._handleContentType(structured); @@ -407,7 +407,7 @@ return; } - lines.push(mimefuncs.foldLines(key + ': ' + value, 76)); + lines.push(mimecodec.foldLines(key + ': ' + value, 76)); }.bind(this)); // Ensure mandatory header fields @@ -440,14 +440,14 @@ switch (transferEncoding) { case 'quoted-printable': - lines.push(mimefuncs.quotedPrintableEncode(this.content)); + lines.push(mimecodec.quotedPrintableEncode(this.content)); break; case 'base64': - lines.push(mimefuncs.base64Encode(this.content, typeof this.content === 'object' && 'binary' || false)); + lines.push(mimecodec.base64Encode(this.content, typeof this.content === 'object' && 'binary' || false)); break; default: if (flowed) { - lines.push(mimefuncs.foldLines(this.content.replace(/\r?\n/g, '\r\n'). + lines.push(mimecodec.foldLines(this.content.replace(/\r?\n/g, '\r\n'). // space stuffing http://tools.ietf.org/html/rfc3676#section-4.2 replace(/^( |From|>)/igm, ' $1'), 76, true)); @@ -544,7 +544,7 @@ Object.keys(structured.params || {}).forEach(function(param) { // filename might include unicode characters so it is a special case if (param === 'filename') { - mimefuncs.continuationEncode(param, structured.params[param], 50).forEach(function(encodedParam) { + mimecodec.continuationEncode(param, structured.params[param], 50).forEach(function(encodedParam) { // continuation encoded strings are always escaped, so no need to use enclosing quotes // in fact using quotes might end up with invalid filenames in some clients paramsArray.push(encodedParam.key + '=' + encodedParam.value); @@ -654,7 +654,7 @@ default: value = (value || '').toString().replace(/\r?\n|\r/g, ' '); // mimeWordsEncode only encodes if needed, otherwise the original string is returned - return mimefuncs.mimeWordsEncode(value, 'Q', 52); + return mimecodec.mimeWordsEncode(value, 'Q', 52); } }; @@ -673,7 +673,7 @@ [].concat(addresses || []).forEach(function(address) { if (address.address) { address.address = address.address.replace(/^.*?(?=\@)/, function(user) { - return mimefuncs.mimeWordsEncode(user, 'Q', 52); + return mimecodec.mimeWordsEncode(user, 'Q', 52); }).replace(/@.+$/, function(domain) { return '@' + punycode.toASCII(domain.substr(1)); }); @@ -706,7 +706,7 @@ if (/^[\x20-\x7e]*$/.test(name)) { return '"' + name.replace(/([\\"])/g, '\\$1') + '"'; } else { - return mimefuncs.mimeWordEncode(name, 'Q', 52); + return mimecodec.mimeWordEncode(name, 'Q', 52); } } return name; diff --git a/test/mailbuild-unit.js b/test/emailjs-mime-builder-unit.js similarity index 89% rename from test/mailbuild-unit.js rename to test/emailjs-mime-builder-unit.js index 185361a..c94fcb7 100644 --- a/test/mailbuild-unit.js +++ b/test/emailjs-mime-builder-unit.js @@ -2,22 +2,22 @@ (function(factory) { if (typeof define === 'function' && define.amd) { - define(['chai', 'sinon', '../src/mailbuild'], factory); + define(['chai', 'sinon', '../src/emailjs-mime-builder'], factory); } else if (typeof exports === 'object') { - module.exports = factory(require('chai'), require('sinon'), require('../src/mailbuild')); + module.exports = factory(require('chai'), require('sinon'), require('../src/emailjs-mime-builder')); } -}(function(chai, sinon, Mailbuild) { +}(function(chai, sinon, Mimebuilder) { var expect = chai.expect; chai.Assertion.includeStack = true; - describe('mailbuild', function() { - it('should create mailbuild object', function() { - expect(new Mailbuild()).to.exist; + describe('Mimebuilder', function() { + it('should create Mimebuilder object', function() { + expect(new Mimebuilder()).to.exist; }); describe('#createChild', function() { it('should create child', function() { - var mb = new Mailbuild('multipart/mixed'); + var mb = new Mimebuilder('multipart/mixed'); var child = mb.createChild('multipart/mixed'); expect(child.parentNode).to.equal(mb); @@ -35,9 +35,9 @@ describe('#appendChild', function() { it('should append child node', function() { - var mb = new Mailbuild('multipart/mixed'); + var mb = new Mimebuilder('multipart/mixed'); - var child = new Mailbuild('text/plain'); + var child = new Mimebuilder('text/plain'); mb.appendChild(child); expect(child.parentNode).to.equal(mb); expect(child.rootNode).to.equal(mb); @@ -48,9 +48,9 @@ describe('#replace', function() { it('should replace node', function() { - var mb = new Mailbuild(), + var mb = new Mimebuilder(), child = mb.createChild('text/plain'), - replacement = new Mailbuild('image/png'); + replacement = new Mimebuilder('image/png'); child.replace(replacement); @@ -61,7 +61,7 @@ describe('#remove', function() { it('should remove node', function() { - var mb = new Mailbuild(), + var mb = new Mimebuilder(), child = mb.createChild('text/plain'); child.remove(); @@ -72,7 +72,7 @@ describe('#setHeader', function() { it('should set header', function() { - var mb = new Mailbuild(); + var mb = new Mimebuilder(); mb.setHeader('key', 'value'); mb.setHeader('key', 'value1'); @@ -111,7 +111,7 @@ describe('#addHeader', function() { it('should add header', function() { - var mb = new Mailbuild(); + var mb = new Mimebuilder(); mb.addHeader('key', 'value1'); mb.addHeader('key', 'value2'); @@ -153,7 +153,7 @@ describe('#getHeader', function() { it('should return first matching header value', function() { - var mb = new Mailbuild(); + var mb = new Mimebuilder(); mb._headers = [{ key: 'Key', value: 'value4' @@ -168,7 +168,7 @@ describe('#setContent', function() { it('should set the contents for a node', function() { - var mb = new Mailbuild(); + var mb = new Mimebuilder(); mb.setContent('abc'); expect(mb.content).to.equal('abc'); }); @@ -176,7 +176,7 @@ describe('#build', function() { it('should build root node', function() { - var mb = new Mailbuild('text/plain'). + var mb = new Mimebuilder('text/plain'). setHeader({ date: '12345', 'message-id': '67890' @@ -195,7 +195,7 @@ }); it('should build child node', function() { - var mb = new Mailbuild('multipart/mixed'), + var mb = new Mimebuilder('multipart/mixed'), childNode = mb.createChild('text/plain'). setContent('Hello world!'), @@ -208,7 +208,7 @@ }); it('should build multipart node', function() { - var mb = new Mailbuild('multipart/mixed', { + var mb = new Mimebuilder('multipart/mixed', { baseBoundary: 'test' }). setHeader({ @@ -234,7 +234,7 @@ }); it('should build root with generated headers', function() { - var msg = new Mailbuild('text/plain').build(); + var msg = new Mimebuilder('text/plain').build(); expect(/^Date:\s/m.test(msg)).to.be.true; expect(/^Message\-Id:\s abc\nabc'). build(); @@ -370,7 +370,7 @@ }); it('should use auto charset in unicode text', function() { - var msg = new Mailbuild('text/plain'). + var msg = new Mimebuilder('text/plain'). setContent('jõgeva'). build(); @@ -380,7 +380,7 @@ }); it('should fetch ascii filename', function() { - var msg = new Mailbuild('text/plain', { + var msg = new Mimebuilder('text/plain', { filename: 'jogeva.txt' }). setContent('jogeva'). @@ -393,7 +393,7 @@ }); it('should set unicode filename', function() { - var msg = new Mailbuild('text/plain', { + var msg = new Mimebuilder('text/plain', { filename: 'jõgeva.txt' }). setContent('jõgeva'). @@ -406,7 +406,7 @@ }); it('should detect content type from filename', function() { - var msg = new Mailbuild(false, { + var msg = new Mimebuilder(false, { filename: 'jogeva.zip' }). setContent('jogeva'). @@ -416,7 +416,7 @@ }); it('should convert address objects', function() { - var msg = new Mailbuild(false). + var msg = new Mimebuilder(false). setHeader({ from: [{ name: 'the safewithme testuser', @@ -440,7 +440,7 @@ }); it('should skip empty header', function() { - var mb = new Mailbuild('text/plain'). + var mb = new Mimebuilder('text/plain'). setHeader({ a: 'b', cc: '', @@ -464,7 +464,7 @@ }); it('should set default transfer encoding for application content', function() { - var mb = new Mailbuild('application/x-my-stuff'). + var mb = new Mimebuilder('application/x-my-stuff'). setHeader({ date: '12345', 'message-id': '67890' @@ -483,7 +483,7 @@ }); it('should not set transfer encoding for multipart content', function() { - var mb = new Mailbuild('multipart/global'). + var mb = new Mimebuilder('multipart/global'). setHeader({ date: '12345', 'message-id': '67890' @@ -506,7 +506,7 @@ }); it('should use from domain for message-id', function() { - var mb = new Mailbuild('text/plain'). + var mb = new Mimebuilder('text/plain'). setHeader({ from: 'test@example.com' }); @@ -515,7 +515,7 @@ }); it('should fallback to localhost for message-id', function() { - var mb = new Mailbuild('text/plain'); + var mb = new Mimebuilder('text/plain'); expect(/^Message-Id: <\d+(\-[a-f0-9]{8}){3}@localhost>$/m.test(mb.build())).to.be.true; }); @@ -523,7 +523,7 @@ describe('#getEnvelope', function() { it('should get envelope', function() { - expect(new Mailbuild().addHeader({ + expect(new Mimebuilder().addHeader({ from: 'From ', sender: 'Sender ', to: 'receiver1@example.com' @@ -536,7 +536,7 @@ to: ['receiver1@example.com', 'receiver2@example.com', 'receiver3@example.com', 'receiver4@example.com', 'receiver5@example.com'] }); - expect(new Mailbuild().addHeader({ + expect(new Mimebuilder().addHeader({ sender: 'Sender ', to: 'receiver1@example.com' }).addHeader({ @@ -552,7 +552,7 @@ describe('#_parseAddresses', function() { it('should normalize header key', function() { - var mb = new Mailbuild(); + var mb = new Mimebuilder(); expect(mb._parseAddresses('test address@example.com')).to.deep.equal([{ address: 'address@example.com', @@ -583,7 +583,7 @@ describe('#_normalizeHeaderKey', function() { it('should normalize header key', function() { - var mb = new Mailbuild(); + var mb = new Mimebuilder(); expect(mb._normalizeHeaderKey('key')).to.equal('Key'); expect(mb._normalizeHeaderKey('mime-vERSION')).to.equal('MIME-Version'); @@ -593,7 +593,7 @@ describe('#_buildHeaderValue', function() { it('should build header value', function() { - var mb = new Mailbuild(); + var mb = new Mimebuilder(); expect(mb._buildHeaderValue({ value: 'test' @@ -628,19 +628,19 @@ describe('#_escapeHeaderArgument', function() { it('should return original value if possible', function() { - var mb = new Mailbuild(); + var mb = new Mimebuilder(); expect(mb._escapeHeaderArgument('abc')).to.equal('abc'); }); it('should use quotes', function() { - var mb = new Mailbuild(); + var mb = new Mimebuilder(); expect(mb._escapeHeaderArgument('abc "tere"')).to.equal('"abc \\"tere\\""'); }); }); describe('#_handleContentType', function() { it('should do nothing on non multipart', function() { - var mb = new Mailbuild(); + var mb = new Mimebuilder(); expect(mb.boundary).to.not.exist; mb._handleContentType({ value: 'text/plain' @@ -650,7 +650,7 @@ }); it('should use provided boundary', function() { - var mb = new Mailbuild(); + var mb = new Mimebuilder(); expect(mb.boundary).to.not.exist; mb._handleContentType({ value: 'multipart/mixed', @@ -663,7 +663,7 @@ }); it('should generate boundary', function() { - var mb = new Mailbuild(); + var mb = new Mimebuilder(); sinon.stub(mb, '_generateBoundary').returns('def'); expect(mb.boundary).to.not.exist; @@ -680,7 +680,7 @@ describe('#_generateBoundary ', function() { it('should genereate boundary string', function() { - var mb = new Mailbuild(); + var mb = new Mimebuilder(); mb._nodeId = 'abc'; mb.rootNode.baseBoundary = 'def'; expect(mb._generateBoundary()).to.equal('----sinikael-?=_abc-def'); @@ -689,28 +689,28 @@ describe('#_encodeHeaderValue', function() { it('should do noting if possible', function() { - var mb = new Mailbuild(); + var mb = new Mimebuilder(); expect(mb._encodeHeaderValue('x-my', 'test value')).to.equal('test value'); }); it('should encode non ascii characters', function() { - var mb = new Mailbuild(); + var mb = new Mimebuilder(); expect(mb._encodeHeaderValue('x-my', 'test jõgeva value')).to.equal('test =?UTF-8?Q?j=C3=B5geva?= value'); }); it('should format references', function() { - var mb = new Mailbuild(); + var mb = new Mimebuilder(); expect(mb._encodeHeaderValue('references', 'abc def')).to.equal(' '); expect(mb._encodeHeaderValue('references', ['abc', 'def'])).to.equal(' '); }); it('should format message-id', function() { - var mb = new Mailbuild(); + var mb = new Mimebuilder(); expect(mb._encodeHeaderValue('message-id', 'abc')).to.equal(''); }); it('should format addresses', function() { - var mb = new Mailbuild(); + var mb = new Mimebuilder(); expect(mb._encodeHeaderValue('from', { name: 'the safewithme testuser', address: 'safewithme.testuser@jõgeva.com' @@ -720,7 +720,7 @@ describe('#_convertAddresses', function() { it('should convert address object to a string', function() { - var mb = new Mailbuild(); + var mb = new Mimebuilder(); expect(mb._convertAddresses([{ name: 'Jõgeva Ants', address: 'ants@jõgeva.ee' @@ -737,7 +737,7 @@ }); it('should keep ascii name as is', function() { - var mb = new Mailbuild(); + var mb = new Mimebuilder(); expect(mb._convertAddresses([{ name: 'O\'Vigala Sass', address: 'a@b.c' @@ -745,7 +745,7 @@ }); it('should include name in quotes for special symbols', function() { - var mb = new Mailbuild(); + var mb = new Mimebuilder(); expect(mb._convertAddresses([{ name: 'Sass, Vigala', address: 'a@b.c' @@ -753,7 +753,7 @@ }); it('should escape quotes', function() { - var mb = new Mailbuild(); + var mb = new Mimebuilder(); expect(mb._convertAddresses([{ name: '"Vigala Sass"', address: 'a@b.c' @@ -761,7 +761,7 @@ }); it('should mime encode unicode names', function() { - var mb = new Mailbuild(); + var mb = new Mimebuilder(); expect(mb._convertAddresses([{ name: '"Jõgeva Sass"', address: 'a@b.c' @@ -771,19 +771,19 @@ describe('#_isPlainText', function() { it('should return true', function() { - var mb = new Mailbuild(); + var mb = new Mimebuilder(); expect(mb._isPlainText('az09\t\r\n~!?')).to.be.true; }); it('should return false on low bits', function() { - var mb = new Mailbuild(); + var mb = new Mimebuilder(); expect(mb._isPlainText('az09\n\x08!?')).to.be.false; }); it('should return false on high bits', function() { - var mb = new Mailbuild(); + var mb = new Mimebuilder(); expect(mb._isPlainText('az09\nõ!?')).to.be.false; }); }); }); -})); \ No newline at end of file +})); diff --git a/test/index.js b/test/index.js index 255597f..a0a08ad 100644 --- a/test/index.js +++ b/test/index.js @@ -5,11 +5,11 @@ require.config({ paths: { 'test': './test', 'chai': './node_modules/chai/chai', - 'addressparser': './node_modules/wo-addressparser/src/addressparser', - 'mimetypes': './node_modules/mimetypes/src/mimetypes', - 'mimefuncs': './node_modules/mimefuncs/src/mimefuncs', + 'emailjs-addressparser': './node_modules/emailjs-addressparser/src/emailjs-addressparser', + 'emailjs-mime-types': './node_modules/emailjs-mime-types/src/emailjs-mime-types', + 'emailjs-mime-codec': './node_modules/emailjs-mime-codec/src/emailjs-mime-codec', 'punycode': './node_modules/punycode/punycode.min', - 'stringencoding': './node_modules/mimefuncs/node_modules/wo-stringencoding/dist/stringencoding', + 'emailjs-stringencoding': './node_modules/emailjs-stringencoding/src/emailjs-stringencoding', 'sinon': './node_modules/sinon/pkg/sinon', }, shim: { @@ -21,6 +21,6 @@ require.config({ mocha.setup('bdd'); -require(['test/mailbuild-unit'], function() { +require(['test/emailjs-mime-builder-unit'], function() { (window.mochaPhantomJS || window.mocha).run(); -}); \ No newline at end of file +});