Skip to content

Commit 4628607

Browse files
committed
expresso tests for simpledb client
1 parent 8e92e27 commit 4628607

File tree

2 files changed

+187
-0
lines changed

2 files changed

+187
-0
lines changed

Diff for: test/common.js

+4
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,4 @@
1+
2+
exports.awskeyid = 'YOUR_AWS_KEY_ID'
3+
exports.secretkey = 'YOUR_AWS_SECRET_KEY'
4+

Diff for: test/simpledb.test.js

+183
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,183 @@
1+
2+
// espresso tests
3+
// configure common.js with our amazon keys
4+
// run on command line before tests: node lib/simpledb.test.js create
5+
// you might need to do this a few times as CreateDomain gets frequent 'Service Unavailable' messages
6+
// to remove test domains (test,test1,test2): node lib/simpledb.test.js delete
7+
8+
var util = require('util')
9+
var assert = require('assert')
10+
var common = require('./common.js')
11+
12+
var aws = require("../lib/aws.js");
13+
14+
function createClient() {
15+
return aws.createSimpleDBClient(common.awskeyid, common.secretkey, {secure:false})
16+
}
17+
18+
function createDomain(name,callback) {
19+
var sdb = createClient()
20+
sdb.call("CreateDomain", {DomainName:name}, callback)
21+
}
22+
23+
function deleteDomain(name,callback) {
24+
var sdb = createClient()
25+
sdb.call("DeleteDomain", {DomainName:name}, callback)
26+
}
27+
28+
if( 'create' == process.argv[2] ) {
29+
util.debug('Creating domains:...');
30+
createDomain('test',function(result){
31+
util.debug(JSON.stringify(result))
32+
util.debug('test')
33+
34+
createDomain('test1',function(result){
35+
util.debug(JSON.stringify(result))
36+
util.debug('test1')
37+
38+
createDomain('test2',function(result){
39+
util.debug(JSON.stringify(result))
40+
util.debug('test2')
41+
})
42+
})
43+
})
44+
}
45+
else if( 'delete' == process.argv[2] ) {
46+
util.debug('Deleting domains:...');
47+
deleteDomain('test',function(result){
48+
util.debug(JSON.stringify(result))
49+
util.debug('test')
50+
51+
deleteDomain('test1',function(result){
52+
util.debug(JSON.stringify(result))
53+
util.debug('test1')
54+
55+
deleteDomain('test2',function(result){
56+
util.debug(JSON.stringify(result))
57+
util.debug('test2')
58+
})
59+
})
60+
})
61+
}
62+
63+
64+
module.exports = {
65+
createClient: function() {
66+
var sdb = createClient()
67+
assert.isNotNull(sdb)
68+
},
69+
listDomains: function() {
70+
var sdb = createClient()
71+
sdb.call("ListDomains", {}, function(result) {
72+
util.debug(JSON.stringify(result))
73+
assert.ok( 0 < result.ListDomainsResult.DomainName.length )
74+
})
75+
},
76+
domainMetaData: function() {
77+
var sdb = createClient()
78+
sdb.call("DomainMetadata", {DomainName:'test'}, function(result) {
79+
util.debug(JSON.stringify(result))
80+
assert.ok(!!result.DomainMetadataResult)
81+
})
82+
},
83+
putAndGetAttributes: function() {
84+
var sdb = createClient()
85+
sdb.call("PutAttributes", {
86+
DomainName:'test',
87+
ItemName:'item1',
88+
89+
'Attribute.0.Name':'foo',
90+
'Attribute.0.Value':'onefoo',
91+
'Attribute.0.Replace':'true',
92+
93+
'Attribute.1.Name':'bar',
94+
'Attribute.1.Value':'onebar',
95+
'Attribute.1.Replace':'true',
96+
97+
'Attribute.2.Name':'bar',
98+
'Attribute.2.Value':'twobar',
99+
'Attribute.2.Replace':'true',
100+
101+
}, function(result) {
102+
util.debug(JSON.stringify(result))
103+
assert.ok(!result.Errors)
104+
105+
sdb.call("GetAttributes", {
106+
DomainName:'test',
107+
ItemName:'item1',
108+
109+
}, function(result) {
110+
util.debug(JSON.stringify(result))
111+
assert.ok( 3 == result.GetAttributesResult.Attribute.length )
112+
})
113+
})
114+
},
115+
deleteAttributes: function() {
116+
var sdb = createClient()
117+
sdb.call("PutAttributes", {
118+
DomainName:'test1',
119+
ItemName:'item1',
120+
121+
'Attribute.0.Name':'foo',
122+
'Attribute.0.Value':'onefoo',
123+
'Attribute.0.Replace':'true',
124+
125+
'Attribute.1.Name':'bar',
126+
'Attribute.1.Value':'onebar',
127+
'Attribute.1.Replace':'true',
128+
129+
}, function(result) {
130+
util.debug(JSON.stringify(result))
131+
assert.ok(!result.Errors)
132+
133+
sdb.call("DeleteAttributes", {
134+
DomainName:'test1',
135+
ItemName:'item1',
136+
'Attribute.1.Name':'bar',
137+
}, function(result) {
138+
139+
sdb.call("GetAttributes", {
140+
DomainName:'test1',
141+
ItemName:'item1',
142+
143+
}, function(result) {
144+
util.debug(JSON.stringify(result))
145+
assert.ok( !!result.GetAttributesResult.Attribute )
146+
})
147+
})
148+
})
149+
},
150+
batchPutAndSelect: function() {
151+
var sdb = createClient()
152+
sdb.call("BatchPutAttributes", {
153+
DomainName:'test2',
154+
155+
'Item.0.ItemName':'foo',
156+
'Item.0.Attribute.0.Name':'val',
157+
'Item.0.Attribute.0.Value':'oneval',
158+
'Item.0.Attribute.0.Replace':'true',
159+
160+
'Item.1.ItemName':'bar',
161+
'Item.1.Attribute.0.Name':'val',
162+
'Item.1.Attribute.0.Value':'twoval',
163+
'Item.1.Attribute.0.Replace':'true',
164+
165+
'Item.2.ItemName':'woz',
166+
'Item.2.Attribute.0.Name':'val',
167+
'Item.2.Attribute.0.Value':'different',
168+
'Item.2.Attribute.0.Replace':'true',
169+
170+
}, function(result) {
171+
util.debug(JSON.stringify(result))
172+
assert.ok(!result.Errors)
173+
174+
sdb.call("Select", {
175+
SelectExpression:"select * from test2 where val like '%val%'",
176+
177+
}, function(result) {
178+
util.debug(JSON.stringify(result))
179+
assert.ok( 2 == result.SelectResult.Item.length )
180+
})
181+
})
182+
}
183+
}

0 commit comments

Comments
 (0)