[Groonga-commit] groonga/gcs [master] Update tests for configuration API

Back to archive index

SHIMODA Hiroshi null+****@clear*****
Wed Aug 15 16:43:10 JST 2012


SHIMODA Hiroshi	2012-08-15 16:43:10 +0900 (Wed, 15 Aug 2012)

  New Revision: 0370dc23f18f687199eca84893c7d07d03d1b703
  https://github.com/groonga/gcs/commit/0370dc23f18f687199eca84893c7d07d03d1b703

  Log:
    Update tests for configuration API

  Added files:
    test/xml-responses.js
  Modified files:
    test/api-configuration.test.js

  Modified: test/api-configuration.test.js (+56 -369)
===================================================================
--- test/api-configuration.test.js    2012-08-15 16:34:48 +0900 (02cb5d2)
+++ test/api-configuration.test.js    2012-08-15 16:43:10 +0900 (46a3aac)
@@ -1,308 +1,10 @@
 var utils = require('./test-utils');
+var xmlResponses = require('./xml-responses');
 var assert = require('chai').assert;
 var fs = require('fs');
 
 var Domain = require('../lib/database').Domain;
 
-var XMLNS = 'http://cloudsearch.amazonaws.com/doc/2011-02-01';
-
-var PATTERN_DocService = {
-      Endpoint: ''
-    };
-var PATTERN_SearchService = {
-      Endpoint: ''
-    };
-var PATTERN_ResponseMetadata = {
-      RequestId: {}
-    };
-var PATTERN_DomainStatus = {
-      Created: '',
-      Deleted: '',
-      DocService: PATTERN_DocService,
-      DomainId: '',
-      DomainName: '',
-      NumSearchableDocs: '',
-      RequiresIndexDocuments: '',
-      SearchInstanceCount: '',
-      SearchPartitionCount: '',
-      SearchService: PATTERN_SearchService
-    };
-var PATTERN_CreateDomainResponse = {
-      CreateDomainResponse: {
-        '@': { xmlns: '' },
-        CreateDomainResult: {
-          DomainStatus: PATTERN_DomainStatus
-        },
-        ResponseMetadata: PATTERN_ResponseMetadata
-      }
-    };
-var PATTERN_DeleteDomainResponse = {
-      DeleteDomainResponse: {
-        '@': { xmlns: '' },
-        DeleteDomainResult: {
-          DomainStatus: PATTERN_DomainStatus
-        },
-        ResponseMetadata: PATTERN_ResponseMetadata
-      }
-    };
-
-function PATTERN_DescribeDomainsResponse(members) {
-  return {
-    DescribeDomainsResponse: {
-      '@': { xmlns: '' },
-      DescribeDomainsResult: {
-        DomainStatusList: (function() {
-          var pattern = {};
-          members.forEach(function(member, index) {
-            pattern[index] = PATTERN_DomainStatus;
-          });
-          return { member: pattern };
-        })()
-      },
-      ResponseMetadata: PATTERN_ResponseMetadata
-    }
-  };
-}
-
-var PATTERN_OptionStatus = {
-      CreationDate: '',
-      State: '',
-      UpdateDate: '',
-      UpdateVersion: ''
-    };
-var PATTERN_TextOptions = {
-      DefaultValue: {},
-      FacetEnabled: '',
-      ResultEnabled: ''
-    };
-var PATTERN_IndexField_Text = {
-      IndexFieldName: '',
-      IndexFieldType: '',
-      TextOptions: PATTERN_TextOptions
-    };
-var PATTERN_IndexFieldStatus_Text = {
-      Options: PATTERN_IndexField_Text,
-      Status: PATTERN_OptionStatus
-    };
-var PATTERN_DefineIndexFieldResponse_Text = {
-      DefineIndexFieldResponse: {
-        '@': { xmlns: '' },
-        DefineIndexFieldResult: {
-          IndexField: PATTERN_IndexFieldStatus_Text
-        },
-        ResponseMetadata: PATTERN_ResponseMetadata
-      }
-    };
-var PATTERN_UIntOptions = {
-      DefaultValue: {}
-    };
-var PATTERN_IndexField_UInt = {
-      IndexFieldName: '',
-      IndexFieldType: '',
-      UIntOptions: PATTERN_UIntOptions
-    };
-var PATTERN_IndexFieldStatus_UInt = {
-      Options: PATTERN_IndexField_UInt,
-      Status: PATTERN_OptionStatus
-    };
-var PATTERN_DefineIndexFieldResponse_UInt = {
-      DefineIndexFieldResponse: {
-        '@': { xmlns: '' },
-        DefineIndexFieldResult: {
-          IndexField: PATTERN_IndexFieldStatus_UInt
-        },
-        ResponseMetadata: PATTERN_ResponseMetadata
-      }
-    };
-var PATTERN_LiteralOptions = {
-      DefaultValue: {},
-      FacetEnabled: '',
-      ResultEnabled: '',
-      SearchEnabled: ''
-    };
-var PATTERN_IndexField_Literal = {
-      IndexFieldName: '',
-      IndexFieldType: '',
-      LiteralOptions: PATTERN_LiteralOptions
-    };
-var PATTERN_IndexFieldStatus_Literal = {
-      Options: PATTERN_IndexField_Literal,
-      Status: PATTERN_OptionStatus
-    };
-var PATTERN_DefineIndexFieldResponse_Literal = {
-      DefineIndexFieldResponse: {
-        '@': { xmlns: '' },
-        DefineIndexFieldResult: {
-          IndexField: PATTERN_IndexFieldStatus_Literal
-        },
-        ResponseMetadata: PATTERN_ResponseMetadata
-      }
-    };
-
-var PATTERN_DeleteIndexFieldResponse = {
-      DeleteIndexFieldResponse: {
-        '@': { xmlns: '' },
-        DeleteIndexFieldResult: {},
-        ResponseMetadata: PATTERN_ResponseMetadata
-      }
-    };
-
-function PATTERN_DescribeIndexFieldsResponse(members) {
-  return {
-    DescribeIndexFieldsResponse: {
-      '@': { xmlns: '' },
-      DescribeIndexFieldsResult: {
-        IndexFields: (function() {
-          var pattern = {};
-          members.forEach(function(member, index) {
-            pattern[index] = member;
-          });
-          return { member: pattern };
-        })()
-      },
-      ResponseMetadata: PATTERN_ResponseMetadata
-    }
-  };
-}
-
-function PATTERN_IndexDocumentsResponse(members) {
-  return {
-    IndexDocumentsResponse: {
-      '@': { xmlns: '' },
-      IndexDocumentsResult: {
-        FieldNames: (function() {
-          var pattern = {};
-          members.forEach(function(member, index) {
-            pattern[index] = '';
-          });
-          return { member: pattern };
-        })()
-      },
-      ResponseMetadata: PATTERN_ResponseMetadata
-    }
-  };
-}
-
-var PATTERN_SynonymOptionsStatus = {
-      Options: '',
-      Status: PATTERN_OptionStatus
-    };
-
-var PATTERN_UpdateSynonymOptionsResponse = {
-      UpdateSynonymOptionsResponse: {
-        '@': { xmlns: '' },
-        UpdateSynonymOptionsResult: {
-          Synonyms: PATTERN_SynonymOptionsStatus,
-        },
-        ResponseMetadata: PATTERN_ResponseMetadata
-      }
-    };
-
-var PATTERN_DescribeSynonymOptionsResponse = {
-      DescribeSynonymOptionsResponse: {
-        '@': { xmlns: '' },
-        DescribeSynonymOptionsResult: {
-          Synonyms: PATTERN_SynonymOptionsStatus,
-        },
-        ResponseMetadata: PATTERN_ResponseMetadata
-      }
-    };
-
-var PATTERN_COMMON_ERROR_RESPONSE = {
-      Response: {
-        Errors: {
-          Error: {
-            Code: '',
-            Message: ''
-          }
-        },
-        RequestID: {}
-      }
-    };
-
-var PATTERN_DefaultSearchFieldStatus = {
-      Options: '',
-      Status: PATTERN_OptionStatus
-    };
-
-var PATTERN_DefaultSearchFieldStatus_blank = {
-      Options: {},
-      Status: PATTERN_OptionStatus
-    };
-
-var PATTERN_UpdateDefaultSearchFieldResponse = {
-      UpdateDefaultSearchFieldResponse: {
-        '@': { xmlns: '' },
-        UpdateDefaultSearchFieldResult: {
-          DefaultSearchField: PATTERN_DefaultSearchFieldStatus,
-        },
-        ResponseMetadata: PATTERN_ResponseMetadata
-      }
-    };
-
-var PATTERN_UpdateDefaultSearchFieldResponse_blank = {
-      UpdateDefaultSearchFieldResponse: {
-        '@': { xmlns: '' },
-        UpdateDefaultSearchFieldResult: {
-          DefaultSearchField: PATTERN_DefaultSearchFieldStatus_blank,
-        },
-        ResponseMetadata: PATTERN_ResponseMetadata
-      }
-    };
-
-var PATTERN_DescribeDefaultSearchFieldResponse = {
-      DescribeDefaultSearchFieldResponse: {
-        '@': { xmlns: '' },
-        DescribeDefaultSearchFieldResult: {
-          DefaultSearchField: PATTERN_DefaultSearchFieldStatus,
-        },
-        ResponseMetadata: PATTERN_ResponseMetadata
-      }
-    };
-
-var PATTERN_DescribeDefaultSearchFieldResponse_blank = {
-      DescribeDefaultSearchFieldResponse: {
-        '@': { xmlns: '' },
-        DescribeDefaultSearchFieldResult: {
-          DefaultSearchField: PATTERN_DefaultSearchFieldStatus_blank,
-        },
-        ResponseMetadata: PATTERN_ResponseMetadata
-      }
-    };
-
-function toXMLPattern(fragment) {
-  switch (typeof fragment) {
-    default:
-      return '';
-    case 'object':
-      var format = {};
-      Object.keys(fragment).forEach(function(key) {
-        if (!fragment.hasOwnProperty(key))
-          return;
-        format[key] = toXMLPattern(fragment[key]);
-      });
-      return format;
-  }
-}
-
-function replaceXMLDates(str) {
-  return str.replace(/\d{4}-\d{2}-\d{2}T\d{2}:\d{2}:\d{2}Z/g,
-                     '1970-01-01T00:00:00Z');
-}
-
-function toParsedResponse(response) {
-  var parsed = {
-        statusCode: response.statusCode,
-        body: utils.XMLStringToJSON(response.body)
-      };
-  var pattern = {
-        statusCode: parsed.statusCode,
-        body: toXMLPattern(parsed.body)
-      };
-  parsed.pattern = pattern;
-  return parsed;
-}
-
 suite('Configuration API', function() {
   var temporaryDatabase;
   var context;
@@ -329,10 +31,10 @@ suite('Configuration API', function() {
         var domain = new Domain('companies', context);
         assert.isTrue(domain.exists());
 
-        response = toParsedResponse(response);
+        response = xmlResponses.toParsedResponse(response);
         assert.deepEqual(response.pattern,
                          { statusCode: 200,
-                           body: PATTERN_CreateDomainResponse });
+                           body: xmlResponses.CreateDomainResponse });
         var expectedStatus = {
               Created: 'true',
               Deleted: 'false',
@@ -360,26 +62,11 @@ suite('Configuration API', function() {
   });
 
   suite('auto detection of the base hostname and port', function() {
-    var temporaryDatabase;
-    var context;
-    var server;
-
-    setup(function() {
-      temporaryDatabase = utils.createTemporaryDatabase();
-      context = temporaryDatabase.get();
-    });
-
-    teardown(function() {
-      if (server) server.close();
-      temporaryDatabase.teardown();
-      temporaryDatabase = undefined;
-    });
-
     function assertBaseHost(baseHost, response) {
-      response = toParsedResponse(response);
+      response = xmlResponses.toParsedResponse(response);
       assert.deepEqual(response.pattern,
                        { statusCode: 200,
-                         body: PATTERN_CreateDomainResponse });
+                         body: xmlResponses.CreateDomainResponse });
       var domain = new Domain('companies', context);
       var status = response.body.CreateDomainResponse.CreateDomainResult.DomainStatus;
       assert.deepEqual(
@@ -486,10 +173,10 @@ suite('Configuration API', function() {
       .next(function(response) {
         assert.isFalse(domain.exists());
 
-        response = toParsedResponse(response);
+        response = xmlResponses.toParsedResponse(response);
         assert.deepEqual(response.pattern,
                          { statusCode: 200,
-                           body: PATTERN_DeleteDomainResponse });
+                           body: xmlResponses.DeleteDomainResponse });
         var expectedStatus = {
               Created: 'false',
               Deleted: 'true',
@@ -537,11 +224,11 @@ suite('Configuration API', function() {
       .get('/?DomainName=domain2&Action=CreateDomain&Version=2011-02-01')
       .get('/?Action=DescribeDomains&Version=2011-02-01')
       .next(function(response) {
-        response = toParsedResponse(response);
+        response = xmlResponses.toParsedResponse(response);
         var expectedDomains = ['domain1', 'domain2', 'domain3'];
         assert.deepEqual(response.pattern,
                          { statusCode: 200,
-                           body: PATTERN_DescribeDomainsResponse(expectedDomains) });
+                           body: xmlResponses.DescribeDomainsResponse(expectedDomains) });
 
         var actualDomains = getActualDescribedDomains(response);
         assert.deepEqual(actualDomains, expectedDomains);
@@ -562,11 +249,11 @@ suite('Configuration API', function() {
              '&DomainNames.member.1=domain2' +
              '&DomainNames.member.2=domain1')
       .next(function(response) {
-        response = toParsedResponse(response);
+        response = xmlResponses.toParsedResponse(response);
         var expectedDomains = ['domain2', 'domain1'];
         assert.deepEqual(response.pattern,
                          { statusCode: 200,
-                           body: PATTERN_DescribeDomainsResponse(expectedDomains) });
+                           body: xmlResponses.DescribeDomainsResponse(expectedDomains) });
 
         var actualDomains = getActualDescribedDomains(response);
         assert.deepEqual(actualDomains, expectedDomains);
@@ -589,10 +276,10 @@ suite('Configuration API', function() {
         var field = domain.getIndexField('name');
         assert.isTrue(field.exists(), response.body);
 
-        response = toParsedResponse(response);
+        response = xmlResponses.toParsedResponse(response);
         assert.deepEqual(response.pattern,
                          { statusCode: 200,
-                           body: PATTERN_DefineIndexFieldResponse_Text });
+                           body: xmlResponses.DefineIndexFieldResponse_Text });
         var expectedOptions = {
               IndexFieldName: 'name',
               IndexFieldType: 'text',
@@ -624,10 +311,10 @@ suite('Configuration API', function() {
         var field = domain.getIndexField('name');
         assert.isTrue(field.exists(), response.body);
 
-        response = toParsedResponse(response);
+        response = xmlResponses.toParsedResponse(response);
         assert.deepEqual(response.pattern,
                          { statusCode: 200,
-                           body: PATTERN_DefineIndexFieldResponse_Text });
+                           body: xmlResponses.DefineIndexFieldResponse_Text });
         var expectedOptions = {
               IndexFieldName: 'name',
               IndexFieldType: 'text',
@@ -658,10 +345,10 @@ suite('Configuration API', function() {
         var field = domain.getIndexField('age');
         assert.isTrue(field.exists(), response.body);
 
-        response = toParsedResponse(response);
+        response = xmlResponses.toParsedResponse(response);
         assert.deepEqual(response.pattern,
                          { statusCode: 200,
-                           body: PATTERN_DefineIndexFieldResponse_UInt });
+                           body: xmlResponses.DefineIndexFieldResponse_UInt });
         var expectedOptions = {
               IndexFieldName: 'age',
               IndexFieldType: 'uint',
@@ -690,10 +377,10 @@ suite('Configuration API', function() {
         var field = domain.getIndexField('product');
         assert.isTrue(field.exists(), response.body);
 
-        response = toParsedResponse(response);
+        response = xmlResponses.toParsedResponse(response);
         assert.deepEqual(response.pattern,
                          { statusCode: 200,
-                           body: PATTERN_DefineIndexFieldResponse_Literal });
+                           body: xmlResponses.DefineIndexFieldResponse_Literal });
         var expectedOptions = {
               IndexFieldName: 'product',
               IndexFieldType: 'literal',
@@ -728,10 +415,10 @@ suite('Configuration API', function() {
         var field = domain.getIndexField('product');
         assert.isTrue(field.exists(), response.body);
 
-        response = toParsedResponse(response);
+        response = xmlResponses.toParsedResponse(response);
         assert.deepEqual(response.pattern,
                          { statusCode: 200,
-                           body: PATTERN_DefineIndexFieldResponse_Literal });
+                           body: xmlResponses.DefineIndexFieldResponse_Literal });
         var expectedOptions = {
               IndexFieldName: 'product',
               IndexFieldType: 'literal',
@@ -771,10 +458,10 @@ suite('Configuration API', function() {
                          { domain: true,
                            field:  false });
 
-        response = toParsedResponse(response);
+        response = xmlResponses.toParsedResponse(response);
         assert.deepEqual(response.pattern,
                          { statusCode: 200,
-                           body: PATTERN_DeleteIndexFieldResponse });
+                           body: xmlResponses.DeleteIndexFieldResponse });
 
         done();
       })
@@ -802,10 +489,10 @@ suite('Configuration API', function() {
                          { domain: true,
                            field:  false });
 
-        response = toParsedResponse(response);
+        response = xmlResponses.toParsedResponse(response);
         assert.deepEqual(response.pattern,
                          { statusCode: 200,
-                           body: PATTERN_DeleteIndexFieldResponse });
+                           body: xmlResponses.DeleteIndexFieldResponse });
 
         done();
       })
@@ -833,10 +520,10 @@ suite('Configuration API', function() {
                          { domain: true,
                            field:  false });
 
-        response = toParsedResponse(response);
+        response = xmlResponses.toParsedResponse(response);
         assert.deepEqual(response.pattern,
                          { statusCode: 200,
-                           body: PATTERN_DeleteIndexFieldResponse });
+                           body: xmlResponses.DeleteIndexFieldResponse });
 
         done();
       })
@@ -874,13 +561,13 @@ suite('Configuration API', function() {
       .get('/?Action=DescribeIndexFields&Version=2011-02-01' +
              '&DomainName=companies')
       .next(function(response) {
-        response = toParsedResponse(response);
+        response = xmlResponses.toParsedResponse(response);
         assert.deepEqual(response.pattern,
                          { statusCode: 200,
-                           body: PATTERN_DescribeIndexFieldsResponse([
-                             PATTERN_IndexFieldStatus_UInt,
-                             PATTERN_IndexFieldStatus_Text,
-                             PATTERN_IndexFieldStatus_Literal
+                           body: xmlResponses.DescribeIndexFieldsResponse([
+                             xmlResponses.IndexFieldStatus_UInt,
+                             xmlResponses.IndexFieldStatus_Text,
+                             xmlResponses.IndexFieldStatus_Literal
                            ]) });
 
         var expectedFields = ['age', 'name', 'product'];
@@ -911,12 +598,12 @@ suite('Configuration API', function() {
              '&FieldNames.member.1=name' +
              '&FieldNames.member.2=age')
       .next(function(response) {
-        response = toParsedResponse(response);
+        response = xmlResponses.toParsedResponse(response);
         assert.deepEqual(response.pattern,
                          { statusCode: 200,
-                           body: PATTERN_DescribeIndexFieldsResponse([
-                             PATTERN_IndexFieldStatus_Text,
-                             PATTERN_IndexFieldStatus_UInt
+                           body: xmlResponses.DescribeIndexFieldsResponse([
+                             xmlResponses.IndexFieldStatus_Text,
+                             xmlResponses.IndexFieldStatus_UInt
                            ]) });
 
         var expectedFields = ['name', 'age'];
@@ -947,10 +634,10 @@ suite('Configuration API', function() {
         assert.isTrue(domain.getIndexField('age').exists());
 
         var expectedFieldNames = ['age', 'name'];
-        response = toParsedResponse(response);
+        response = xmlResponses.toParsedResponse(response);
         assert.deepEqual(response.pattern,
                          { statusCode: 200,
-                           body: PATTERN_IndexDocumentsResponse(expectedFieldNames) });
+                           body: xmlResponses.IndexDocumentsResponse(expectedFieldNames) });
         var fieldNames = response.body.IndexDocumentsResponse
                                       .IndexDocumentsResult
                                       .FieldNames
@@ -993,10 +680,10 @@ suite('Configuration API', function() {
       .next(function(response) {
         assert.isTrue(domain.hasSynonymsTableSync());
 
-        response = toParsedResponse(response);
+        response = xmlResponses.toParsedResponse(response);
         assert.deepEqual(response.pattern,
                          { statusCode: 200,
-                           body: PATTERN_UpdateSynonymOptionsResponse });
+                           body: xmlResponses.UpdateSynonymOptionsResponse });
 
         var synonymOptions = response.body.UpdateSynonymOptionsResponse
                                           .UpdateSynonymOptionsResult
@@ -1032,10 +719,10 @@ suite('Configuration API', function() {
       .get('/?Version=2011-02-01&Action=DescribeSynonymOptions&' +
            'DomainName=companies')
       .next(function(response) {
-        response = toParsedResponse(response);
+        response = xmlResponses.toParsedResponse(response);
         assert.deepEqual(response.pattern,
                          { statusCode: 200,
-                           body: PATTERN_DescribeSynonymOptionsResponse });
+                           body: xmlResponses.DescribeSynonymOptionsResponse });
 
         var synonymOptions = response.body.DescribeSynonymOptionsResponse
                                           .DescribeSynonymOptionsResult
@@ -1051,10 +738,10 @@ suite('Configuration API', function() {
       .get('/?Version=2011-02-01&Action=DescribeSynonymOptions&' +
            'DomainName=companies')
       .next(function(response) {
-        response = toParsedResponse(response);
+        response = xmlResponses.toParsedResponse(response);
         assert.deepEqual(response.pattern,
                          { statusCode: 200,
-                           body: PATTERN_DescribeSynonymOptionsResponse });
+                           body: xmlResponses.DescribeSynonymOptionsResponse });
 
         var synonymOptions = response.body.DescribeSynonymOptionsResponse
                                           .DescribeSynonymOptionsResult
@@ -1092,10 +779,10 @@ suite('Configuration API', function() {
         assert.equal(domain.defaultSearchField,
                      domain.getIndexField('name'));
 
-        response = toParsedResponse(response);
+        response = xmlResponses.toParsedResponse(response);
         assert.deepEqual(response.pattern,
                          { statusCode: 200,
-                           body: PATTERN_UpdateDefaultSearchFieldResponse });
+                           body: xmlResponses.UpdateDefaultSearchFieldResponse });
 
         var fieldName = response.body.UpdateDefaultSearchFieldResponse
                                      .UpdateDefaultSearchFieldResult
@@ -1108,10 +795,10 @@ suite('Configuration API', function() {
         assert.isTrue(domain.defaultSearchField === null,
                       domain.defaultSearchField);
 
-        response = toParsedResponse(response);
+        response = xmlResponses.toParsedResponse(response);
         assert.deepEqual(response.pattern,
                          { statusCode: 200,
-                           body: PATTERN_UpdateDefaultSearchFieldResponse_blank });
+                           body: xmlResponses.UpdateDefaultSearchFieldResponse_blank });
 
         var fieldName = response.body.UpdateDefaultSearchFieldResponse
                                      .UpdateDefaultSearchFieldResult
@@ -1135,10 +822,10 @@ suite('Configuration API', function() {
       .get('/?Version=2011-02-01&Action=DescribeDefaultSearchField&' +
            'DomainName=companies')
       .next(function(response) {
-        response = toParsedResponse(response);
+        response = xmlResponses.toParsedResponse(response);
         assert.deepEqual(response.pattern,
                          { statusCode: 200,
-                           body: PATTERN_DescribeDefaultSearchFieldResponse_blank });
+                           body: xmlResponses.DescribeDefaultSearchFieldResponse_blank });
 
         var fieldName = response.body.DescribeDefaultSearchFieldResponse
                                      .DescribeDefaultSearchFieldResult
@@ -1151,10 +838,10 @@ suite('Configuration API', function() {
       .get('/?Version=2011-02-01&Action=DescribeDefaultSearchField&' +
            'DomainName=companies')
       .next(function(response) {
-        response = toParsedResponse(response);
+        response = xmlResponses.toParsedResponse(response);
         assert.deepEqual(response.pattern,
                          { statusCode: 200,
-                           body: PATTERN_DescribeDefaultSearchFieldResponse });
+                           body: xmlResponses.DescribeDefaultSearchFieldResponse });
 
         var fieldName = response.body.DescribeDefaultSearchFieldResponse
                                      .DescribeDefaultSearchFieldResult
@@ -1172,10 +859,10 @@ suite('Configuration API', function() {
     utils
       .get('/?Action=unknown')
       .next(function(response) {
-        response = toParsedResponse(response);
+        response = xmlResponses.toParsedResponse(response);
         assert.deepEqual(response.pattern,
                          { statusCode: 400,
-                           body: PATTERN_COMMON_ERROR_RESPONSE });
+                           body: xmlResponses.COMMON_ERROR_RESPONSE });
 
         var expectedError = {
               Code: 'MissingParameter',
@@ -1195,10 +882,10 @@ suite('Configuration API', function() {
     utils
       .get('/?Version=2011-02-02&Action=unknown')
       .next(function(response) {
-        response = toParsedResponse(response);
+        response = xmlResponses.toParsedResponse(response);
         assert.deepEqual(response.pattern,
                          { statusCode: 400,
-                           body: PATTERN_COMMON_ERROR_RESPONSE });
+                           body: xmlResponses.COMMON_ERROR_RESPONSE });
 
         var expectedError = {
               Code: 'InvalidParameterValue',

  Added: test/xml-responses.js (+344 -0) 100644
===================================================================
--- /dev/null
+++ test/xml-responses.js    2012-08-15 16:43:10 +0900 (e3a31f0)
@@ -0,0 +1,344 @@
+var utils = require('./test-utils');
+
+var XMLNS =
+    exports.XMLNS = 'http://cloudsearch.amazonaws.com/doc/2011-02-01';
+
+var DocService =
+    exports.DocService = {
+      Endpoint: ''
+    };
+var SearchService =
+    exports.SearchService = {
+      Endpoint: ''
+    };
+var ResponseMetadata =
+    exports.ResponseMetadata = {
+      RequestId: {}
+    };
+var DomainStatus =
+    exports.DomainStatus = {
+      Created: '',
+      Deleted: '',
+      DocService: DocService,
+      DomainId: '',
+      DomainName: '',
+      NumSearchableDocs: '',
+      RequiresIndexDocuments: '',
+      SearchInstanceCount: '',
+      SearchPartitionCount: '',
+      SearchService: SearchService
+    };
+var CreateDomainResponse =
+    exports.CreateDomainResponse = {
+      CreateDomainResponse: {
+        '@': { xmlns: '' },
+        CreateDomainResult: {
+          DomainStatus: DomainStatus
+        },
+        ResponseMetadata: ResponseMetadata
+      }
+    };
+var DeleteDomainResponse =
+    exports.DeleteDomainResponse = {
+      DeleteDomainResponse: {
+        '@': { xmlns: '' },
+        DeleteDomainResult: {
+          DomainStatus: DomainStatus
+        },
+        ResponseMetadata: ResponseMetadata
+      }
+    };
+
+var DescribeDomainsResponse = 
+    exports.DescribeDomainsResponse = function(members) {
+  return {
+    DescribeDomainsResponse: {
+      '@': { xmlns: '' },
+      DescribeDomainsResult: {
+        DomainStatusList: (function() {
+          var pattern =
+    exports.pattern = {};
+          members.forEach(function(member, index) {
+            pattern[index] = DomainStatus;
+          });
+          return { member: pattern };
+        })()
+      },
+      ResponseMetadata: ResponseMetadata
+    }
+  };
+}
+
+var OptionStatus =
+    exports.OptionStatus = {
+      CreationDate: '',
+      State: '',
+      UpdateDate: '',
+      UpdateVersion: ''
+    };
+var TextOptions =
+    exports.TextOptions = {
+      DefaultValue: {},
+      FacetEnabled: '',
+      ResultEnabled: ''
+    };
+var IndexField_Text =
+    exports.IndexField_Text = {
+      IndexFieldName: '',
+      IndexFieldType: '',
+      TextOptions: TextOptions
+    };
+var IndexFieldStatus_Text =
+    exports.IndexFieldStatus_Text = {
+      Options: IndexField_Text,
+      Status: OptionStatus
+    };
+var DefineIndexFieldResponse_Text =
+    exports.DefineIndexFieldResponse_Text = {
+      DefineIndexFieldResponse: {
+        '@': { xmlns: '' },
+        DefineIndexFieldResult: {
+          IndexField: IndexFieldStatus_Text
+        },
+        ResponseMetadata: ResponseMetadata
+      }
+    };
+var UIntOptions =
+    exports.UIntOptions = {
+      DefaultValue: {}
+    };
+var IndexField_UInt =
+    exports.IndexField_UInt = {
+      IndexFieldName: '',
+      IndexFieldType: '',
+      UIntOptions: UIntOptions
+    };
+var IndexFieldStatus_UInt =
+    exports.IndexFieldStatus_UInt = {
+      Options: IndexField_UInt,
+      Status: OptionStatus
+    };
+var DefineIndexFieldResponse_UInt =
+    exports.DefineIndexFieldResponse_UInt = {
+      DefineIndexFieldResponse: {
+        '@': { xmlns: '' },
+        DefineIndexFieldResult: {
+          IndexField: IndexFieldStatus_UInt
+        },
+        ResponseMetadata: ResponseMetadata
+      }
+    };
+var LiteralOptions =
+    exports.LiteralOptions = {
+      DefaultValue: {},
+      FacetEnabled: '',
+      ResultEnabled: '',
+      SearchEnabled: ''
+    };
+var IndexField_Literal =
+    exports.IndexField_Literal = {
+      IndexFieldName: '',
+      IndexFieldType: '',
+      LiteralOptions: LiteralOptions
+    };
+var IndexFieldStatus_Literal =
+    exports.IndexFieldStatus_Literal = {
+      Options: IndexField_Literal,
+      Status: OptionStatus
+    };
+var DefineIndexFieldResponse_Literal =
+    exports.DefineIndexFieldResponse_Literal = {
+      DefineIndexFieldResponse: {
+        '@': { xmlns: '' },
+        DefineIndexFieldResult: {
+          IndexField: IndexFieldStatus_Literal
+        },
+        ResponseMetadata: ResponseMetadata
+      }
+    };
+
+var DeleteIndexFieldResponse =
+    exports.DeleteIndexFieldResponse = {
+      DeleteIndexFieldResponse: {
+        '@': { xmlns: '' },
+        DeleteIndexFieldResult: {},
+        ResponseMetadata: ResponseMetadata
+      }
+    };
+
+var DescribeIndexFieldsResponse = 
+    exports.DescribeIndexFieldsResponse = function(members) {
+  return {
+    DescribeIndexFieldsResponse: {
+      '@': { xmlns: '' },
+      DescribeIndexFieldsResult: {
+        IndexFields: (function() {
+          var pattern =
+    exports.pattern = {};
+          members.forEach(function(member, index) {
+            pattern[index] = member;
+          });
+          return { member: pattern };
+        })()
+      },
+      ResponseMetadata: ResponseMetadata
+    }
+  };
+}
+
+var IndexDocumentsResponse = 
+    exports.IndexDocumentsResponse = function(members) {
+  return {
+    IndexDocumentsResponse: {
+      '@': { xmlns: '' },
+      IndexDocumentsResult: {
+        FieldNames: (function() {
+          var pattern =
+    exports.pattern = {};
+          members.forEach(function(member, index) {
+            pattern[index] = '';
+          });
+          return { member: pattern };
+        })()
+      },
+      ResponseMetadata: ResponseMetadata
+    }
+  };
+}
+
+var SynonymOptionsStatus =
+    exports.SynonymOptionsStatus = {
+      Options: '',
+      Status: OptionStatus
+    };
+
+var UpdateSynonymOptionsResponse =
+    exports.UpdateSynonymOptionsResponse = {
+      UpdateSynonymOptionsResponse: {
+        '@': { xmlns: '' },
+        UpdateSynonymOptionsResult: {
+          Synonyms: SynonymOptionsStatus,
+        },
+        ResponseMetadata: ResponseMetadata
+      }
+    };
+
+var DescribeSynonymOptionsResponse =
+    exports.DescribeSynonymOptionsResponse = {
+      DescribeSynonymOptionsResponse: {
+        '@': { xmlns: '' },
+        DescribeSynonymOptionsResult: {
+          Synonyms: SynonymOptionsStatus,
+        },
+        ResponseMetadata: ResponseMetadata
+      }
+    };
+
+var COMMON_ERROR_RESPONSE =
+    exports.COMMON_ERROR_RESPONSE = {
+      Response: {
+        Errors: {
+          Error: {
+            Code: '',
+            Message: ''
+          }
+        },
+        RequestID: {}
+      }
+    };
+
+var DefaultSearchFieldStatus =
+    exports.DefaultSearchFieldStatus = {
+      Options: '',
+      Status: OptionStatus
+    };
+
+var DefaultSearchFieldStatus_blank =
+    exports.DefaultSearchFieldStatus_blank = {
+      Options: {},
+      Status: OptionStatus
+    };
+
+var UpdateDefaultSearchFieldResponse =
+    exports.UpdateDefaultSearchFieldResponse = {
+      UpdateDefaultSearchFieldResponse: {
+        '@': { xmlns: '' },
+        UpdateDefaultSearchFieldResult: {
+          DefaultSearchField: DefaultSearchFieldStatus,
+        },
+        ResponseMetadata: ResponseMetadata
+      }
+    };
+
+var UpdateDefaultSearchFieldResponse_blank =
+    exports.UpdateDefaultSearchFieldResponse_blank = {
+      UpdateDefaultSearchFieldResponse: {
+        '@': { xmlns: '' },
+        UpdateDefaultSearchFieldResult: {
+          DefaultSearchField: DefaultSearchFieldStatus_blank,
+        },
+        ResponseMetadata: ResponseMetadata
+      }
+    };
+
+var DescribeDefaultSearchFieldResponse =
+    exports.DescribeDefaultSearchFieldResponse = {
+      DescribeDefaultSearchFieldResponse: {
+        '@': { xmlns: '' },
+        DescribeDefaultSearchFieldResult: {
+          DefaultSearchField: DefaultSearchFieldStatus,
+        },
+        ResponseMetadata: ResponseMetadata
+      }
+    };
+
+var DescribeDefaultSearchFieldResponse_blank =
+    exports.DescribeDefaultSearchFieldResponse_blank = {
+      DescribeDefaultSearchFieldResponse: {
+        '@': { xmlns: '' },
+        DescribeDefaultSearchFieldResult: {
+          DefaultSearchField: DefaultSearchFieldStatus_blank,
+        },
+        ResponseMetadata: ResponseMetadata
+      }
+    };
+
+function toXMLPattern(fragment) {
+  switch (typeof fragment) {
+    default:
+      return '';
+    case 'object':
+      var format =
+    exports.format = {};
+      Object.keys(fragment).forEach(function(key) {
+        if (!fragment.hasOwnProperty(key))
+          return;
+        format[key] = toXMLPattern(fragment[key]);
+      });
+      return format;
+  }
+}
+exports.toXMLPattern = toXMLPattern;
+
+function replaceXMLDates(str) {
+  return str.replace(/\d{4}-\d{2}-\d{2}T\d{2}:\d{2}:\d{2}Z/g,
+                     '1970-01-01T00:00:00Z');
+}
+exports.replaceXMLDates = replaceXMLDates;
+
+function toParsedResponse(response) {
+  var parsed =
+    exports.parsed = {
+        statusCode: response.statusCode,
+        body: utils.XMLStringToJSON(response.body)
+      };
+  var pattern =
+    exports.pattern = {
+        statusCode: parsed.statusCode,
+        body: toXMLPattern(parsed.body)
+      };
+  parsed.pattern = pattern;
+  return parsed;
+}
+exports.toParsedResponse = toParsedResponse;
+
-------------- next part --------------
HTML����������������������������...
Download 



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