Navigation Menu

Skip to content

Commit

Permalink
Add support for DescribeSynonymOptions action
Browse files Browse the repository at this point in the history
  • Loading branch information
piroor committed Aug 15, 2012
1 parent cf23b32 commit f13d33b
Show file tree
Hide file tree
Showing 2 changed files with 112 additions and 4 deletions.
36 changes: 36 additions & 0 deletions lib/api/2011-02-01/configuration.js
Expand Up @@ -461,6 +461,42 @@ handlers.UpdateSynonymOptions = function(context, request, response) {
}
};

function createDescribeSynonymOptionsResponse(options) {
var doc = xmlbuilder.create();
doc.begin('DescribeSynonymOptionsResponse', { version: '1.0' })
.attribute('xmlns', XMLNS)
.element('DescribeSynonymOptionsResult')
.importXMLBuilder(createSynonymOptionsStatus(options))
.up()
.element('ResponseMetadata')
.element('RequestId').text(options.requestId || '').up()
.up();
return doc.toString();
}

handlers.DescribeSynonymOptions = function(context, request, response) {
var domain = new Domain(request.query.DomainName, context);
try {
var synonyms = domain.getSynonymsSync();
var synonymOptions = { synonyms: synonyms };

var updatedAt = new Date();

domain.updateSynonymsSync(synonymOptions.synonyms);

response.send(createUpdateSynonymOptionsResponse({
synonymOptions: JSON.stringify(synonymOptions),
updatedAt: updatedAt,
createdAt: updatedAt
}));
} catch (error) {
var body = createCommonErrorResponse('InternalFailure',
(error.message || error).toString());
response.contentType('application/xml');
response.send(body, 400);
}
};

function createDefaultSearchFieldStatus(options) {
var defaultSearchFieldStatus = xmlbuilder.create();
defaultSearchFieldStatus.begin('DefaultSearchField', { version: '1.0' })
Expand Down
80 changes: 76 additions & 4 deletions test/api-configuration.test.js
Expand Up @@ -183,14 +183,26 @@ function PATTERN_IndexDocumentsResponse(members) {
};
}

var PATTERN_SynonymOptionsStatus = {
Options: '',
Status: PATTERN_OptionStatus
};

var PATTERN_UpdateSynonymOptionsResponse = {
UpdateSynonymOptionsResponse: {
'@': { xmlns: '' },
UpdateSynonymOptionsResult: {
Synonyms: {
Options: '',
Status: PATTERN_OptionStatus
},
Synonyms: PATTERN_SynonymOptionsStatus,
},
ResponseMetadata: PATTERN_ResponseMetadata
}
};

var PATTERN_DescribeSynonymOptionsResponse = {
DescribeSynonymOptionsResponse: {
'@': { xmlns: '' },
DescribeSynonymOptionsResult: {
Synonyms: PATTERN_SynonymOptionsStatus,
},
ResponseMetadata: PATTERN_ResponseMetadata
}
Expand Down Expand Up @@ -932,6 +944,66 @@ suite('Configuration API', function() {
});
});

test('Get, Action=DescribeSynonymOptions', function(done) {
var domain;
var synonymsObject = {
synonyms: {
tokio: ["tokyo"],
dekkaido: "hokkaido"
}
};
var json = JSON.stringify(synonymsObject);
var synonyms = encodeURIComponent(json);
utils
.get('/?DomainName=companies&Action=CreateDomain&Version=2011-02-01', {
'Host': 'cloudsearch.localhost'
})
.get('/?Version=2011-02-01&Action=DescribeSynonymOptions&' +
'DomainName=companies')
.next(function() {
response = toParsedResponse(response);
assert.deepEqual(response.pattern,
{ statusCode: 200,
body: PATTERN_DescribeSynonymOptionsResponse });

var synonymOptions = response.body.DescribeSynonymOptionsResponse
.DescribeSynonymOptionsResult
.Synonyms.Options;
synonymOptions = JSON.parse(synonymOptions);
var expectedSynonymOptions = {
synonyms: {}
};
assert.deepEqual(expectedSynonymOptions, synonymOptions);
})
.get('/?Version=2011-02-01&Action=UpdateSynonymOptions&' +
'DomainName=companies&Synonyms='+synonyms)
.get('/?Version=2011-02-01&Action=DescribeSynonymOptions&' +
'DomainName=companies')
.next(function(response) {
response = toParsedResponse(response);
assert.deepEqual(response.pattern,
{ statusCode: 200,
body: PATTERN_DescribeSynonymOptionsResponse });

var synonymOptions = response.body.DescribeSynonymOptionsResponse
.DescribeSynonymOptionsResult
.Synonyms.Options;
synonymOptions = JSON.parse(synonymOptions);
var expectedSynonymOptions = {
synonyms: {
tokio: ['tokyo'],
dekkaido: 'hokkaido'
}
};
assert.deepEqual(expectedSynonymOptions, synonymOptions);

done();
})
.error(function(error) {
done(error);
});
});

test('Get, Action=UpdateDefaultSearchField', function(done) {
var domain;
utils
Expand Down

0 comments on commit f13d33b

Please sign in to comment.