Skip to content

Commit

Permalink
Refactored FastBoot tests (mainmatter#1391)
Browse files Browse the repository at this point in the history
Use ember-fastboot-addon-tests, removes some boilerplate, works with latest FastBoot.

Fixes mainmatter#1097 and mainmatter#1371
  • Loading branch information
simonihmig authored and Florian Pichler committed Aug 4, 2017
1 parent 00f0e94 commit 98a4b3c
Show file tree
Hide file tree
Showing 4 changed files with 473 additions and 298 deletions.
47 changes: 7 additions & 40 deletions fastboot-tests/graceful-regression-test.js
Original file line number Diff line number Diff line change
@@ -1,50 +1,17 @@
/* global describe, before, after, it */
/* jshint node:true */
var chai = require('chai');
var expect = chai.expect;
var RSVP = require('rsvp');
var AddonTestApp = require('ember-cli-addon-tests').AddonTestApp;
var request = require('request');
var request = RSVP.denodeify(request);
'use strict';

describe('Graceful regression tests', function() {
this.timeout(600000);

var app;
var url = 'http://localhost:49741';

before(function() {
app = new AddonTestApp();
return app.create('not-fastboot-ready-app', { fixturesPath: 'fastboot-tests/fixtures/' })
.then(addDependencies)
.then(function() {
return app.runEmberCommand('build');
})
.then(function() {
return app.startServer({
command: 'fastboot',
additionalArguments: ['--host 0.0.0.0']
});
});
});
const expect = require('chai').expect;
const setupTest = require('ember-fastboot-addon-tests').setupTest;

after(function() {
return app.stopServer();
});
describe('Graceful regression tests', function() {
setupTest('not-fastboot-ready-app');

it('does not error when using the adaptive store', function() {
return request({ url: url + '/protected' })
.then(function(response) {
return this.visit('/protected')
.then(function({ response }) {

expect(response.headers['set-cookie']).to.deep.equal(['ember_simple_auth-session=%7B%22authenticated%22%3A%7B%7D%7D; path=/'])
expect(response.req.path).to.equal('/login');
});
});
});

function addDependencies(app) {
app.editPackageJSON(function(pkg) {
pkg['devDependencies']['ember-cli-fastboot'] = "1.0.0-beta.19";
});
return app.run('npm', 'install');
}
63 changes: 15 additions & 48 deletions fastboot-tests/integration-test.js
Original file line number Diff line number Diff line change
@@ -1,82 +1,49 @@
/* global describe, before, after, it */
/* jshint node:true */
var chai = require('chai');
var expect = chai.expect;
var RSVP = require('rsvp');
var AddonTestApp = require('ember-cli-addon-tests').AddonTestApp;
var request = require('request');
var request = RSVP.denodeify(request);
'use strict';

describe('Integration tests', function() {
this.timeout(600000);

var app;
var url = 'http://localhost:49741';

before(function() {
app = new AddonTestApp();
return app.create('fastboot-ready-app', { fixturesPath: 'fastboot-tests/fixtures/' })
.then(addDependencies)
.then(function() {
return app.runEmberCommand('build');
})
.then(function() {
return app.startServer({
command: 'fastboot',
additionalArguments: ['--host 0.0.0.0']
});
});
});
const expect = require('chai').expect;
const setupTest = require('ember-fastboot-addon-tests').setupTest;

after(function() {
return app.stopServer();
});
describe('Integration tests', function() {
setupTest('fastboot-ready-app');

it('redirects to login page on a protected route', function() {
return request({ url: url + '/protected' })
.then(function(response) {
return this.visit('/protected')
.then(function({ response }) {

expect(response.headers['set-cookie']).to.deep.equal(['ember_simple_auth-session=%7B%22authenticated%22%3A%7B%7D%7D; path=/'])
expect(response.req.path).to.equal('/login');
});
});

it('authenticates and create the session when accessing authenticate route', function() {
return request({ url: url + '/authenticate', jar: true })
.then(function(response) {
return this.visit({ url: '/authenticate', jar: true })
.then(function({ response }) {

expect(response.headers['set-cookie']).to.deep.equal(['ember_simple_auth-session=%7B%22authenticated%22%3A%7B%22authenticator%22%3A%22authenticator%3Aauth%22%2C%22account_id%22%3A%22123%22%7D%7D; path=/'])
expect(response.req.path).to.equal('/');
});
});

it('user can access protected page after authentication', function() {
return request({ url: url + '/protected', jar: true })
.then(function(response) {
return this.visit({ url: '/protected', jar: true })
.then(function({ response }) {
expect(response.req.path).to.equal('/protected');
expect(response.body).to.contain('This is a protected page only visible to authenticated users!');
});
});

it('invalidate removes session cookies', function() {
return request({ url: url + '/invalidate', jar: true })
.then(function(response) {
return this.visit({ url: '/invalidate', jar: true })
.then(function({ response }) {
expect(response.req.path).to.equal('/');
expect(response.headers['set-cookie']).to.deep.equal(['ember_simple_auth-session=%7B%22authenticated%22%3A%7B%7D%7D; path=/'])
});
});

it('implicit grant callback route works with FastBoot', function() {
return request({ url: url + '/callback', jar: true })
.then(function(response) {
return this.visit({ url: '/callback', jar: true })
.then(function({ response }) {
expect(response.statusCode).to.equal(200);
});
});
});

function addDependencies(app) {
app.editPackageJSON(function(pkg) {
pkg['devDependencies']['ember-cli-fastboot'] = "1.0.0-beta.19";
});
return app.run('npm', 'install');
}
10 changes: 4 additions & 6 deletions package.json
Original file line number Diff line number Diff line change
Expand Up @@ -20,7 +20,7 @@
"start": "ember server",
"test": "ember test",
"test:all": "ember try:each",
"test:fastboot": "mocha fastboot-tests",
"test:fastboot": "ember fastboot:test",
"test:node": "mocha node-tests node-tests/blueprints"
},
"dependencies": {
Expand All @@ -42,15 +42,14 @@
"broccoli-yuidoc": "^3.0.0",
"chai": "^4.0.2",
"cors": "^2.8.1",
"ember-cli": "~2.12.1",
"ember-cli-addon-tests": "^0.7.0",
"ember-bootstrap": "^1.0.0-alpha.12",
"ember-cli": "~2.12.1",
"ember-cli-blueprint-test-helpers": "^0.17.1",
"ember-cli-chai": "^0.4.0",
"ember-cli-content-security-policy": "~0.6.0",
"ember-cli-dependency-checker": "^2.0.0",
"ember-cli-eslint": "^4.0.0",
"ember-cli-fastboot": "1.0.0-rc3",
"ember-cli-fastboot": "1.0.0-rc.5",
"ember-cli-htmlbars": "^2.0.0",
"ember-cli-htmlbars-inline-precompile": "^0.4.3",
"ember-cli-inject-live-reload": "^1.4.1",
Expand All @@ -62,6 +61,7 @@
"ember-data": "^2.13.1",
"ember-disable-prototype-extensions": "^1.1.0",
"ember-export-application-global": "^2.0.0",
"ember-fastboot-addon-tests": "^0.4.0",
"ember-load-initializers": "^1.0.0",
"ember-resolver": "^4.1.0",
"ember-sinon": "~0.7.0",
Expand All @@ -79,9 +79,7 @@
"mocha": "^3.4.1",
"mocha-only-detector": "0.1.0",
"morgan": "^1.8.1",
"request": "^2.81.0",
"rimraf": "^2.6.1",
"rsvp": "^3.5.0",
"sinon-chai": "~2.11.0",
"torii": "~0.9.5"
},
Expand Down
Loading

0 comments on commit 98a4b3c

Please sign in to comment.