analysand 2.0.0 → 3.0.0

Sign up to get free protection for your applications and to get access to all the features.
@@ -1,3 +1,3 @@
1
1
  module Analysand
2
- VERSION = "2.0.0"
2
+ VERSION = "3.0.0"
3
3
  end
@@ -1,31 +1,38 @@
1
1
  require 'spec_helper'
2
2
 
3
3
  shared_examples_for 'a response' do
4
- %w(etag success? conflict? code cookies session_cookie).each do |m|
4
+ %w(success? conflict? unauthorized?
5
+ etag code cookies session_cookie).each do |m|
5
6
  it "responds to ##{m}" do
6
7
  response.should respond_to(m)
7
8
  end
8
9
  end
9
10
 
10
11
  describe '#conflict?' do
11
- describe 'if response code is 409' do
12
- before do
13
- response.stub!(:code => '409')
14
- end
12
+ it 'returns true if response code is 409' do
13
+ response.stub(:code => '409')
15
14
 
16
- it 'returns true' do
17
- response.should be_conflict
18
- end
15
+ response.should be_conflict
19
16
  end
20
17
 
21
- describe 'if response code is 200' do
22
- before do
23
- response.stub!(:code => '200')
24
- end
18
+ it 'returns false if response code is 200' do
19
+ response.stub(:code => '200')
25
20
 
26
- it 'returns false' do
27
- response.should_not be_conflict
28
- end
21
+ response.should_not be_conflict
22
+ end
23
+ end
24
+
25
+ describe '#unauthorized?' do
26
+ it 'returns true if response code is 401' do
27
+ response.stub(:code => '401')
28
+
29
+ response.should be_unauthorized
30
+ end
31
+
32
+ it 'returns false if response code is 200' do
33
+ response.stub(:code => '200')
34
+
35
+ response.should_not be_unauthorized
29
36
  end
30
37
  end
31
38
 
@@ -46,7 +53,7 @@ shared_examples_for 'a response' do
46
53
  end
47
54
 
48
55
  before do
49
- response.stub!(:cookies => [cookie])
56
+ response.stub(:cookies => [cookie])
50
57
  end
51
58
 
52
59
  it 'returns the AuthSession cookie' do
@@ -186,11 +186,11 @@ module Analysand
186
186
  end
187
187
 
188
188
  it 'accepts credentials' do
189
- lambda { db.ensure_full_commit(member1_credentials) }.should_not raise_error(ArgumentError)
189
+ lambda { db.ensure_full_commit(member1_credentials) }.should_not raise_error
190
190
  end
191
191
 
192
192
  it 'accepts a seq parameter' do
193
- lambda { db.ensure_full_commit(member1_credentials, :seq => 10) }.should_not raise_error(ArgumentError)
193
+ lambda { db.ensure_full_commit(member1_credentials, :seq => 10) }.should_not raise_error
194
194
  end
195
195
  end
196
196
 
@@ -338,6 +338,16 @@ module Analysand
338
338
  resp.should be_success
339
339
  end
340
340
 
341
+ describe 'if authorization fails' do
342
+ let(:wrong) do
343
+ { :username => 'wrong', :password => 'wrong' }
344
+ end
345
+
346
+ it 'raises Analysand::BulkOperationFailed' do
347
+ lambda { db.bulk_docs!([doc1, doc2], wrong) }.should raise_error(Analysand::BulkOperationFailed)
348
+ end
349
+ end
350
+
341
351
  describe 'if an operation fails' do
342
352
  before do
343
353
  doc2['_id'] = 'doc1'
@@ -2,11 +2,10 @@ require 'spec_helper'
2
2
 
3
3
  require 'analysand/errors'
4
4
  require 'analysand/instance'
5
+ require 'json'
5
6
  require 'uri'
6
7
  require 'vcr'
7
8
 
8
- require File.expand_path('../a_session_grantor', __FILE__)
9
-
10
9
  module Analysand
11
10
  describe Instance do
12
11
  describe '#initialize' do
@@ -115,7 +114,9 @@ module Analysand
115
114
 
116
115
  it 'retrieves many configuration options' do
117
116
  VCR.use_cassette('get_many_config') do
118
- instance.get_config('stats', admin_credentials).value.should == {
117
+ json = instance.get_config('stats', admin_credentials).value
118
+
119
+ JSON.parse(json).should == {
119
120
  'rate' => '1000',
120
121
  'samples' => '[0, 60, 300, 900]'
121
122
  }
@@ -123,30 +124,81 @@ module Analysand
123
124
  end
124
125
  end
125
126
 
126
- describe '#set_config!' do
127
+ describe '#put_config!' do
127
128
  it 'raises ConfigurationNotSaved on non-success' do
128
- VCR.use_cassette('unauthorized_set_config') do
129
- lambda { instance.set_config!('stats/rate', 1000) }.should raise_error(ConfigurationNotSaved)
129
+ VCR.use_cassette('unauthorized_put_config') do
130
+ lambda { instance.put_config!('stats/rate', '"1000"') }.should raise_error(ConfigurationNotSaved)
130
131
  end
131
132
  end
132
133
  end
133
134
 
134
- describe '#set_config' do
135
+ describe '#put_config' do
135
136
  let(:credentials) { admin_credentials }
136
137
 
138
+ after do
139
+ instance.delete_config!('foo/bar', admin_credentials)
140
+ end
141
+
137
142
  it 'sets a configuration option' do
138
- VCR.use_cassette('set_config') do
139
- instance.set_config('stats/rate', 1200, admin_credentials)
140
- instance.get_config('stats/rate', admin_credentials).value.should == '"1200"'
141
- end
143
+ instance.put_config('foo/bar', '"1200"', admin_credentials)
144
+ instance.get_config('foo/bar', admin_credentials).value.should == '"1200"'
142
145
  end
143
146
 
144
- it 'accepts values from get_config' do
145
- VCR.use_cassette('reload_config') do
146
- samples = instance.get_config('stats/samples', admin_credentials).value
147
- instance.set_config('stats/samples', samples, admin_credentials)
148
- instance.get_config('stats/samples', admin_credentials).value.should == samples
149
- end
147
+ it 'roundtrips values from get_config' do
148
+ instance.put_config!('foo/bar', '"[0, 60, 300, 900]"', admin_credentials)
149
+
150
+ from_db = instance.get_config('foo/bar', admin_credentials).value
151
+ instance.put_config('foo/bar', from_db, admin_credentials)
152
+ instance.get_config('foo/bar', admin_credentials).value.should == from_db
153
+ end
154
+ end
155
+
156
+ describe '#delete_config' do
157
+ let(:credentials) { admin_credentials }
158
+
159
+ before do
160
+ instance.put_config!('foo/bar', '"1000"', admin_credentials)
161
+ end
162
+
163
+ it 'deletes configuration options' do
164
+ instance.delete_config('foo/bar', admin_credentials)
165
+
166
+ resp = instance.get_config('foo/bar', admin_credentials)
167
+ resp.not_found?.should be_true
168
+ end
169
+ end
170
+
171
+ describe '#put_admin' do
172
+ let(:credentials) { admin_credentials }
173
+ let(:password) { 'password' }
174
+ let(:username) { 'new_admin' }
175
+
176
+ after do
177
+ instance.delete_admin!(username, credentials)
178
+ end
179
+
180
+ it 'adds an admin to the CouchDB admins list' do
181
+ instance.put_admin(username, password, admin_credentials)
182
+
183
+ resp = instance.post_session(username, password)
184
+ resp.body['roles'].should include('_admin')
185
+ end
186
+ end
187
+
188
+ describe '#delete_admin' do
189
+ let(:credentials) { admin_credentials }
190
+ let(:password) { 'password' }
191
+ let(:username) { 'new_admin' }
192
+
193
+ before do
194
+ instance.put_admin!(username, password, admin_credentials)
195
+ end
196
+
197
+ it 'deletes an admin from the CouchDB admins list' do
198
+ instance.delete_admin(username, admin_credentials)
199
+
200
+ resp = instance.post_session(username, password)
201
+ resp.should be_unauthorized
150
202
  end
151
203
  end
152
204
  end
@@ -25,7 +25,7 @@ module Analysand
25
25
 
26
26
  describe '#docs' do
27
27
  describe 'if the view includes docs' do
28
- subject { ViewResponse.new(stub(:body => resp_with_docs)) }
28
+ subject { ViewResponse.new(double(:body => resp_with_docs)) }
29
29
 
30
30
  it 'returns the value of the "doc" key in each row' do
31
31
  subject.docs.should == [{'foo' => 'bar'}]
@@ -33,7 +33,7 @@ module Analysand
33
33
  end
34
34
 
35
35
  describe 'if the view does not include docs' do
36
- subject { ViewResponse.new(stub(:body => resp_without_docs)) }
36
+ subject { ViewResponse.new(double(:body => resp_without_docs)) }
37
37
 
38
38
  it 'returns []' do
39
39
  subject.docs.should == []
@@ -10,15 +10,15 @@ module Analysand
10
10
  let(:db) { Database.new(database_uri) }
11
11
  let(:row_count) { 15000 }
12
12
 
13
- before(:all) do
13
+ before do
14
14
  WebMock.disable!
15
15
  end
16
16
 
17
- after(:all) do
17
+ after do
18
18
  WebMock.enable!
19
19
  end
20
20
 
21
- before(:all) do
21
+ before do
22
22
  clean_databases!
23
23
 
24
24
  doc = {
@@ -4,6 +4,7 @@ require File.expand_path('../support/database_access', __FILE__)
4
4
  require File.expand_path('../support/example_isolation', __FILE__)
5
5
  require File.expand_path('../support/test_parameters', __FILE__)
6
6
 
7
+ require 'celluloid/autostart' # for ChangeWatcher specs
7
8
  require 'vcr'
8
9
 
9
10
  RSpec.configure do |config|
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: analysand
3
3
  version: !ruby/object:Gem::Version
4
- version: 2.0.0
4
+ version: 3.0.0
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -9,318 +9,259 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2012-11-29 00:00:00.000000000 Z
12
+ date: 2013-07-08 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
- version_requirements: !ruby/object:Gem::Requirement
16
- requirements:
17
- - - ! '>='
18
- - !ruby/object:Gem::Version
19
- version: '0.12'
20
- none: false
15
+ name: celluloid
21
16
  requirement: !ruby/object:Gem::Requirement
17
+ none: false
22
18
  requirements:
23
- - - ! '>='
19
+ - - ~>
24
20
  - !ruby/object:Gem::Version
25
- version: '0.12'
26
- none: false
27
- name: celluloid
21
+ version: 0.14.0
28
22
  type: :runtime
29
23
  prerelease: false
30
- - !ruby/object:Gem::Dependency
31
24
  version_requirements: !ruby/object:Gem::Requirement
25
+ none: false
32
26
  requirements:
33
- - - ! '>='
27
+ - - ~>
34
28
  - !ruby/object:Gem::Version
35
- version: '0'
36
- none: false
29
+ version: 0.14.0
30
+ - !ruby/object:Gem::Dependency
31
+ name: celluloid-io
37
32
  requirement: !ruby/object:Gem::Requirement
33
+ none: false
38
34
  requirements:
39
35
  - - ! '>='
40
36
  - !ruby/object:Gem::Version
41
37
  version: '0'
42
- none: false
43
- name: celluloid-io
44
38
  type: :runtime
45
39
  prerelease: false
46
- - !ruby/object:Gem::Dependency
47
40
  version_requirements: !ruby/object:Gem::Requirement
41
+ none: false
48
42
  requirements:
49
43
  - - ! '>='
50
44
  - !ruby/object:Gem::Version
51
45
  version: '0'
52
- none: false
46
+ - !ruby/object:Gem::Dependency
47
+ name: http_parser.rb
53
48
  requirement: !ruby/object:Gem::Requirement
49
+ none: false
54
50
  requirements:
55
51
  - - ! '>='
56
52
  - !ruby/object:Gem::Version
57
53
  version: '0'
58
- none: false
59
- name: http_parser.rb
60
54
  type: :runtime
61
55
  prerelease: false
62
- - !ruby/object:Gem::Dependency
63
56
  version_requirements: !ruby/object:Gem::Requirement
57
+ none: false
64
58
  requirements:
65
59
  - - ! '>='
66
60
  - !ruby/object:Gem::Version
67
61
  version: '0'
68
- none: false
62
+ - !ruby/object:Gem::Dependency
63
+ name: json
69
64
  requirement: !ruby/object:Gem::Requirement
65
+ none: false
70
66
  requirements:
71
67
  - - ! '>='
72
68
  - !ruby/object:Gem::Version
73
69
  version: '0'
74
- none: false
75
- name: json
76
70
  type: :runtime
77
71
  prerelease: false
78
- - !ruby/object:Gem::Dependency
79
72
  version_requirements: !ruby/object:Gem::Requirement
73
+ none: false
80
74
  requirements:
81
75
  - - ! '>='
82
76
  - !ruby/object:Gem::Version
83
77
  version: '0'
84
- none: false
78
+ - !ruby/object:Gem::Dependency
79
+ name: json-stream
85
80
  requirement: !ruby/object:Gem::Requirement
81
+ none: false
86
82
  requirements:
87
83
  - - ! '>='
88
84
  - !ruby/object:Gem::Version
89
85
  version: '0'
90
- none: false
91
- name: json-stream
92
86
  type: :runtime
93
87
  prerelease: false
94
- - !ruby/object:Gem::Dependency
95
88
  version_requirements: !ruby/object:Gem::Requirement
89
+ none: false
96
90
  requirements:
97
91
  - - ! '>='
98
92
  - !ruby/object:Gem::Version
99
93
  version: '0'
100
- none: false
94
+ - !ruby/object:Gem::Dependency
95
+ name: net-http-persistent
101
96
  requirement: !ruby/object:Gem::Requirement
97
+ none: false
102
98
  requirements:
103
99
  - - ! '>='
104
100
  - !ruby/object:Gem::Version
105
101
  version: '0'
106
- none: false
107
- name: net-http-persistent
108
102
  type: :runtime
109
103
  prerelease: false
110
- - !ruby/object:Gem::Dependency
111
104
  version_requirements: !ruby/object:Gem::Requirement
105
+ none: false
112
106
  requirements:
113
107
  - - ! '>='
114
108
  - !ruby/object:Gem::Version
115
109
  version: '0'
116
- none: false
110
+ - !ruby/object:Gem::Dependency
111
+ name: rack
117
112
  requirement: !ruby/object:Gem::Requirement
113
+ none: false
118
114
  requirements:
119
115
  - - ! '>='
120
116
  - !ruby/object:Gem::Version
121
117
  version: '0'
122
- none: false
123
- name: rack
124
118
  type: :runtime
125
119
  prerelease: false
126
- - !ruby/object:Gem::Dependency
127
120
  version_requirements: !ruby/object:Gem::Requirement
121
+ none: false
128
122
  requirements:
129
123
  - - ! '>='
130
124
  - !ruby/object:Gem::Version
131
125
  version: '0'
132
- none: false
126
+ - !ruby/object:Gem::Dependency
127
+ name: yajl-ruby
133
128
  requirement: !ruby/object:Gem::Requirement
129
+ none: false
134
130
  requirements:
135
131
  - - ! '>='
136
132
  - !ruby/object:Gem::Version
137
133
  version: '0'
138
- none: false
139
- name: yajl-ruby
140
134
  type: :runtime
141
135
  prerelease: false
142
- - !ruby/object:Gem::Dependency
143
136
  version_requirements: !ruby/object:Gem::Requirement
137
+ none: false
144
138
  requirements:
145
139
  - - ! '>='
146
140
  - !ruby/object:Gem::Version
147
141
  version: '0'
148
- none: false
142
+ - !ruby/object:Gem::Dependency
143
+ name: rake
149
144
  requirement: !ruby/object:Gem::Requirement
145
+ none: false
150
146
  requirements:
151
147
  - - ! '>='
152
148
  - !ruby/object:Gem::Version
153
149
  version: '0'
154
- none: false
155
- name: rake
156
150
  type: :development
157
151
  prerelease: false
158
- - !ruby/object:Gem::Dependency
159
152
  version_requirements: !ruby/object:Gem::Requirement
153
+ none: false
160
154
  requirements:
161
155
  - - ! '>='
162
156
  - !ruby/object:Gem::Version
163
157
  version: '0'
164
- none: false
158
+ - !ruby/object:Gem::Dependency
159
+ name: rspec
165
160
  requirement: !ruby/object:Gem::Requirement
161
+ none: false
166
162
  requirements:
167
163
  - - ! '>='
168
164
  - !ruby/object:Gem::Version
169
165
  version: '0'
170
- none: false
171
- name: rspec
172
166
  type: :development
173
167
  prerelease: false
174
- - !ruby/object:Gem::Dependency
175
168
  version_requirements: !ruby/object:Gem::Requirement
169
+ none: false
176
170
  requirements:
177
171
  - - ! '>='
178
172
  - !ruby/object:Gem::Version
179
173
  version: '0'
180
- none: false
174
+ - !ruby/object:Gem::Dependency
175
+ name: vcr
181
176
  requirement: !ruby/object:Gem::Requirement
177
+ none: false
182
178
  requirements:
183
179
  - - ! '>='
184
180
  - !ruby/object:Gem::Version
185
181
  version: '0'
186
- none: false
187
- name: vcr
188
182
  type: :development
189
183
  prerelease: false
190
- - !ruby/object:Gem::Dependency
191
184
  version_requirements: !ruby/object:Gem::Requirement
185
+ none: false
192
186
  requirements:
193
187
  - - ! '>='
194
188
  - !ruby/object:Gem::Version
195
189
  version: '0'
196
- none: false
190
+ - !ruby/object:Gem::Dependency
191
+ name: webmock
197
192
  requirement: !ruby/object:Gem::Requirement
193
+ none: false
198
194
  requirements:
199
195
  - - ! '>='
200
196
  - !ruby/object:Gem::Version
201
197
  version: '0'
202
- none: false
203
- name: webmock
204
198
  type: :development
205
199
  prerelease: false
200
+ version_requirements: !ruby/object:Gem::Requirement
201
+ none: false
202
+ requirements:
203
+ - - ! '>='
204
+ - !ruby/object:Gem::Version
205
+ version: '0'
206
206
  description: A terrible burden for a couch
207
207
  email:
208
208
  - yipdw@member.fsf.org
209
209
  executables:
210
- - !binary |-
211
- YW5hbHlzYW5k
210
+ - analysand
212
211
  extensions: []
213
212
  extra_rdoc_files: []
214
213
  files:
215
- - !binary |-
216
- LmdpdGlnbm9yZQ==
217
- - !binary |-
218
- LnJzcGVj
219
- - !binary |-
220
- LnRyYXZpcy55bWw=
221
- - !binary |-
222
- Q0hBTkdFTE9H
223
- - !binary |-
224
- R2VtZmlsZQ==
225
- - !binary |-
226
- TElDRU5TRQ==
227
- - !binary |-
228
- UkVBRE1F
229
- - !binary |-
230
- UmFrZWZpbGU=
231
- - !binary |-
232
- YW5hbHlzYW5kLmdlbXNwZWM=
233
- - !binary |-
234
- YmluL2FuYWx5c2FuZA==
235
- - !binary |-
236
- bGliL2FuYWx5c2FuZC5yYg==
237
- - !binary |-
238
- bGliL2FuYWx5c2FuZC9idWxrX3Jlc3BvbnNlLnJi
239
- - !binary |-
240
- bGliL2FuYWx5c2FuZC9jaGFuZ2Vfd2F0Y2hlci5yYg==
241
- - !binary |-
242
- bGliL2FuYWx5c2FuZC9jb25maWdfcmVzcG9uc2UucmI=
243
- - !binary |-
244
- bGliL2FuYWx5c2FuZC9jb25uZWN0aW9uX3Rlc3RpbmcucmI=
245
- - !binary |-
246
- bGliL2FuYWx5c2FuZC9kYXRhYmFzZS5yYg==
247
- - !binary |-
248
- bGliL2FuYWx5c2FuZC9lcnJvcnMucmI=
249
- - !binary |-
250
- bGliL2FuYWx5c2FuZC9odHRwLnJi
251
- - !binary |-
252
- bGliL2FuYWx5c2FuZC9pbnN0YW5jZS5yYg==
253
- - !binary |-
254
- bGliL2FuYWx5c2FuZC9yZWFkaW5nLnJi
255
- - !binary |-
256
- bGliL2FuYWx5c2FuZC9yZXNwb25zZS5yYg==
257
- - !binary |-
258
- bGliL2FuYWx5c2FuZC9yZXNwb25zZV9oZWFkZXJzLnJi
259
- - !binary |-
260
- bGliL2FuYWx5c2FuZC9zZXNzaW9uX3Jlc3BvbnNlLnJi
261
- - !binary |-
262
- bGliL2FuYWx5c2FuZC9zdGF0dXNfY29kZV9wcmVkaWNhdGVzLnJi
263
- - !binary |-
264
- bGliL2FuYWx5c2FuZC9zdHJlYW1pbmdfdmlld19yZXNwb25zZS5yYg==
265
- - !binary |-
266
- bGliL2FuYWx5c2FuZC92ZXJzaW9uLnJi
267
- - !binary |-
268
- bGliL2FuYWx5c2FuZC92aWV3X3Jlc3BvbnNlLnJi
269
- - !binary |-
270
- bGliL2FuYWx5c2FuZC92aWV3X3N0cmVhbWluZy9idWlsZGVyLnJi
271
- - !binary |-
272
- bGliL2FuYWx5c2FuZC92aWV3aW5nLnJi
273
- - !binary |-
274
- bGliL2FuYWx5c2FuZC93cml0aW5nLnJi
275
- - !binary |-
276
- c2NyaXB0L3NldHVwX2RhdGFiYXNlLnJi
277
- - !binary |-
278
- c3BlYy9hbmFseXNhbmQvYV9yZXNwb25zZS5yYg==
279
- - !binary |-
280
- c3BlYy9hbmFseXNhbmQvYV9zZXNzaW9uX2dyYW50b3IucmI=
281
- - !binary |-
282
- c3BlYy9hbmFseXNhbmQvY2hhbmdlX3dhdGNoZXJfc3BlYy5yYg==
283
- - !binary |-
284
- c3BlYy9hbmFseXNhbmQvZGF0YWJhc2Vfc3BlYy5yYg==
285
- - !binary |-
286
- c3BlYy9hbmFseXNhbmQvZGF0YWJhc2Vfd3JpdGluZ19zcGVjLnJi
287
- - !binary |-
288
- c3BlYy9hbmFseXNhbmQvaW5zdGFuY2Vfc3BlYy5yYg==
289
- - !binary |-
290
- c3BlYy9hbmFseXNhbmQvcmVzcG9uc2Vfc3BlYy5yYg==
291
- - !binary |-
292
- c3BlYy9hbmFseXNhbmQvdmlld19yZXNwb25zZV9zcGVjLnJi
293
- - !binary |-
294
- c3BlYy9hbmFseXNhbmQvdmlld19zdHJlYW1pbmcvYnVpbGRlcl9zcGVjLnJi
295
- - !binary |-
296
- c3BlYy9hbmFseXNhbmQvdmlld19zdHJlYW1pbmdfc3BlYy5yYg==
297
- - !binary |-
298
- c3BlYy9maXh0dXJlcy92Y3JfY2Fzc2V0dGVzL2dldF9jb25maWcueW1s
299
- - !binary |-
300
- c3BlYy9maXh0dXJlcy92Y3JfY2Fzc2V0dGVzL2dldF9tYW55X2NvbmZpZy55
301
- bWw=
302
- - !binary |-
303
- c3BlYy9maXh0dXJlcy92Y3JfY2Fzc2V0dGVzL2hlYWRfcmVxdWVzdF93aXRo
304
- X2V0YWcueW1s
305
- - !binary |-
306
- c3BlYy9maXh0dXJlcy92Y3JfY2Fzc2V0dGVzL3JlbG9hZF9jb25maWcueW1s
307
- - !binary |-
308
- c3BlYy9maXh0dXJlcy92Y3JfY2Fzc2V0dGVzL3NldF9jb25maWcueW1s
309
- - !binary |-
310
- c3BlYy9maXh0dXJlcy92Y3JfY2Fzc2V0dGVzL3VuYXV0aG9yaXplZF9zZXRf
311
- Y29uZmlnLnltbA==
312
- - !binary |-
313
- c3BlYy9maXh0dXJlcy92Y3JfY2Fzc2V0dGVzL3ZpZXcueW1s
314
- - !binary |-
315
- c3BlYy9zbW9rZS9kYXRhYmFzZV90aHJlYWRfc3BlYy5yYg==
316
- - !binary |-
317
- c3BlYy9zcGVjX2hlbHBlci5yYg==
318
- - !binary |-
319
- c3BlYy9zdXBwb3J0L2RhdGFiYXNlX2FjY2Vzcy5yYg==
320
- - !binary |-
321
- c3BlYy9zdXBwb3J0L2V4YW1wbGVfaXNvbGF0aW9uLnJi
322
- - !binary |-
323
- c3BlYy9zdXBwb3J0L3Rlc3RfcGFyYW1ldGVycy5yYg==
214
+ - .gitignore
215
+ - .rspec
216
+ - .travis.yml
217
+ - CHANGELOG
218
+ - Gemfile
219
+ - LICENSE
220
+ - README
221
+ - Rakefile
222
+ - analysand.gemspec
223
+ - bin/analysand
224
+ - lib/analysand.rb
225
+ - lib/analysand/bulk_response.rb
226
+ - lib/analysand/change_watcher.rb
227
+ - lib/analysand/config_response.rb
228
+ - lib/analysand/connection_testing.rb
229
+ - lib/analysand/database.rb
230
+ - lib/analysand/errors.rb
231
+ - lib/analysand/http.rb
232
+ - lib/analysand/instance.rb
233
+ - lib/analysand/reading.rb
234
+ - lib/analysand/response.rb
235
+ - lib/analysand/response_headers.rb
236
+ - lib/analysand/session_response.rb
237
+ - lib/analysand/status_code_predicates.rb
238
+ - lib/analysand/streaming_view_response.rb
239
+ - lib/analysand/version.rb
240
+ - lib/analysand/view_response.rb
241
+ - lib/analysand/view_streaming/builder.rb
242
+ - lib/analysand/viewing.rb
243
+ - lib/analysand/writing.rb
244
+ - script/setup_database.rb
245
+ - spec/analysand/a_response.rb
246
+ - spec/analysand/change_watcher_spec.rb
247
+ - spec/analysand/database_spec.rb
248
+ - spec/analysand/database_writing_spec.rb
249
+ - spec/analysand/instance_spec.rb
250
+ - spec/analysand/response_spec.rb
251
+ - spec/analysand/view_response_spec.rb
252
+ - spec/analysand/view_streaming/builder_spec.rb
253
+ - spec/analysand/view_streaming_spec.rb
254
+ - spec/fixtures/vcr_cassettes/get_config.yml
255
+ - spec/fixtures/vcr_cassettes/get_many_config.yml
256
+ - spec/fixtures/vcr_cassettes/head_request_with_etag.yml
257
+ - spec/fixtures/vcr_cassettes/reload_config.yml
258
+ - spec/fixtures/vcr_cassettes/unauthorized_put_config.yml
259
+ - spec/fixtures/vcr_cassettes/view.yml
260
+ - spec/smoke/database_thread_spec.rb
261
+ - spec/spec_helper.rb
262
+ - spec/support/database_access.rb
263
+ - spec/support/example_isolation.rb
264
+ - spec/support/test_parameters.rb
324
265
  homepage: https://github.com/yipdw/analysand
325
266
  licenses: []
326
267
  post_install_message:
@@ -328,68 +269,41 @@ rdoc_options: []
328
269
  require_paths:
329
270
  - lib
330
271
  required_ruby_version: !ruby/object:Gem::Requirement
272
+ none: false
331
273
  requirements:
332
274
  - - ! '>='
333
275
  - !ruby/object:Gem::Version
334
276
  version: '1.9'
335
- none: false
336
277
  required_rubygems_version: !ruby/object:Gem::Requirement
278
+ none: false
337
279
  requirements:
338
280
  - - ! '>='
339
281
  - !ruby/object:Gem::Version
340
282
  version: '0'
341
- none: false
342
283
  requirements: []
343
284
  rubyforge_project:
344
- rubygems_version: 1.8.24
285
+ rubygems_version: 1.8.23
345
286
  signing_key:
346
287
  specification_version: 3
347
288
  summary: A CouchDB client of dubious worth
348
289
  test_files:
349
- - !binary |-
350
- c3BlYy9hbmFseXNhbmQvYV9yZXNwb25zZS5yYg==
351
- - !binary |-
352
- c3BlYy9hbmFseXNhbmQvYV9zZXNzaW9uX2dyYW50b3IucmI=
353
- - !binary |-
354
- c3BlYy9hbmFseXNhbmQvY2hhbmdlX3dhdGNoZXJfc3BlYy5yYg==
355
- - !binary |-
356
- c3BlYy9hbmFseXNhbmQvZGF0YWJhc2Vfc3BlYy5yYg==
357
- - !binary |-
358
- c3BlYy9hbmFseXNhbmQvZGF0YWJhc2Vfd3JpdGluZ19zcGVjLnJi
359
- - !binary |-
360
- c3BlYy9hbmFseXNhbmQvaW5zdGFuY2Vfc3BlYy5yYg==
361
- - !binary |-
362
- c3BlYy9hbmFseXNhbmQvcmVzcG9uc2Vfc3BlYy5yYg==
363
- - !binary |-
364
- c3BlYy9hbmFseXNhbmQvdmlld19yZXNwb25zZV9zcGVjLnJi
365
- - !binary |-
366
- c3BlYy9hbmFseXNhbmQvdmlld19zdHJlYW1pbmcvYnVpbGRlcl9zcGVjLnJi
367
- - !binary |-
368
- c3BlYy9hbmFseXNhbmQvdmlld19zdHJlYW1pbmdfc3BlYy5yYg==
369
- - !binary |-
370
- c3BlYy9maXh0dXJlcy92Y3JfY2Fzc2V0dGVzL2dldF9jb25maWcueW1s
371
- - !binary |-
372
- c3BlYy9maXh0dXJlcy92Y3JfY2Fzc2V0dGVzL2dldF9tYW55X2NvbmZpZy55
373
- bWw=
374
- - !binary |-
375
- c3BlYy9maXh0dXJlcy92Y3JfY2Fzc2V0dGVzL2hlYWRfcmVxdWVzdF93aXRo
376
- X2V0YWcueW1s
377
- - !binary |-
378
- c3BlYy9maXh0dXJlcy92Y3JfY2Fzc2V0dGVzL3JlbG9hZF9jb25maWcueW1s
379
- - !binary |-
380
- c3BlYy9maXh0dXJlcy92Y3JfY2Fzc2V0dGVzL3NldF9jb25maWcueW1s
381
- - !binary |-
382
- c3BlYy9maXh0dXJlcy92Y3JfY2Fzc2V0dGVzL3VuYXV0aG9yaXplZF9zZXRf
383
- Y29uZmlnLnltbA==
384
- - !binary |-
385
- c3BlYy9maXh0dXJlcy92Y3JfY2Fzc2V0dGVzL3ZpZXcueW1s
386
- - !binary |-
387
- c3BlYy9zbW9rZS9kYXRhYmFzZV90aHJlYWRfc3BlYy5yYg==
388
- - !binary |-
389
- c3BlYy9zcGVjX2hlbHBlci5yYg==
390
- - !binary |-
391
- c3BlYy9zdXBwb3J0L2RhdGFiYXNlX2FjY2Vzcy5yYg==
392
- - !binary |-
393
- c3BlYy9zdXBwb3J0L2V4YW1wbGVfaXNvbGF0aW9uLnJi
394
- - !binary |-
395
- c3BlYy9zdXBwb3J0L3Rlc3RfcGFyYW1ldGVycy5yYg==
290
+ - spec/analysand/a_response.rb
291
+ - spec/analysand/change_watcher_spec.rb
292
+ - spec/analysand/database_spec.rb
293
+ - spec/analysand/database_writing_spec.rb
294
+ - spec/analysand/instance_spec.rb
295
+ - spec/analysand/response_spec.rb
296
+ - spec/analysand/view_response_spec.rb
297
+ - spec/analysand/view_streaming/builder_spec.rb
298
+ - spec/analysand/view_streaming_spec.rb
299
+ - spec/fixtures/vcr_cassettes/get_config.yml
300
+ - spec/fixtures/vcr_cassettes/get_many_config.yml
301
+ - spec/fixtures/vcr_cassettes/head_request_with_etag.yml
302
+ - spec/fixtures/vcr_cassettes/reload_config.yml
303
+ - spec/fixtures/vcr_cassettes/unauthorized_put_config.yml
304
+ - spec/fixtures/vcr_cassettes/view.yml
305
+ - spec/smoke/database_thread_spec.rb
306
+ - spec/spec_helper.rb
307
+ - spec/support/database_access.rb
308
+ - spec/support/example_isolation.rb
309
+ - spec/support/test_parameters.rb