diff --git a/.gitignore b/.gitignore index ad56970..bddb166 100644 --- a/.gitignore +++ b/.gitignore @@ -1,10 +1,10 @@ node_modules/ npm-debug.log .DS_Store -*-browserified.js -test/new-unit/lib/ +test/lib/ .sass-cache dist/ +test/integration/src/ src/lib/*.js src/js/crypto/aes-cbc.js src/js/crypto/crypto-batch.js diff --git a/Gruntfile.js b/Gruntfile.js index 55ec737..f4eacd3 100644 --- a/Gruntfile.js +++ b/Gruntfile.js @@ -68,7 +68,7 @@ module.exports = function(grunt) { }, clean: { - dist: ['dist', 'src/lib/*.js', 'test/new-unit/lib'] + dist: ['dist', 'src/lib/*.js', 'test/lib', 'test/integration/src'] }, sass: { dist: { @@ -147,8 +147,8 @@ module.exports = function(grunt) { expand: true, flatten: true, cwd: 'node_modules/', - src: ['mocha/mocha.css', 'mocha/mocha.js', 'chai/chai.js', 'sinon/pkg/sinon.js'], - dest: 'test/new-unit/lib/' + src: ['requirejs/require.js', 'mocha/mocha.css', 'mocha/mocha.js', 'chai/chai.js', 'sinon/pkg/sinon.js'], + dest: 'test/lib/' }, cryptoLib: { expand: true, @@ -191,6 +191,12 @@ module.exports = function(grunt) { cwd: 'src/', src: ['*.html', '*.js', '*.json'], dest: 'dist/' + }, + integration: { + expand: true, + cwd: 'src/', + src: ['**'], + dest: 'test/integration/src/' } } }); diff --git a/test/integration/background.js b/test/integration/background.js new file mode 100644 index 0000000..8bea8df --- /dev/null +++ b/test/integration/background.js @@ -0,0 +1,10 @@ +'use strict'; + +chrome.app.runtime.onLaunched.addListener(function() { + chrome.app.window.create('integration/index.html', { + 'bounds': { + 'width': 1024, + 'height': 768 + } + }); +}); \ No newline at end of file diff --git a/test/integration/email-dao-test.js b/test/integration/email-dao-test.js new file mode 100644 index 0000000..93c155c --- /dev/null +++ b/test/integration/email-dao-test.js @@ -0,0 +1,67 @@ +define(function(require) { + 'use strict'; + + var appController = require('js/app-controller'), + expect = chai.expect; + + var test = { + user: "whiteout.test@gmail.com", + passphrase: 'asdf' + }; + + describe('Email DAO integration tests', function() { + this.timeout(5000); + + var offset = 0, + num = 100, + emailDao; + + beforeEach(function() {}); + + afterEach(function() {}); + + describe('login', function() { + it('should work', function(done) { + appController.fetchOAuthToken(test.passphrase, function(err, userId) { + expect(err).to.not.exist; + expect(userId).to.exist; + emailDao = appController._emailDao; + + emailDao.imapLogin(function(err) { + expect(err).to.not.exist; + done(); + }); + }); + }); + }); + + describe('IMAP sync messages', function() { + it('should work', function(done) { + emailDao.imapSync({ + folder: 'INBOX', + offset: -num, + num: offset + }, function(err) { + expect(err).to.not.exist; + done(); + }); + }); + }); + + describe('IMAP sync messages', function() { + it('should work', function(done) { + emailDao.listMessages({ + folder: 'INBOX', + offset: offset, + num: num + }, function(err, emails) { + expect(err).to.not.exist; + expect(emails).to.exist; + expect(emails.length).to.be.at.least(1); + done(); + }); + }); + }); + + }); +}); \ No newline at end of file diff --git a/test/integration/index.html b/test/integration/index.html index b40a1a7..8c19009 100644 --- a/test/integration/index.html +++ b/test/integration/index.html @@ -1,17 +1,19 @@ - + - JavaScript Integration Tests - + JavaScript Unit Tests + + -
-
+
- - - + + + + + \ No newline at end of file diff --git a/test/integration/main.js b/test/integration/main.js index 99170c8..7b97382 100644 --- a/test/integration/main.js +++ b/test/integration/main.js @@ -1,27 +1,30 @@ 'use strict'; -require(['../../src/require-config'], function() { - +require(['src/require-config'], function() { require.config({ - baseUrl: '../../src/lib' + baseUrl: 'src/lib' }); // Start the main app logic. - require(['js/app-config', 'cordova'], function(app) { - // clear session storage of failed tests, so async order is correct after fail & refresh - window.sessionStorage.clear(); - window.Worker = undefined; + require(['js/app-config'], function(app) { + window.Worker = undefined; // disable web workers since mocha doesn't support them app.config.workerPath = '../../src/js'; - app.config.cloudUrl = 'http://localhost:8888'; + //app.config.cloudUrl = 'http://localhost:8888'; startTests(); }); }); function startTests() { - require(['test/integration/cloudstorage-dao-test'], function() { - //Tests loaded, run tests - QUnit.start(); - }); + mocha.setup('bdd'); + + require( + [ + '../../email-dao-test' + ], function() { + //Tests loaded, run tests + mocha.run(); + } + ); } \ No newline at end of file diff --git a/test/manifest.json b/test/manifest.json new file mode 100644 index 0000000..3055eda --- /dev/null +++ b/test/manifest.json @@ -0,0 +1,26 @@ +{ + "name": "Whiteout Mail Integration Tests", + "description": "", + "version": "0.0.1", + "manifest_version": 2, + "offline_enabled": true, + "permissions": [ + "https://storage.whiteout.io/", + "identity", { + "socket": ["tcp-connect"] + } + ], + "key": "MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDBXqC3/oX5fP/gLORcVN62Pf3Ph+pO4qEB+FynSMWMoqWUt7FDoaKuHrsP/KInuP/0PUZcqpij9kB9MytLTqYzGIoRsUd37i1Dt6R69fnNsIqAISgoWIRg4VyRdon9cTIniv3DVV45PPyNCvN+oQoBMv9NbojWnlL9W05bKYkABQIDAQAB", + "oauth2": { + "client_id": "440907777130.apps.googleusercontent.com", + "scopes": [ + "https://www.googleapis.com/auth/userinfo.email", + "https://mail.google.com/" + ] + }, + "app": { + "background": { + "scripts": ["integration/background.js"] + } + } +} \ No newline at end of file diff --git a/test/new-unit/index.html b/test/new-unit/index.html index 7649fac..8a0094a 100644 --- a/test/new-unit/index.html +++ b/test/new-unit/index.html @@ -3,15 +3,15 @@ JavaScript Unit Tests - +
- - - + + +