analysand 2.0.0 → 3.0.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.
@@ -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