Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
8 changes: 8 additions & 0 deletions test/fixtures/site 1/redirects.json
Original file line number Diff line number Diff line change
Expand Up @@ -17,4 +17,12 @@
"from": "/redirect5",
"to": "/",
"permanent": true
}, {
"from": "/overridden_route",
"to": "/overridden_redirect"
}, {
"from": "/overridden_route_2",
"to": "/overridden_redirect_2",
"start": "2000-1-1 00:00:00",
"end": "3000-1-1 00:00:00"
}]
1 change: 1 addition & 0 deletions test/fixtures/site 1/views/overridden_route.hbs
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
This route should be overridden
1 change: 1 addition & 0 deletions test/fixtures/site 1/views/overridden_route_2.hbs
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
This route should be overridden
111 changes: 67 additions & 44 deletions test/solidus.js
Original file line number Diff line number Diff line change
Expand Up @@ -24,8 +24,48 @@ describe( 'Solidus', function(){
describe( 'production', function(){

var solidus_server;
var original_redirects = [];

before( function( done ){
process.chdir( site1_path );
// Generate time-based redirects
// These are used to ensure that temporary redirects are properly checked
original_redirects = fs.readFileSync( 'redirects.json', DEFAULT_ENCODING );
var original_redirects_arr = JSON.parse( original_redirects );
var redirect_date_format = 'YYYY-MM-DD HH:mm:ss';
var temporal_redirects = [{
start: moment().add( 's', 5 ).format( redirect_date_format ),
from: '/future_redirect',
to: '/'
}, {
start: moment().subtract( 's', 5 ).format( redirect_date_format ),
end: moment().add( 's', 5 ).format( redirect_date_format ),
from: '/current_redirect',
to: '/'
}, {
start: moment().subtract( 's', 10 ).format( redirect_date_format ),
end: moment().subtract( 's', 5 ).format( redirect_date_format ),
from: '/past_redirect',
to: '/'
}];
var overlapping_redirects = [{
start: moment().add( 's', 5 ).format( redirect_date_format ),
from: '/overlapping_redirect',
to: '/overlapping_redirect_future'
}, {
start: moment().subtract( 's', 5 ).format( redirect_date_format ),
end: moment().add( 's', 5 ).format( redirect_date_format ),
from: '/overlapping_redirect',
to: '/overlapping_redirect_current'
}, {
start: moment().subtract( 's', 10 ).format( redirect_date_format ),
end: moment().subtract( 's', 5 ).format( redirect_date_format ),
from: '/overlapping_redirect',
to: '/overlapping_redirect_past'
}];
var combined_redirects = JSON.stringify( original_redirects_arr.concat( temporal_redirects, overlapping_redirects ) );
fs.writeFileSync( 'redirects.json', combined_redirects, DEFAULT_ENCODING );

// mock http endpoints for resources
nock('https://solid.us').get('/basic/1').reply( 200, { test: true } );
nock('https://solid.us').get('/basic/2').reply( 200, { test: true } );
Expand Down Expand Up @@ -63,47 +103,7 @@ describe( 'Solidus', function(){
});
});

var original_redirects = [];

beforeEach( function( done ){
process.chdir( site1_path );
// Generate time-based redirects
// These are used to ensure that temporary redirects are properly checked
original_redirects = fs.readFileSync( 'redirects.json', DEFAULT_ENCODING );
var original_redirects_arr = JSON.parse( original_redirects );
var redirect_date_format = 'YYYY-MM-DD HH:mm:ss';
var temporal_redirects = [{
start: moment().add( 's', 5 ).format( redirect_date_format ),
from: '/future-redirect',
to: '/'
}, {
start: moment().subtract( 's', 5 ).format( redirect_date_format ),
end: moment().add( 's', 5 ).format( redirect_date_format ),
from: '/current-redirect',
to: '/'
}, {
start: moment().subtract( 's', 10 ).format( redirect_date_format ),
end: moment().subtract( 's', 5 ).format( redirect_date_format ),
from: '/past-redirect',
to: '/'
}];
var overlapping_redirects = [{
start: moment().add( 's', 5 ).format( redirect_date_format ),
from: '/overlapping-redirect',
to: '/overlapping-redirect-future'
}, {
start: moment().subtract( 's', 5 ).format( redirect_date_format ),
end: moment().add( 's', 5 ).format( redirect_date_format ),
from: '/overlapping-redirect',
to: '/overlapping-redirect-current'
}, {
start: moment().subtract( 's', 10 ).format( redirect_date_format ),
end: moment().subtract( 's', 5 ).format( redirect_date_format ),
from: '/overlapping-redirect',
to: '/overlapping-redirect-past'
}];
var combined_redirects = JSON.stringify( original_redirects_arr.concat( temporal_redirects, overlapping_redirects ) );
fs.writeFileSync( 'redirects.json', combined_redirects, DEFAULT_ENCODING );
solidus_server = solidus.start({
log_level: 0,
port: 9009
Expand All @@ -113,6 +113,9 @@ describe( 'Solidus', function(){

afterEach( function(){
solidus_server.stop();
});

after( function(){
fs.writeFileSync( 'redirects.json', original_redirects, DEFAULT_ENCODING );
process.chdir( original_path );
});
Expand Down Expand Up @@ -331,23 +334,43 @@ describe( 'Solidus', function(){
s_request.get('/redirect5').expect( 301, callback );
},
function( callback ){
s_request.get('/past-redirect').expect( 404, callback );
s_request.get('/past_redirect').expect( 404, callback );
},
function( callback ){
s_request.get('/current-redirect').expect( 302, callback );
s_request.get('/current_redirect').expect( 302, callback );
},
function( callback ){
s_request.get('/future-redirect').expect( 404, callback );
s_request.get('/future_redirect').expect( 404, callback );
},
function( callback ){
s_request.get('/overlapping-redirect').expect( 'location', '/overlapping-redirect-current', callback );
s_request.get('/overlapping_redirect').expect( 'location', '/overlapping_redirect_current', callback );
}
], function( err, results ){
if( err ) throw err;
done();
});
});

it( 'Overrides page routes with redirect routes', function( done ){
s_request = request( solidus_server.router );
async.parallel([
function( cb ){
s_request.get('/overridden_route')
.expect( 302 )
.expect( 'location', '/overridden_redirect', cb );
},
function( cb ){
s_request.get('/overridden_route_2')
.expect( 302 )
.expect( 'location', '/overridden_redirect_2', cb );
}
],
function( err, results ){
if( err ) throw err;
done();
});
});

it( 'Sets the default layout', function(){
assert( solidus_server.handlebars.defaultLayout === 'layout' );
});
Expand Down