Skip to content

Commit

Permalink
allow non-object responses. Fixes #9
Browse files Browse the repository at this point in the history
  • Loading branch information
mac- committed Sep 21, 2014
1 parent ccba8f0 commit 4662432
Show file tree
Hide file tree
Showing 3 changed files with 31 additions and 16 deletions.
3 changes: 0 additions & 3 deletions lib/RouteSchemaManager.js
Expand Up @@ -264,9 +264,6 @@ var RouteSchemaManager = function(options) {
return { valid: true };
}

if (typeof(request.response.source) !== 'object') {
return { valid: false, errors: ['response is not an object'] };
}
var report = {
valid: validator.validate(request.response.source, schemas[validationTypes.RESPONSE])
};
Expand Down
2 changes: 1 addition & 1 deletion package.json
Expand Up @@ -4,7 +4,7 @@
"contributors": [
"Mac Angell <mac.ang311@gmail.com>"
],
"version": "0.6.0",
"version": "0.6.1",
"dependencies": {
"underscore": "1.x.x",
"hoek": "2.x.x",
Expand Down
42 changes: 30 additions & 12 deletions test/RouteSchemaManager.tests.js
Expand Up @@ -102,7 +102,25 @@ var assert = require('assert'),
}
}
},
mockRoutes = [mockRoute1, mockRoute2];
mockRoute4 = {
method: 'POST',
path: '/good/fnord/{string}/{number}',
server: {
info: {
uri: 'http://fnord.com'
}
},
settings: {
plugins: {
ratify: {
response: {
schema: stringSchema
}
}
}
}
},
mockRoutes = [mockRoute1, mockRoute2, mockRoute4];

describe('RouteSchemaManager Unit Tests', function() {

Expand Down Expand Up @@ -590,48 +608,48 @@ describe('RouteSchemaManager Unit Tests', function() {
assert(report.valid, 'response obj should be valid');
});

it('should validate response for route with no response schema successfully', function() {
it('should validate a string response for route successfully', function() {

var routeSchemaManager = new RouteSchemaManager(rsmConfig),
mockRequest = {
_route: mockRoute2,
_route: mockRoute4,
response: {
source: {string:'fnord'}
source: 'fnord'
}
};
routeSchemaManager.initializeRoutes(mockRoute1.server.info.uri, mockRoutes);
var report = routeSchemaManager.validateResponse(mockRequest);
assert(report.valid, 'response obj should be valid');
assert(report.valid, 'response string should be valid');
});

it('should fail validation of response', function() {
it('should validate response for route with no response schema successfully', function() {

var routeSchemaManager = new RouteSchemaManager(rsmConfig),
mockRequest = {
_route: mockRoute1,
_route: mockRoute2,
response: {
source: {string:true}
source: {string:'fnord'}
}
};
routeSchemaManager.initializeRoutes(mockRoute1.server.info.uri, mockRoutes);
var report = routeSchemaManager.validateResponse(mockRequest);
assert(!report.valid, 'response obj should not be valid');
assert(report.errors, 'errors obj should be valid');
assert(report.valid, 'response obj should be valid');
});

it('should fail validation of response when response is non-object', function() {
it('should fail validation of response', function() {

var routeSchemaManager = new RouteSchemaManager(rsmConfig),
mockRequest = {
_route: mockRoute1,
response: {
source: 'fnord'
source: {string:true}
}
};
routeSchemaManager.initializeRoutes(mockRoute1.server.info.uri, mockRoutes);
var report = routeSchemaManager.validateResponse(mockRequest);
assert(!report.valid, 'response obj should not be valid');
assert(report.errors, 'errors obj should be valid');
});

});
});

0 comments on commit 4662432

Please sign in to comment.