leanback 0.4.2 → 0.5.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +7 -0
- data/.travis.yml +10 -0
- data/Gemfile +5 -6
- data/Gemfile.lock +65 -14
- data/README.md +465 -33
- data/Rakefile +8 -17
- data/VERSION +1 -1
- data/leanback.gemspec +26 -85
- data/lib/leanback.rb +129 -587
- data/spec/leanback_spec.rb +356 -0
- metadata +40 -117
- data/Changelog.rdoc +0 -146
- data/documentation/static/2011/11/20/i-moved-leanback-documentation/index.html +0 -180
- data/documentation/static/2011/11/20/index.html +0 -146
- data/documentation/static/2011/11/index.html +0 -146
- data/documentation/static/2011/index.html +0 -146
- data/documentation/static/2013/06/02/index.html +0 -146
- data/documentation/static/2013/06/02/released-leanback-v0-3-4/index.html +0 -180
- data/documentation/static/2013/06/09/index.html +0 -146
- data/documentation/static/2013/06/09/released-leanback-v0-4-0/index.html +0 -179
- data/documentation/static/2013/06/index.html +0 -158
- data/documentation/static/2013/index.html +0 -158
- data/documentation/static/author/admin/index.html +0 -175
- data/documentation/static/basic-couchdb-operations/index.html +0 -259
- data/documentation/static/category/uncategorized/index.html +0 -170
- data/documentation/static/couchdb-configuration/index.html +0 -189
- data/documentation/static/couchdb-security/index.html +0 -218
- data/documentation/static/count-by-multiple-documents/index.html +0 -221
- data/documentation/static/count-documents-by-key/index.html +0 -177
- data/documentation/static/css/2c-l-fixed.css +0 -1
- data/documentation/static/css/2c-l-fixed.dev.css +0 -62
- data/documentation/static/css/2c-r-fixed.css +0 -1
- data/documentation/static/css/2c-r-fixed.dev.css +0 -60
- data/documentation/static/css/3c-c-fixed.css +0 -1
- data/documentation/static/css/3c-c-fixed.dev.css +0 -84
- data/documentation/static/css/3c-l-fixed.css +0 -1
- data/documentation/static/css/3c-l-fixed.dev.css +0 -61
- data/documentation/static/css/3c-r-fixed.css +0 -1
- data/documentation/static/css/3c-r-fixed.dev.css +0 -62
- data/documentation/static/css/holy-grail-fluid.css +0 -5
- data/documentation/static/css/plugins.css +0 -5
- data/documentation/static/css/print.css +0 -5
- data/documentation/static/css/screen.css +0 -1
- data/documentation/static/design-documents-and-permanent-views/index.html +0 -454
- data/documentation/static/error-handling/index.html +0 -157
- data/documentation/static/find-document-by-multiple-keys/index.html +0 -269
- data/documentation/static/find-documents-by-key/index.html +0 -243
- data/documentation/static/index.html +0 -161
- data/documentation/static/leanback/index.html +0 -130
- data/documentation/static/leanback/installation/index.html +0 -119
- data/documentation/static/setting-the-bind_address-port/index.html +0 -151
- data/documentation/static/style.css +0 -16
- data/spec/admin_party/database_spec.rb +0 -400
- data/spec/no_admin_party/cloudant_spec.rb +0 -365
- data/spec/no_admin_party/database_spec.rb +0 -491
- data/spec/no_admin_party/non_admin_user_spec.rb +0 -67
- data/test/helper.rb +0 -18
- data/test/main.rb +0 -295
- data/test/my_view.json +0 -8
- data/test/my_views.json +0 -8
- data/test/start.json +0 -8
- data/test/test_leanback.rb +0 -319
- data/test/view_age.json +0 -8
@@ -1,491 +0,0 @@
|
|
1
|
-
require 'spec_base.rb'
|
2
|
-
|
3
|
-
#a day in the life of a CouchDB admin user
|
4
|
-
hash = Couchdb.login(username = 'obi',password ='trusted')
|
5
|
-
@@auth_session = hash["AuthSession"]
|
6
|
-
|
7
|
-
data = {:section => "httpd",
|
8
|
-
:key => "port",
|
9
|
-
:value => "6980" }
|
10
|
-
Couchdb.set_config(data,@@auth_session)
|
11
|
-
|
12
|
-
Couchdb.port = "6980"
|
13
|
-
|
14
|
-
|
15
|
-
describe "CouchDB " do
|
16
|
-
|
17
|
-
it "should create and delete a database" do
|
18
|
-
hash = Couchdb.create('employees',@@auth_session)
|
19
|
-
hash.to_s.should == '{"ok"=>true}'
|
20
|
-
hash = Couchdb.all
|
21
|
-
hash.include?("employees").should == true
|
22
|
-
hash = Couchdb.delete 'employees',@@auth_session
|
23
|
-
hash.include?("employees").should == false
|
24
|
-
end
|
25
|
-
|
26
|
-
it "should create a database add a finder method to it and then delete the database" do
|
27
|
-
Couchdb.create('wiseguys',@@auth_session)
|
28
|
-
hash = Couchdb.add_finder({:database => 'wiseguys', :key => 'email'},@@auth_session)
|
29
|
-
hash.include?("_design/email_finder").should == true
|
30
|
-
hash.include?("true").should == true
|
31
|
-
hash.include?("rev").should == true
|
32
|
-
|
33
|
-
doc = {:database => 'wiseguys', :doc_id => '_design/email_finder'}
|
34
|
-
hash = Couchdb.view doc
|
35
|
-
hash["_id"].should == '_design/email_finder'
|
36
|
-
Couchdb.delete 'wiseguys',@@auth_session
|
37
|
-
end
|
38
|
-
|
39
|
-
it "should create and view document doc" do
|
40
|
-
Couchdb.create('contacts',@@auth_session)
|
41
|
-
data = {:firstname => 'John',
|
42
|
-
:lastname =>'smith',
|
43
|
-
:phone => '202-234-1234',
|
44
|
-
:email =>'james@mail.com',
|
45
|
-
:age =>'34',
|
46
|
-
:gender =>'male'}
|
47
|
-
|
48
|
-
doc = {:database => 'contacts', :doc_id => 'john', :data => data}
|
49
|
-
Couchdb.create_doc doc,@@auth_session
|
50
|
-
|
51
|
-
doc = {:database => 'contacts', :doc_id => 'john'}
|
52
|
-
hash = Couchdb.view doc,@@auth_session
|
53
|
-
hash["_id"].should == 'john'
|
54
|
-
|
55
|
-
#view doc and return symbolized keys
|
56
|
-
doc = {:database => 'contacts', :doc_id => 'john'}
|
57
|
-
hash = Couchdb.view(doc,@@auth_session, {symbolize_keys: true})
|
58
|
-
hash.should include(data)
|
59
|
-
end
|
60
|
-
|
61
|
-
it "should count the lastnames named smith" do
|
62
|
-
count = Couchdb.count({:database => 'contacts', :lastname => 'smith'},@@auth_session)
|
63
|
-
count.should == 1
|
64
|
-
end
|
65
|
-
|
66
|
-
it "should count lastnames named brown" do
|
67
|
-
count = Couchdb.count({:database => 'contacts', :lastname => 'brown'},@@auth_session)
|
68
|
-
count.should == 0
|
69
|
-
end
|
70
|
-
|
71
|
-
|
72
|
-
it "find items by key" do
|
73
|
-
docs = Couchdb.find_by({:database => 'contacts', :lastname => 'smith'},@@auth_session)
|
74
|
-
d = docs[0]
|
75
|
-
d["lastname"].should == "smith"
|
76
|
-
Couchdb.delete_doc({:database => 'contacts', :doc_id => '_design/lastname_finder'},@@auth_session)
|
77
|
-
end
|
78
|
-
|
79
|
-
it "should find items by multiple keys" do
|
80
|
-
keys = {:gender => 'male',:age => '34'}
|
81
|
-
docs = Couchdb.find_by_keys({:database => 'contacts', :keys => keys},@@auth_session)
|
82
|
-
d = docs[0]
|
83
|
-
d["age"].should == "34"
|
84
|
-
end
|
85
|
-
|
86
|
-
it "should find items by multiple keys using a single key" do
|
87
|
-
keys = {:lastname => 'smith'}
|
88
|
-
docs = Couchdb.find_by_keys({:database => 'contacts', :keys => keys},@@auth_session)
|
89
|
-
d = docs[0]
|
90
|
-
d["lastname"].should == "smith"
|
91
|
-
end
|
92
|
-
|
93
|
-
it "should find items by multiple keys" do
|
94
|
-
keys = {:gender => 'male',:age => '40'}
|
95
|
-
docs = Couchdb.find_by_keys({:database => 'contacts', :keys => keys},@@auth_session)
|
96
|
-
docs.should == []
|
97
|
-
end
|
98
|
-
|
99
|
-
it "should count items by multiple keys" do
|
100
|
-
keys = {:gender => 'male',:age => '34'}
|
101
|
-
count = Couchdb.count_by_keys({:database => 'contacts', :keys => keys},@@auth_session)
|
102
|
-
count.should == 1
|
103
|
-
end
|
104
|
-
|
105
|
-
it "should count items by multiple keys" do
|
106
|
-
keys = {:gender => 'male',:age => '40'}
|
107
|
-
count = Couchdb.count_by_keys({:database => 'contacts', :keys => keys},@@auth_session)
|
108
|
-
count.should == 0
|
109
|
-
end
|
110
|
-
|
111
|
-
|
112
|
-
|
113
|
-
it "should query a permanent view that doesn't exist and handle exception" do
|
114
|
-
begin
|
115
|
-
view = { :database => "contacts", :design_doc => 'more_views', :view => 'get_user_email'}
|
116
|
-
Couchdb.find view,@@auth_session
|
117
|
-
rescue CouchdbException => e
|
118
|
-
e.to_s.should == "CouchDB: Error - not_found. Reason - missing"
|
119
|
-
e.error.should == "not_found"
|
120
|
-
end
|
121
|
-
end
|
122
|
-
|
123
|
-
it "should query a permanent view and create the view on the fly, if it doesn't already exist" do
|
124
|
-
view = {:database => 'contacts',
|
125
|
-
:design_doc => 'my_views',
|
126
|
-
:view => 'get_emails',
|
127
|
-
:json_doc => '/home/obi/bin/leanback/test/my_view.json'}
|
128
|
-
|
129
|
-
docs = Couchdb.find_on_fly(view,@@auth_session)
|
130
|
-
docs[0].include?("Email").should == true
|
131
|
-
docs[0].include?("Name").should == true
|
132
|
-
#verify that the view was created
|
133
|
-
doc = {:database => 'contacts', :doc_id => '_design/my_views'}
|
134
|
-
hash = Couchdb.view doc,@@auth_session
|
135
|
-
hash["_id"].should == '_design/my_views'
|
136
|
-
Couchdb.delete_doc({:database => 'contacts', :doc_id => '_design/my_views'},@@auth_session)
|
137
|
-
end
|
138
|
-
|
139
|
-
it "should query a permanent view by key and create the view on the fly, if it doesn't already exist" do
|
140
|
-
view = { :database => 'contacts',
|
141
|
-
:design_doc => 'the_view',
|
142
|
-
:view => 'age',
|
143
|
-
:json_doc => '/home/obi/bin/leanback/test/view_age.json'}
|
144
|
-
|
145
|
-
age = '34'
|
146
|
-
docs = Couchdb.find_on_fly(view,@@auth_session,key = age)
|
147
|
-
docs[0].include?("age").should == true
|
148
|
-
d = docs[0]
|
149
|
-
d["age"].should == '34'
|
150
|
-
#verify that the view was created
|
151
|
-
doc = {:database => 'contacts', :doc_id => '_design/the_view'}
|
152
|
-
hash = Couchdb.view doc,@@auth_session
|
153
|
-
hash["_id"].should == '_design/the_view'
|
154
|
-
Couchdb.delete_doc({:database => 'contacts', :doc_id => '_design/the_view'},@@auth_session)
|
155
|
-
end
|
156
|
-
|
157
|
-
it "should create a design doc/permanent view and query it" do
|
158
|
-
doc = { :database => 'contacts', :design_doc => 'more_views', :json_doc => '/home/obi/bin/leanback/test/my_views.json' }
|
159
|
-
hash = Couchdb.create_design doc,@@auth_session
|
160
|
-
hash["id"].should == '_design/more_views'
|
161
|
-
hash["ok"].should == true
|
162
|
-
|
163
|
-
view = { :database => "contacts", :design_doc => 'more_views', :view => 'get_email'}
|
164
|
-
hash = Couchdb.find view,@@auth_session
|
165
|
-
hash[0].has_key?("Firstname").should == true
|
166
|
-
hash[0].has_key?("Lastname").should == true
|
167
|
-
hash[0].has_key?("Email").should == true
|
168
|
-
|
169
|
-
doc = {:database => 'contacts', :doc_id => '_design/more_views'}
|
170
|
-
hash = Couchdb.view doc,@@auth_session
|
171
|
-
hash["_id"].should == '_design/more_views'
|
172
|
-
Couchdb.delete_doc({:database => 'contacts', :doc_id => '_design/more_views'},@@auth_session)
|
173
|
-
end
|
174
|
-
|
175
|
-
it "should return a list of all databases in the system" do
|
176
|
-
databases = Couchdb.all
|
177
|
-
databases.include?("contacts").should == true
|
178
|
-
end
|
179
|
-
|
180
|
-
it "should create a document" do
|
181
|
-
data = {:firstname => 'Nancy', :lastname =>'Lee', :phone => '347-808-3734',:email =>'nancy@mail.com',:gender => 'female'}
|
182
|
-
doc = {:database => 'contacts', :doc_id => 'Nancy', :data => data}
|
183
|
-
hash = Couchdb.create_doc doc,@@auth_session
|
184
|
-
hash["id"].should == 'Nancy'
|
185
|
-
hash["ok"].should == true
|
186
|
-
|
187
|
-
doc = {:database => 'contacts', :doc_id => 'Nancy'}
|
188
|
-
hash = Couchdb.view doc,@@auth_session
|
189
|
-
hash["_id"].should == 'Nancy'
|
190
|
-
hash["firstname"].should == 'Nancy'
|
191
|
-
hash["lastname"].should == 'Lee'
|
192
|
-
hash["phone"].should == '347-808-3734'
|
193
|
-
Couchdb.delete_doc({:database => 'contacts', :doc_id => 'Nancy'},@@auth_session)
|
194
|
-
end
|
195
|
-
|
196
|
-
it "should update the document" do
|
197
|
-
data = {:age => "41", :lastname => "Stevens" }
|
198
|
-
doc = { :database => 'contacts', :doc_id => 'john', :data => data}
|
199
|
-
hash = Couchdb.update_doc doc,@@auth_session
|
200
|
-
hash["id"].should == 'john'
|
201
|
-
hash["ok"].should == true
|
202
|
-
|
203
|
-
doc = {:database => 'contacts', :doc_id => 'john'}
|
204
|
-
hash = Couchdb.view doc,@@auth_session
|
205
|
-
hash["_id"].should == 'john'
|
206
|
-
hash["age"].should == '41'
|
207
|
-
hash["lastname"].should == 'Stevens'
|
208
|
-
Couchdb.delete_doc({:database => 'contacts', :doc_id => 'john'},@@auth_session)
|
209
|
-
end
|
210
|
-
|
211
|
-
|
212
|
-
it "should delete a document after creating it" do
|
213
|
-
data = {:firstname => 'Sun',
|
214
|
-
:lastname =>'Nova',
|
215
|
-
:phone => '212-234-1234',
|
216
|
-
:email =>'james@mail.com'}
|
217
|
-
|
218
|
-
doc = {:database => 'contacts', :doc_id => 'Sun', :data => data}
|
219
|
-
Couchdb.create_doc doc,@@auth_session
|
220
|
-
|
221
|
-
doc = {:database => 'contacts', :doc_id => 'Sun'}
|
222
|
-
hash = Couchdb.delete_doc doc,@@auth_session
|
223
|
-
hash["id"].should == 'Sun'
|
224
|
-
hash["ok"].should == true
|
225
|
-
begin
|
226
|
-
doc = {:database => 'contacts', :doc_id => 'Sun'}
|
227
|
-
Couchdb.view doc,@@auth_session
|
228
|
-
rescue CouchdbException => e
|
229
|
-
e.to_s.should == "CouchDB: Error - not_found. Reason - deleted"
|
230
|
-
e.error.should == "not_found"
|
231
|
-
end
|
232
|
-
end
|
233
|
-
|
234
|
-
it "should test finder options" do
|
235
|
-
|
236
|
-
Couchdb.create('fishes',@@auth_session)
|
237
|
-
|
238
|
-
data = {:firstname => 'aaron', :gender =>'male', :age => '28', :salary => '50000'}
|
239
|
-
doc = {:database => 'fishes', :doc_id => 'aaron', :data => data}
|
240
|
-
Couchdb.create_doc doc,@@auth_session
|
241
|
-
|
242
|
-
data_c = {:firstname => 'john', :gender =>'male', :age => '28', :salary => '60000'}
|
243
|
-
doc = {:database => 'fishes', :doc_id => 'john', :data => data_c}
|
244
|
-
Couchdb.create_doc doc,@@auth_session
|
245
|
-
|
246
|
-
data = {:firstname => 'peter', :gender =>'male', :age => '45', :salary => '78000'}
|
247
|
-
doc = {:database => 'fishes', :doc_id => 'peter', :data => data}
|
248
|
-
Couchdb.create_doc doc,@@auth_session
|
249
|
-
|
250
|
-
data = {:firstname => 'sam', :gender =>'male', :age => '28', :salary => '97000'}
|
251
|
-
doc = {:database => 'fishes', :doc_id => 'sam', :data => data}
|
252
|
-
Couchdb.create_doc doc,@@auth_session
|
253
|
-
|
254
|
-
|
255
|
-
keys = {:age =>'28', :gender => 'male'}
|
256
|
-
hash = Couchdb.find_by_keys({:database => 'fishes', :keys => keys},@@auth_session, options = {:limit => 2, :skip => 1})
|
257
|
-
hash.first["firstname"].should == "john"
|
258
|
-
hash.length.should == 2
|
259
|
-
|
260
|
-
#return hash in symbolized keys for find_by_keys
|
261
|
-
hash = Couchdb.find_by_keys({:database => 'fishes', :keys => keys},@@auth_session, options = {:limit => 2, :skip => 1, :symbolize_keys => true})
|
262
|
-
hash.first.should include(data_c)
|
263
|
-
|
264
|
-
#create the design doc to be queryed in the test
|
265
|
-
Couchdb.find_by({:database => 'fishes', :gender => 'male'},@@auth_session)
|
266
|
-
|
267
|
-
|
268
|
-
view = { :database => "fishes",
|
269
|
-
:design_doc => 'gender_finder',
|
270
|
-
:view => 'find_by_gender'}
|
271
|
-
|
272
|
-
hash = Couchdb.find view,@@auth_session,key=nil, options = {:limit => 2, :skip => 1}
|
273
|
-
hash.first["firstname"].should == "john"
|
274
|
-
hash.length.should == 2
|
275
|
-
|
276
|
-
#return results in symbolized keys
|
277
|
-
hash = Couchdb.find view,@@auth_session,key=nil, options = {:limit => 2, :skip => 1, :symbolize_keys => true}
|
278
|
-
hash.first.should include(data_c)
|
279
|
-
|
280
|
-
#it should not return symbolized keys
|
281
|
-
hash = Couchdb.find view,@@auth_session,key=nil, options = {:limit => 2, :skip => 1, :symbolize_keys => false}
|
282
|
-
hash.first.should_not include(data_c)
|
283
|
-
hash.first["firstname"].should == "john"
|
284
|
-
|
285
|
-
hash = Couchdb.find_by({:database => 'fishes', :gender => 'male'},@@auth_session,options = {:limit => 2, :skip => 1})
|
286
|
-
hash.first["firstname"].should == "john"
|
287
|
-
hash.length.should == 2
|
288
|
-
|
289
|
-
#return symbolized results
|
290
|
-
hash = Couchdb.find_by({:database => 'fishes', :gender => 'male'},@@auth_session,options = {:limit => 2, :skip => 1, :symbolize_keys => true})
|
291
|
-
hash.first.should include(data_c)
|
292
|
-
|
293
|
-
hash = Couchdb.find view,@@auth_session,key='male', options = {:descending => true}
|
294
|
-
h = hash[0]
|
295
|
-
h["firstname"].should == "sam"
|
296
|
-
|
297
|
-
Couchdb.find_by({:database => 'fishes', :gender => 'male'},@@auth_session, options = {:descending => true})
|
298
|
-
h = hash[0]
|
299
|
-
h["firstname"].should == "sam"
|
300
|
-
|
301
|
-
|
302
|
-
|
303
|
-
hash = Couchdb.find view,@@auth_session,key='male', options = {:limit => 3}
|
304
|
-
hash.length.should == 3
|
305
|
-
|
306
|
-
hash = Couchdb.find view,@@auth_session,key=nil, options = {:skip => 2}
|
307
|
-
h = hash[0]
|
308
|
-
h["firstname"].should == "peter"
|
309
|
-
hash.length.should == 2
|
310
|
-
|
311
|
-
hash = Couchdb.find view,@@auth_session,key='male', options = {:descending => true,:limit => 1}
|
312
|
-
h = hash[0]
|
313
|
-
h["firstname"].should == "sam"
|
314
|
-
hash.length.should == 1
|
315
|
-
|
316
|
-
Couchdb.find_by({:database => 'fishes', :gender => 'male'},@@auth_session, options = {:descending => true,:limit => 1})
|
317
|
-
h = hash[0]
|
318
|
-
h["firstname"].should == "sam"
|
319
|
-
hash.length.should == 1
|
320
|
-
|
321
|
-
Couchdb.find_by({:database => 'fishes', :salary => '5000'},@@auth_session)
|
322
|
-
|
323
|
-
|
324
|
-
view = { :database => "fishes",
|
325
|
-
:design_doc => 'salary_finder',
|
326
|
-
:view => 'find_by_salary'}
|
327
|
-
|
328
|
-
hash = Couchdb.find view, @@auth_session,key=nil, options = {:startkey => "3000", :endkey => "65000"}
|
329
|
-
h = hash[0]
|
330
|
-
h["firstname"].should == "aaron"
|
331
|
-
hash.length.should == 2
|
332
|
-
|
333
|
-
hash = Couchdb.find view, @@auth_session,key=nil, options = {:startkey => "53000", :endkey => "99000",:limit => 2}
|
334
|
-
h = hash[0]
|
335
|
-
h["firstname"].should == "john"
|
336
|
-
hash.length.should == 2
|
337
|
-
|
338
|
-
Couchdb.find_by({:database => 'fishes', :salary => ''},@@auth_session, options = {:startkey => "53000", :endkey => "99000",:limit => 2})
|
339
|
-
h = hash[0]
|
340
|
-
h["firstname"].should == "john"
|
341
|
-
hash.length.should == 2
|
342
|
-
|
343
|
-
view = {:database => 'fishes',
|
344
|
-
:design_doc => 'my_views',
|
345
|
-
:view => 'age_gender',
|
346
|
-
:json_doc => '/home/obi/bin/leanback/test/start.json'}
|
347
|
-
|
348
|
-
options = {:startkey => ["28","male"], :endkey => ["28","male"], :limit => 2}
|
349
|
-
|
350
|
-
hash = Couchdb.find_on_fly(view,@@auth_session,key=nil, options)
|
351
|
-
h0 = hash[0]
|
352
|
-
h1 = hash[1]
|
353
|
-
h0["firstname"].should == "aaron"
|
354
|
-
h1["firstname"].should == "john"
|
355
|
-
hash.length.should == 2
|
356
|
-
|
357
|
-
options = {:startkey => ["28","male"], :endkey => ["28","male"], :skip => 1}
|
358
|
-
|
359
|
-
hash = Couchdb.find_on_fly(view,@@auth_session,key=nil, options)
|
360
|
-
h0 = hash[0]
|
361
|
-
h1 = hash[1]
|
362
|
-
h0["firstname"].should == "john"
|
363
|
-
h1["firstname"].should == "sam"
|
364
|
-
hash.length.should == 2
|
365
|
-
|
366
|
-
#return results as symbolized keys
|
367
|
-
options = {:startkey => ["28","male"], :endkey => ["28","male"], :skip => 1,:symbolize_keys => true}
|
368
|
-
hash = Couchdb.find_on_fly(view,@@auth_session,key=nil, options)
|
369
|
-
hash.first.should include(data_c)
|
370
|
-
|
371
|
-
options = {:startkey => ["28","male"], :endkey => ["28","male"]}
|
372
|
-
|
373
|
-
hash = Couchdb.find_on_fly(view,@@auth_session,key=nil, options)
|
374
|
-
h0 = hash[0]
|
375
|
-
h1 = hash[1]
|
376
|
-
h0["firstname"].should == "aaron"
|
377
|
-
h1["firstname"].should == "john"
|
378
|
-
hash.length.should == 3
|
379
|
-
|
380
|
-
Couchdb.delete 'fishes',@@auth_session
|
381
|
-
end
|
382
|
-
|
383
|
-
#database: administration tasks
|
384
|
-
|
385
|
-
it "should set a config section, retrieve it and delete it" do
|
386
|
-
data = {:section => "sample_config_section",
|
387
|
-
:key => "sample_key",
|
388
|
-
:value => "sample_value"}
|
389
|
-
Couchdb.set_config data,@@auth_session
|
390
|
-
|
391
|
-
data = {:section => "sample_config_section",
|
392
|
-
:key => "sample_key"}
|
393
|
-
|
394
|
-
Couchdb.get_config(data,@@auth_session).should == "sample_value"
|
395
|
-
|
396
|
-
Couchdb.delete_config(data,@@auth_session).should == "sample_value"
|
397
|
-
|
398
|
-
lambda {Couchdb.get_config(data,@@auth_session)}.should raise_error(CouchdbException,"CouchDB: Error - not_found. Reason - unknown_config_value")
|
399
|
-
end
|
400
|
-
|
401
|
-
it "should create an admin user and delete the admin user" do
|
402
|
-
data = {:section => "admins",
|
403
|
-
:key => "sample_admin",
|
404
|
-
:value => "trusted"}
|
405
|
-
Couchdb.set_config data,@@auth_session
|
406
|
-
|
407
|
-
data = {:section => "admins",
|
408
|
-
:key => "sample_admin"}
|
409
|
-
|
410
|
-
Couchdb.delete_config(data,@@auth_session)
|
411
|
-
lambda {Couchdb.get_config(data,@@auth_session)}.should raise_error(CouchdbException,"CouchDB: Error - not_found. Reason - unknown_config_value")
|
412
|
-
end
|
413
|
-
|
414
|
-
it "should set security object on a database, retrieve it and reset it back to original" do
|
415
|
-
data = { :admins => {"names" => ["obi"], "roles" => ["admin"]},
|
416
|
-
:readers => {"names" => ["obi"],"roles" => ["admin"]}
|
417
|
-
}
|
418
|
-
|
419
|
-
hash = Couchdb.set_security("contacts",data,@@auth_session)
|
420
|
-
hash["ok"].should == true
|
421
|
-
|
422
|
-
hash = Couchdb.get_security("contacts",@@auth_session)
|
423
|
-
hash["admins"].should == {"names"=>["obi"], "roles"=>["admin"]}
|
424
|
-
hash["readers"].should == {"names"=>["obi"], "roles"=>["admin"]}
|
425
|
-
|
426
|
-
data = { :admins => {"names" => [], "roles" => []},
|
427
|
-
:readers => {"names" => [],"roles" => []}
|
428
|
-
}
|
429
|
-
|
430
|
-
hash = Couchdb.set_security("contacts",data,@@auth_session)
|
431
|
-
hash["ok"].should == true
|
432
|
-
|
433
|
-
hash = Couchdb.get_security("contacts",@@auth_session)
|
434
|
-
hash["admins"].should == {"names"=>[], "roles"=>[]}
|
435
|
-
hash["readers"].should == {"names"=>[], "roles"=>[]}
|
436
|
-
end
|
437
|
-
|
438
|
-
it "create a new non-admin user, login user, retrieve user and delete the user" do
|
439
|
-
user = { :username => "sample_user", :password => "trusted", :roles => []}
|
440
|
-
hash = Couchdb.add_user(user)
|
441
|
-
hash["ok"].should == true
|
442
|
-
hash["id"].should == 'org.couchdb.user:sample_user'
|
443
|
-
|
444
|
-
hash = Couchdb.login(username = 'sample_user',password ='trusted')
|
445
|
-
hash.has_key?("AuthSession").should == true
|
446
|
-
|
447
|
-
doc = {:database => '_users', :doc_id => 'org.couchdb.user:sample_user'}
|
448
|
-
hash = Couchdb.view doc,@@auth_session
|
449
|
-
hash["_id"].should == 'org.couchdb.user:sample_user'
|
450
|
-
|
451
|
-
hash = Couchdb.delete_doc doc,@@auth_session
|
452
|
-
hash["id"].should == 'org.couchdb.user:sample_user'
|
453
|
-
hash["ok"].should == true
|
454
|
-
|
455
|
-
lambda {Couchdb.view(doc,@@auth_session)}.should raise_error(CouchdbException,"CouchDB: Error - not_found. Reason - deleted")
|
456
|
-
end
|
457
|
-
|
458
|
-
|
459
|
-
it "should non-admin user password, verify new password" do
|
460
|
-
user = { :username => "another_sample_user", :password => "trusted", :roles => []}
|
461
|
-
hash = Couchdb.add_user(user)
|
462
|
-
hash["ok"].should == true
|
463
|
-
hash["id"].should == 'org.couchdb.user:another_sample_user'
|
464
|
-
|
465
|
-
Couchdb.change_password(username = 'another_sample_user', new_password = "brown", @@auth_session)
|
466
|
-
hash = Couchdb.login(username = 'another_sample_user',password ='brown')
|
467
|
-
hash.has_key?("AuthSession").should == true
|
468
|
-
|
469
|
-
lambda {Couchdb.login(username = 'another_sample_user',password ='trusted')}.should raise_error(CouchdbException,"CouchDB: Error - unauthorized. Reason - Name or password is incorrect.")
|
470
|
-
|
471
|
-
doc = {:database => '_users', :doc_id => 'org.couchdb.user:another_sample_user'}
|
472
|
-
hash = Couchdb.delete_doc doc,@@auth_session
|
473
|
-
|
474
|
-
end
|
475
|
-
|
476
|
-
it "should delete the database" do
|
477
|
-
Couchdb.delete 'contacts',@@auth_session
|
478
|
-
end
|
479
|
-
|
480
|
-
it "should switch to default bind address" do
|
481
|
-
data = {:section => "httpd",
|
482
|
-
:key => "port",
|
483
|
-
:value => "5984" }
|
484
|
-
Couchdb.set_config(data,@@auth_session)
|
485
|
-
|
486
|
-
#Couchdb.address = nil
|
487
|
-
#Couchdb.port = nil
|
488
|
-
#Couchdb.all @@auth_session
|
489
|
-
end
|
490
|
-
|
491
|
-
end
|