Thanks to visit codestin.com
Credit goes to github.com

Skip to content

Commit 9ba36b6

Browse files
committed
fix: allow a 404 route to skip validation
1 parent 4439e4a commit 9ba36b6

File tree

5 files changed

+53
-8
lines changed

5 files changed

+53
-8
lines changed

dadi/lib/controller/router.js

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -172,6 +172,11 @@ Router.prototype.validate = function (route, req, res) {
172172
var regex = pathToRegexp(route.path)
173173
var match = regex.exec(pathname)
174174

175+
// allow a 404 to sail through this
176+
if (route.path === '/404') {
177+
return resolve()
178+
}
179+
175180
// move to the next route if no match
176181
if (!match) {
177182
return reject('')

package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,7 @@
1313
"@dadi/api-wrapper": "^1.1.0",
1414
"@dadi/cache": "latest",
1515
"@dadi/logger": "latest",
16-
"@dadi/passport": "^1.0.x",
16+
"@dadi/passport": "latest",
1717
"@dadi/status": "git+https://[email protected]/dadi/status.git",
1818
"async": "^1.4.2",
1919
"aws-kinesis-writable": "^1.3.1",

test/app/pages/404.dust

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
2+
Page Not Found Template
3+

test/help.js

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -132,6 +132,21 @@ TestHelper.prototype.setUpPages = function () {
132132
return pages
133133
}
134134

135+
TestHelper.prototype.setUp404Page = function () {
136+
var page = Page('404', this.getPageSchema())
137+
page.name = '404'
138+
page.template = '404.dust'
139+
page.routes[0].path = '/404'
140+
page.datasources = []
141+
page.events = []
142+
page.settings.cache = false
143+
144+
var pages = []
145+
pages.push(page)
146+
147+
return pages
148+
}
149+
135150
TestHelper.prototype.newPage = function (name, path, template, datasources, events) {
136151
var page = Page(name, this.getPageSchema())
137152
page.datasources = datasources

test/unit/controller.js

Lines changed: 29 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -28,6 +28,26 @@ describe('Controller', function (done) {
2828
TestHelper.stopServer(done)
2929
})
3030

31+
it("should return a 404 template if one is configured", function (done) {
32+
TestHelper.disableApiConfig().then(() => {
33+
var pages = TestHelper.setUp404Page()
34+
pages[0].settings.cache = false
35+
36+
TestHelper.startServer(pages).then(() => {
37+
var client = request(connectionString)
38+
39+
client
40+
.get('/not-a-page')
41+
.expect(404)
42+
.end(function (err, res) {
43+
if (err) return done(err)
44+
res.text.should.eql('Page Not Found Template')
45+
done()
46+
})
47+
})
48+
})
49+
})
50+
3151
it("should return a 404 if a page's requiredDatasources are not populated", function (done) {
3252
TestHelper.disableApiConfig().then(() => {
3353
var pages = TestHelper.setUpPages()
@@ -127,14 +147,16 @@ describe('Controller', function (done) {
127147
describe('Preload Events', function (done) {
128148
it('should load preloadEvents in the controller instance', function (done) {
129149
TestHelper.disableApiConfig().then(() => {
130-
var pages = TestHelper.setUpPages()
131-
pages[0].events = ['test_event']
132-
pages[0].preloadEvents = ['test_preload_event']
150+
TestHelper.updateConfig({'globalEvents': []}).then(() => {
151+
var pages = TestHelper.setUpPages()
152+
pages[0].events = ['test_event']
153+
pages[0].preloadEvents = ['test_preload_event']
133154

134-
controller = Controller(pages[0], TestHelper.getPathOptions())
135-
controller.preloadEvents.should.exist
136-
controller.preloadEvents[0].name.should.eql(pages[0].preloadEvents[0])
137-
done()
155+
controller = Controller(pages[0], TestHelper.getPathOptions())
156+
should.exist(controller.preloadEvents)
157+
controller.preloadEvents[0].name.should.eql(pages[0].preloadEvents[0])
158+
done()
159+
})
138160
})
139161
})
140162

0 commit comments

Comments
 (0)