[Groonga-commit] groonga/express-kotoumi [master] Add tests for validation of parameters

Back to archive index

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����������������������������...
Download 



More information about the Groonga-commit mailing list
Back to archive index