form_stalker 1.0.0

Sign up to get free protection for your applications and to get access to all the features.
@@ -0,0 +1,52 @@
1
+ ---
2
+ http_interactions:
3
+ - request:
4
+ method: get
5
+ uri: https://www.formstack.com/api/v2/form/1.json?oauth_token=
6
+ body:
7
+ encoding: US-ASCII
8
+ string: ''
9
+ headers:
10
+ Accept-Encoding:
11
+ - gzip;q=1.0,deflate;q=0.6,identity;q=0.3
12
+ Accept:
13
+ - "*/*"
14
+ User-Agent:
15
+ - Ruby
16
+ Host:
17
+ - www.formstack.com
18
+ response:
19
+ status:
20
+ code: 401
21
+ message: Unauthorized
22
+ headers:
23
+ Content-Type:
24
+ - text/html; charset=UTF-8
25
+ Date:
26
+ - Fri, 29 Jul 2016 14:10:09 GMT
27
+ P3p:
28
+ - CP="CURa ADMa DEVa PSAo PSDo OUR BUS UNI PUR INT DEM STA PRE COM NAV OTC NOI
29
+ DSP COR"
30
+ Server:
31
+ - nginx
32
+ Set-Cookie:
33
+ - FormstackAdmin=j6qsj5ic07b4mc6hjl5ajrgs20; path=/api/; secure; HttpOnly
34
+ - rgisanonymous=false; expires=Sun, 28-Aug-2016 14:10:09 GMT; Max-Age=2592000
35
+ - rgisanonymous=true; expires=Sun, 28-Aug-2016 14:10:09 GMT; Max-Age=2592000
36
+ - rguserid=ab9075e5-0ad0-4463-966b-38209e9005dd; expires=Sun, 28-Aug-2016 14:10:09
37
+ GMT; Max-Age=2592000
38
+ - rguuid=true; expires=Sun, 28-Aug-2016 14:10:09 GMT; Max-Age=2592000
39
+ Www-Authenticate:
40
+ - Bearer realm='Service', error='invalid_token'
41
+ X-Robots-Tag:
42
+ - noindex, nofollow
43
+ Content-Length:
44
+ - '0'
45
+ Connection:
46
+ - keep-alive
47
+ body:
48
+ encoding: UTF-8
49
+ string: ''
50
+ http_version:
51
+ recorded_at: Fri, 29 Jul 2016 14:10:09 GMT
52
+ recorded_with: VCR 3.0.3
@@ -0,0 +1,92 @@
1
+ require 'spec_helper'
2
+
3
+ describe FormStalker::Client do
4
+ describe '.new' do
5
+ context 'when sending configuration options' do
6
+ let(:client) { described_class.new(oauth_token: '123') }
7
+
8
+ it 'client.config.oauth_token should reflect that initialization' do
9
+ expect(client.config.oauth_token).to eq '123'
10
+ end
11
+ end
12
+
13
+ context 'when sending a Config instance' do
14
+ let(:client) do
15
+ described_class.new(FormStalker::Config.new(oauth_token: '1234'))
16
+ end
17
+
18
+ it 'client.config.oauth_token should reflect that initialization' do
19
+ expect(client.config.oauth_token).to eq '1234'
20
+ end
21
+ end
22
+ end
23
+
24
+ describe '.form' do
25
+ before(:all) do
26
+ @client ||= described_class.new(oauth_token: valid_oauth_token)
27
+ end
28
+
29
+ context 'when sending a valid id' do
30
+ before do
31
+ VCR.use_cassette('form_valid_id') do
32
+ @response = @client.form('2178204')
33
+ end
34
+ end
35
+
36
+ it '@response should have data' do
37
+ expect(@response.data).to be_an_instance_of FormStalker::Data::Form
38
+ end
39
+
40
+ it '@response should NOT have an error' do
41
+ expect(@response.error).to be_nil
42
+ end
43
+ end
44
+
45
+ context 'when sending an invalid id' do
46
+ before do
47
+ VCR.use_cassette('form_invalid_id') do
48
+ @response = @client.form(-1)
49
+ end
50
+ end
51
+
52
+ it '@response should have an error' do
53
+ expect(@response.error).to eq 'The form was not found'
54
+ end
55
+ end
56
+ end
57
+
58
+ describe '.form_fields' do
59
+ before(:all) do
60
+ @client ||= described_class.new(oauth_token: valid_oauth_token)
61
+ end
62
+
63
+ context 'when sending a valid id' do
64
+ before do
65
+ VCR.use_cassette('form_fields_valid_id') do
66
+ @response = @client.form_fields('2178204')
67
+ end
68
+ end
69
+
70
+ it '@response should have data' do
71
+ expect(@response.data[0]).to \
72
+ be_an_instance_of FormStalker::Data::FormField
73
+ end
74
+
75
+ it '@response should NOT have an error' do
76
+ expect(@response.error).to be_nil
77
+ end
78
+ end
79
+
80
+ context 'when sending an invalid id' do
81
+ before do
82
+ VCR.use_cassette('form_fields_invalid_id') do
83
+ @response = @client.form_fields(-1)
84
+ end
85
+ end
86
+
87
+ it '@response should have an error' do
88
+ expect(@response.error).to eq 'A valid form id was not supplied'
89
+ end
90
+ end
91
+ end
92
+ end
@@ -0,0 +1,53 @@
1
+ require 'spec_helper'
2
+
3
+ describe FormStalker do
4
+ describe '.configure' do
5
+ context 'when setting the "config.oauth_token"' do
6
+ before do
7
+ FormStalker.configure { |config| config.oauth_token = '123' }
8
+ end
9
+ after do
10
+ FormStalker.configure { |config| config.oauth_token = nil }
11
+ end
12
+
13
+ it 'FormStalker.config.oauth_token should reflect that change' do
14
+ expect(FormStalker.config.oauth_token).to eq '123'
15
+ end
16
+
17
+ context 'when setting the "config.oauth_token" yet again' do
18
+ before do
19
+ FormStalker.configure { |config| config.oauth_token = '1234' }
20
+ end
21
+ after do
22
+ FormStalker.configure { |config| config.oauth_token = nil }
23
+ end
24
+
25
+ it 'FormStalker.config.oauth_token should reflect that change' do
26
+ expect(FormStalker.config.oauth_token).to eq '1234'
27
+ end
28
+ end
29
+ end
30
+ end
31
+
32
+ describe '.config' do
33
+ context 'when setting the #oauth_token' do
34
+ before { FormStalker.config.oauth_token = '123' }
35
+ after { FormStalker.config.oauth_token = nil }
36
+
37
+ it 'FormStalker.client.config.oauth_token should reflect that change' do
38
+ expect(FormStalker.client.config.oauth_token).to eq '123'
39
+ end
40
+ end
41
+ end
42
+
43
+ describe '.client' do
44
+ context 'when setting the #config.oauth_token' do
45
+ before { FormStalker.client.config.oauth_token = '123' }
46
+ after { FormStalker.client.config.oauth_token = nil }
47
+
48
+ it 'FormStalker.config.oauth_token should reflect that change' do
49
+ expect(FormStalker.config.oauth_token).to eq '123'
50
+ end
51
+ end
52
+ end
53
+ end
@@ -0,0 +1,22 @@
1
+ require 'spec_helper'
2
+
3
+ describe FormStalker::Request do
4
+ describe '.get' do
5
+ context 'when using an invalid oauth_token' do
6
+ let(:bad_connection) { FormStalker::Connection.new({}) }
7
+ let(:request) { described_class.new(bad_connection) }
8
+
9
+ before do
10
+ VCR.use_cassette('invalid_oauth_token') do
11
+ @response = request.get('form/1.json')
12
+ end
13
+ end
14
+
15
+ it '@response should have an error' do
16
+ expect(@response.error).to eq \
17
+ 'Either your oauth token is invalid ' \
18
+ "or you don't have access to this resource"
19
+ end
20
+ end
21
+ end
22
+ end
@@ -0,0 +1,34 @@
1
+ require 'codeclimate-test-reporter'
2
+
3
+ CodeClimate::TestReporter.start
4
+
5
+ require 'simplecov'
6
+
7
+ SimpleCov.start do
8
+ root('lib/')
9
+ coverage_dir('../tmp/coverage/')
10
+ end
11
+
12
+ $LOAD_PATH << File.expand_path('../', File.dirname(__FILE__))
13
+
14
+ require 'pry'
15
+ require 'vcr'
16
+ require 'form_stalker'
17
+ require 'webmock/rspec'
18
+
19
+ Dir['./spec/**/support/**/*.rb'].each do |file|
20
+ require file
21
+ end
22
+
23
+ VCR.configure do |config|
24
+ config.hook_into :webmock
25
+ config.cassette_library_dir = 'spec/fixtures/vcr_cassettes'
26
+ end
27
+
28
+ RSpec.configure do |config|
29
+ config.include Helpers
30
+
31
+ config.run_all_when_everything_filtered = true
32
+
33
+ config.order = 'random'
34
+ end
@@ -0,0 +1,9 @@
1
+ module Helpers
2
+ def valid_oauth_token
3
+ ENV['FORMSTACK_OAUTH_TOKEN'] || 'valid_oauth_token'
4
+ end
5
+
6
+ def invalid_oauth_token
7
+ 'invalid_oauth_token'
8
+ end
9
+ end
metadata ADDED
@@ -0,0 +1,196 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: form_stalker
3
+ version: !ruby/object:Gem::Version
4
+ version: 1.0.0
5
+ platform: ruby
6
+ authors:
7
+ - StreetBees Dev Team
8
+ autorequire:
9
+ bindir: bin
10
+ cert_chain: []
11
+ date: 2016-07-29 00:00:00.000000000 Z
12
+ dependencies:
13
+ - !ruby/object:Gem::Dependency
14
+ name: vcr
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - '='
18
+ - !ruby/object:Gem::Version
19
+ version: 3.0.3
20
+ type: :development
21
+ prerelease: false
22
+ version_requirements: !ruby/object:Gem::Requirement
23
+ requirements:
24
+ - - '='
25
+ - !ruby/object:Gem::Version
26
+ version: 3.0.3
27
+ - !ruby/object:Gem::Dependency
28
+ name: pry
29
+ requirement: !ruby/object:Gem::Requirement
30
+ requirements:
31
+ - - '='
32
+ - !ruby/object:Gem::Version
33
+ version: 0.10.3
34
+ type: :development
35
+ prerelease: false
36
+ version_requirements: !ruby/object:Gem::Requirement
37
+ requirements:
38
+ - - '='
39
+ - !ruby/object:Gem::Version
40
+ version: 0.10.3
41
+ - !ruby/object:Gem::Dependency
42
+ name: rake
43
+ requirement: !ruby/object:Gem::Requirement
44
+ requirements:
45
+ - - '='
46
+ - !ruby/object:Gem::Version
47
+ version: 11.2.2
48
+ type: :development
49
+ prerelease: false
50
+ version_requirements: !ruby/object:Gem::Requirement
51
+ requirements:
52
+ - - '='
53
+ - !ruby/object:Gem::Version
54
+ version: 11.2.2
55
+ - !ruby/object:Gem::Dependency
56
+ name: rspec
57
+ requirement: !ruby/object:Gem::Requirement
58
+ requirements:
59
+ - - '='
60
+ - !ruby/object:Gem::Version
61
+ version: 3.4.0
62
+ type: :development
63
+ prerelease: false
64
+ version_requirements: !ruby/object:Gem::Requirement
65
+ requirements:
66
+ - - '='
67
+ - !ruby/object:Gem::Version
68
+ version: 3.4.0
69
+ - !ruby/object:Gem::Dependency
70
+ name: webmock
71
+ requirement: !ruby/object:Gem::Requirement
72
+ requirements:
73
+ - - '='
74
+ - !ruby/object:Gem::Version
75
+ version: 2.1.0
76
+ type: :development
77
+ prerelease: false
78
+ version_requirements: !ruby/object:Gem::Requirement
79
+ requirements:
80
+ - - '='
81
+ - !ruby/object:Gem::Version
82
+ version: 2.1.0
83
+ - !ruby/object:Gem::Dependency
84
+ name: rubocop
85
+ requirement: !ruby/object:Gem::Requirement
86
+ requirements:
87
+ - - '='
88
+ - !ruby/object:Gem::Version
89
+ version: 0.37.2
90
+ type: :development
91
+ prerelease: false
92
+ version_requirements: !ruby/object:Gem::Requirement
93
+ requirements:
94
+ - - '='
95
+ - !ruby/object:Gem::Version
96
+ version: 0.37.2
97
+ - !ruby/object:Gem::Dependency
98
+ name: simplecov
99
+ requirement: !ruby/object:Gem::Requirement
100
+ requirements:
101
+ - - '='
102
+ - !ruby/object:Gem::Version
103
+ version: 0.11.2
104
+ type: :development
105
+ prerelease: false
106
+ version_requirements: !ruby/object:Gem::Requirement
107
+ requirements:
108
+ - - '='
109
+ - !ruby/object:Gem::Version
110
+ version: 0.11.2
111
+ - !ruby/object:Gem::Dependency
112
+ name: codeclimate-test-reporter
113
+ requirement: !ruby/object:Gem::Requirement
114
+ requirements:
115
+ - - '='
116
+ - !ruby/object:Gem::Version
117
+ version: 0.4.8
118
+ type: :development
119
+ prerelease: false
120
+ version_requirements: !ruby/object:Gem::Requirement
121
+ requirements:
122
+ - - '='
123
+ - !ruby/object:Gem::Version
124
+ version: 0.4.8
125
+ description: Ruby FormStack API gem that can extract conditional logic
126
+ email: dev@streetbees.com
127
+ executables: []
128
+ extensions: []
129
+ extra_rdoc_files: []
130
+ files:
131
+ - ".gitignore"
132
+ - ".rspec"
133
+ - ".rubocop.yml"
134
+ - ".ruby-version"
135
+ - ".travis.yml"
136
+ - Gemfile
137
+ - Gemfile.lock
138
+ - LICENSE
139
+ - README.md
140
+ - Rakefile
141
+ - form_stalker.gemspec
142
+ - lib/form_stalker.rb
143
+ - lib/form_stalker/client.rb
144
+ - lib/form_stalker/config.rb
145
+ - lib/form_stalker/connection.rb
146
+ - lib/form_stalker/data/base.rb
147
+ - lib/form_stalker/data/form.rb
148
+ - lib/form_stalker/data/form_field.rb
149
+ - lib/form_stalker/request.rb
150
+ - lib/form_stalker/response.rb
151
+ - lib/form_stalker/version.rb
152
+ - spec/fixtures/vcr_cassettes/form_fields_invalid_id.yml
153
+ - spec/fixtures/vcr_cassettes/form_fields_valid_id.yml
154
+ - spec/fixtures/vcr_cassettes/form_invalid_id.yml
155
+ - spec/fixtures/vcr_cassettes/form_valid_id.yml
156
+ - spec/fixtures/vcr_cassettes/invalid_oauth_token.yml
157
+ - spec/form_stalker/client_spec.rb
158
+ - spec/form_stalker/form_stalker_spec.rb
159
+ - spec/form_stalker/request_spec.rb
160
+ - spec/spec_helper.rb
161
+ - spec/support/helpers.rb
162
+ homepage: https://github.com/streetbees/form-stalker
163
+ licenses:
164
+ - MIT
165
+ metadata: {}
166
+ post_install_message:
167
+ rdoc_options: []
168
+ require_paths:
169
+ - lib
170
+ required_ruby_version: !ruby/object:Gem::Requirement
171
+ requirements:
172
+ - - ">="
173
+ - !ruby/object:Gem::Version
174
+ version: '0'
175
+ required_rubygems_version: !ruby/object:Gem::Requirement
176
+ requirements:
177
+ - - ">="
178
+ - !ruby/object:Gem::Version
179
+ version: '0'
180
+ requirements: []
181
+ rubyforge_project:
182
+ rubygems_version: 2.5.1
183
+ signing_key:
184
+ specification_version: 4
185
+ summary: FormStack API client that can extract conditional logic
186
+ test_files:
187
+ - spec/fixtures/vcr_cassettes/form_fields_invalid_id.yml
188
+ - spec/fixtures/vcr_cassettes/form_fields_valid_id.yml
189
+ - spec/fixtures/vcr_cassettes/form_invalid_id.yml
190
+ - spec/fixtures/vcr_cassettes/form_valid_id.yml
191
+ - spec/fixtures/vcr_cassettes/invalid_oauth_token.yml
192
+ - spec/form_stalker/client_spec.rb
193
+ - spec/form_stalker/form_stalker_spec.rb
194
+ - spec/form_stalker/request_spec.rb
195
+ - spec/spec_helper.rb
196
+ - spec/support/helpers.rb