YUKI Hiroshi
null+****@clear*****
Wed Jan 16 15:42:05 JST 2013
YUKI Hiroshi 2013-01-16 15:42:05 +0900 (Wed, 16 Jan 2013) New Revision: aad3214e7e22afb740e91c9774e9d98f6ba7d78a https://github.com/groonga/express-kotoumi/commit/aad3214e7e22afb740e91c9774e9d98f6ba7d78a Log: Add tests for validation of parameters Modified files: lib/builders/rest-request.js test/builders-rest-request.test.js Modified: lib/builders/rest-request.js (+7 -7) =================================================================== --- lib/builders/rest-request.js 2013-01-16 15:20:18 +0900 (221abeb) +++ lib/builders/rest-request.js 2013-01-16 15:42:05 +0900 (16742df) @@ -31,19 +31,19 @@ function searchRequestBuilder(request) { } }; - if (params.attributes) + if (typeof params.attributes == 'string') queries.result.attributes = params.attributes.split(','); - if (params.limit) + if (typeof params.limit == 'string') queries.result.limit = getIntegerValue(params, 'limit'); - if (params.match_escalation_threshold) + if (typeof params.match_escalation_threshold == 'string') queries.result.matchEscalationThreshold = getIntegerValue(params, 'match_escalation_threshold'); - if (params.match_to) + if (typeof params.match_to == 'string') queries.result.matchTo = params.match_to.split(','); - if (params.offset) + if (typeof params.offset == 'string') queries.result.offset = getIntegerValue(params, 'offset'); - if (params.query) + if (typeof params.query == 'string') queries.result.query = params.query; - if (params.sort_by) + if (typeof params.sort_by == 'string') queries.result.sortBy = params.sort_by.split(','); return { queries: queries }; Modified: test/builders-rest-request.test.js (+40 -0) =================================================================== --- test/builders-rest-request.test.js 2013-01-16 15:20:18 +0900 (b020dcc) +++ test/builders-rest-request.test.js 2013-01-16 15:42:05 +0900 (1c41300) @@ -59,6 +59,46 @@ suite('building message from REST API request', function() { var actualBody = builders.search({ params: params }); assert.equalJSON(actualBody, expectedBody); }); + + suite('validation', function() { + function testSuccessFor(key, value, params) { + test(key + '=' + value + '(success)', function() { + assert.doesNotThrow(function() { + params = params || {}; + params[key] = value; + builders.search({ params: params }); + }); + }); + } + + function testFailFor(key, value, params, errorMessage) { + test(key + '=' + value + '(fail)', function() { + assert.throws(function() { + params = params || {}; + params[key] = value; + builders.search({ params: params }); + }, errorMessage); + }); + } + + var baseParams = { tableName: 'test' }; + + testSuccessFor('limit', '0', baseParams); + testSuccessFor('limit', '10', baseParams); + testSuccessFor('limit', '-10', baseParams); + testFailFor('limit', '', baseParams, 'invalid integer'); + testFailFor('limit', '0.1', baseParams, 'invalid integer'); + testFailFor('limit', '-0.1', baseParams, 'invalid integer'); + testFailFor('limit', 'foobar', baseParams, 'invalid integer'); + + testSuccessFor('offset', '0', baseParams); + testSuccessFor('offset', '10', baseParams); + testSuccessFor('offset', '-10', baseParams); + testFailFor('offset', '', baseParams, 'invalid integer'); + testFailFor('offset', '0.1', baseParams, 'invalid integer'); + testFailFor('offset', '-0.1', baseParams, 'invalid integer'); + testFailFor('offset', 'foobar', baseParams, 'invalid integer'); + }); }); }); -------------- next part -------------- HTML����������������������������... Télécharger