response_mate 0.1.1

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.
Files changed (46) hide show
  1. checksums.yaml +15 -0
  2. data/.gitignore +15 -0
  3. data/.travis.yml +10 -0
  4. data/Gemfile +5 -0
  5. data/Gemfile.lock +107 -0
  6. data/LICENSE +20 -0
  7. data/README.md +107 -0
  8. data/Rakefile +12 -0
  9. data/bin/response_mate +5 -0
  10. data/environment.yml.sample +4 -0
  11. data/lib/response_mate.rb +43 -0
  12. data/lib/response_mate/cli.rb +58 -0
  13. data/lib/response_mate/commands.rb +1 -0
  14. data/lib/response_mate/commands/base.rb +12 -0
  15. data/lib/response_mate/commands/clear.rb +24 -0
  16. data/lib/response_mate/commands/export.rb +29 -0
  17. data/lib/response_mate/commands/inspect.rb +42 -0
  18. data/lib/response_mate/commands/list.rb +48 -0
  19. data/lib/response_mate/commands/record.rb +27 -0
  20. data/lib/response_mate/commands/setup.rb +24 -0
  21. data/lib/response_mate/connection.rb +36 -0
  22. data/lib/response_mate/core.rb +29 -0
  23. data/lib/response_mate/environment.rb +22 -0
  24. data/lib/response_mate/exporter.rb +18 -0
  25. data/lib/response_mate/exporters/postman.rb +61 -0
  26. data/lib/response_mate/helpers/application.rb +3 -0
  27. data/lib/response_mate/http.rb +41 -0
  28. data/lib/response_mate/inspector.rb +54 -0
  29. data/lib/response_mate/manifest.rb +68 -0
  30. data/lib/response_mate/manifest_parser.rb +7 -0
  31. data/lib/response_mate/oauth.rb +17 -0
  32. data/lib/response_mate/recorder.rb +39 -0
  33. data/lib/response_mate/request.rb +2 -0
  34. data/lib/response_mate/tape.rb +18 -0
  35. data/lib/response_mate/version.rb +3 -0
  36. data/oauth.yml.sample +12 -0
  37. data/requests.yml.sample +16 -0
  38. data/response_mate.gemspec +41 -0
  39. data/roadmap.md +24 -0
  40. data/spec/fixtures/two_keys.yml.erb +8 -0
  41. data/spec/lib/response_mate/cli_spec.rb +108 -0
  42. data/spec/lib/response_mate/core_spec.rb +65 -0
  43. data/spec/lib/response_mate/recorder_spec.rb +103 -0
  44. data/spec/lib/response_mate_spec.rb +7 -0
  45. data/spec/spec_helper.rb +32 -0
  46. metadata +336 -0
@@ -0,0 +1,103 @@
1
+ require 'spec_helper'
2
+
3
+ # TODO: This spec need some love
4
+ describe ResponseMate::Recorder, fakefs: true do
5
+ pending '.initialize' do
6
+ let(:subject) { ResponseMate::Recorder.new }
7
+
8
+ context 'args[:requests_manifest] is present' do
9
+ let(:subject) { ResponseMate::Recorder.new(requests_manifest: 'lala.yml') }
10
+
11
+ it 'assigns @requests_manifest to that argument' do
12
+ expect(subject.requests_manifest).to eq('lala.yml')
13
+ end
14
+ end
15
+
16
+ pending 'args[:requests_manifest] is not present' do
17
+ let(:subject) { ResponseMate::Recorder.new }
18
+
19
+ it 'assigns @requests_manifest to ResponseMate.configuration.requests_manifest' do
20
+ expect(subject.requests_manifest).
21
+ to eq(ResponseMate.configuration.requests_manifest)
22
+ end
23
+ end
24
+
25
+ context 'args[:base_url] is present' do
26
+ let(:subject) { ResponseMate::Recorder.new(base_url: 'http://example.com') }
27
+
28
+ it 'assigns @base_url to that argument' do
29
+ expect(subject.base_url).to eq('http://example.com')
30
+ end
31
+ end
32
+
33
+ context 'args[:base_url] is not present' do
34
+ it 'assigns @base_url to the one found in the manifest' do
35
+ expect(subject.base_url).to eq('http://koko.com')
36
+ end
37
+ end
38
+
39
+ it 'calls #parse_requests_manifest' do
40
+ ResponseMate::Recorder.any_instance.should_receive :parse_requests_manifest
41
+ subject
42
+ end
43
+
44
+ it 'calls #initialize_connection' do
45
+ ResponseMate::Recorder.any_instance.should_receive :initialize_connection
46
+ subject
47
+ end
48
+ end
49
+
50
+ pending '#record', fakefs: false do
51
+ before do
52
+ FakeFS.deactivate!
53
+ FileUtils.cp 'spec/fixtures/two_keys.yml.erb', 'two_keys.yml.erb'
54
+ ResponseMate::Oauth.any_instance.stub(:token).and_return 'some_token'
55
+ end
56
+
57
+ after do
58
+ FileUtils.rm ['two_keys.yml.erb'] + Dir.glob('output/responses/*.yml')
59
+ end
60
+
61
+ let(:subject) { ResponseMate::Recorder.new(requests_manifest: 'two_keys.yml.erb') }
62
+
63
+ describe 'output file' do
64
+ before do
65
+ subject.stub(:fetch).and_return(double(status: 200, headers: 'koko', body: 'foo'))
66
+ subject.record
67
+ end
68
+
69
+ let(:response) { YAML::load_file 'output/responses/one.yml' }
70
+
71
+ it 'is named after the recording key and ends in .yml' do
72
+ expect(Dir.glob('output/responses/*.yml').map { |f| File.basename f }).
73
+ to eq(%w(one.yml two.yml))
74
+ end
75
+
76
+ it 'contains response status' do
77
+ expect(response[:status]).to eq(200)
78
+ end
79
+
80
+ it 'contains response headers' do
81
+ expect(response[:headers]).to eq('koko')
82
+ end
83
+
84
+ it 'contains response body' do
85
+ expect(response[:body]).to eq('foo')
86
+ end
87
+
88
+ describe 'request' do
89
+ it 'contains verb' do
90
+ expect(response[:request][:verb]).to be_present
91
+ end
92
+
93
+ it 'contains path' do
94
+ expect(response[:request][:path]).to be_present
95
+ end
96
+
97
+ it 'contains params' do
98
+ expect(response[:request][:params]).to be_present
99
+ end
100
+ end
101
+ end
102
+ end
103
+ end
@@ -0,0 +1,7 @@
1
+ require 'spec_helper'
2
+
3
+ describe ResponseMate do
4
+ it 'has a version number' do
5
+ expect(ResponseMate::VERSION).to be_present
6
+ end
7
+ end
@@ -0,0 +1,32 @@
1
+ $LOAD_PATH.unshift File.expand_path('../../lib', __FILE__)
2
+ require 'response_mate'
3
+ require 'fakefs/safe'
4
+ require 'fakefs/spec_helpers'
5
+ require 'coveralls'
6
+
7
+ Coveralls.wear!
8
+
9
+ RSpec.configure do |c|
10
+ c.treat_symbols_as_metadata_keys_with_true_values = true
11
+ c.include FakeFS::SpecHelpers, fakefs: true
12
+ c.before(:all) { silence_output }
13
+ c.after(:all) { enable_output }
14
+ end
15
+
16
+ # Redirects stderr and stdout to /dev/null.
17
+ def silence_output
18
+ @orig_stderr = $stderr
19
+ @orig_stdout = $stdout
20
+
21
+ # redirect stderr and stdout to /dev/null
22
+ $stderr = File.new('/dev/null', 'w')
23
+ $stdout = File.new('/dev/null', 'w')
24
+ end
25
+
26
+ # Replace stdout and stderr so anything else is output correctly.
27
+ def enable_output
28
+ $stderr = @orig_stderr
29
+ $stdout = @orig_stdout
30
+ @orig_stderr = nil
31
+ @orig_stdout = nil
32
+ end
metadata ADDED
@@ -0,0 +1,336 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: response_mate
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.1.1
5
+ platform: ruby
6
+ authors:
7
+ - Dimitris Zorbas
8
+ autorequire:
9
+ bindir: bin
10
+ cert_chain: []
11
+ date: 2013-12-30 00:00:00.000000000 Z
12
+ dependencies:
13
+ - !ruby/object:Gem::Dependency
14
+ type: :development
15
+ prerelease: false
16
+ name: bundler
17
+ requirement: !ruby/object:Gem::Requirement
18
+ requirements:
19
+ - - ~>
20
+ - !ruby/object:Gem::Version
21
+ version: '1.3'
22
+ version_requirements: !ruby/object:Gem::Requirement
23
+ requirements:
24
+ - - ~>
25
+ - !ruby/object:Gem::Version
26
+ version: '1.3'
27
+ - !ruby/object:Gem::Dependency
28
+ type: :development
29
+ prerelease: false
30
+ name: rake
31
+ requirement: !ruby/object:Gem::Requirement
32
+ requirements:
33
+ - - ! '>='
34
+ - !ruby/object:Gem::Version
35
+ version: '0'
36
+ version_requirements: !ruby/object:Gem::Requirement
37
+ requirements:
38
+ - - ! '>='
39
+ - !ruby/object:Gem::Version
40
+ version: '0'
41
+ - !ruby/object:Gem::Dependency
42
+ type: :development
43
+ prerelease: false
44
+ name: pry
45
+ requirement: !ruby/object:Gem::Requirement
46
+ requirements:
47
+ - - ! '>='
48
+ - !ruby/object:Gem::Version
49
+ version: '0'
50
+ version_requirements: !ruby/object:Gem::Requirement
51
+ requirements:
52
+ - - ! '>='
53
+ - !ruby/object:Gem::Version
54
+ version: '0'
55
+ - !ruby/object:Gem::Dependency
56
+ type: :development
57
+ prerelease: false
58
+ name: pry-remote
59
+ requirement: !ruby/object:Gem::Requirement
60
+ requirements:
61
+ - - ! '>='
62
+ - !ruby/object:Gem::Version
63
+ version: '0'
64
+ version_requirements: !ruby/object:Gem::Requirement
65
+ requirements:
66
+ - - ! '>='
67
+ - !ruby/object:Gem::Version
68
+ version: '0'
69
+ - !ruby/object:Gem::Dependency
70
+ type: :development
71
+ prerelease: false
72
+ name: pry-nav
73
+ requirement: !ruby/object:Gem::Requirement
74
+ requirements:
75
+ - - ! '>='
76
+ - !ruby/object:Gem::Version
77
+ version: '0'
78
+ version_requirements: !ruby/object:Gem::Requirement
79
+ requirements:
80
+ - - ! '>='
81
+ - !ruby/object:Gem::Version
82
+ version: '0'
83
+ - !ruby/object:Gem::Dependency
84
+ type: :development
85
+ prerelease: false
86
+ name: rspec
87
+ requirement: !ruby/object:Gem::Requirement
88
+ requirements:
89
+ - - ~>
90
+ - !ruby/object:Gem::Version
91
+ version: '2.14'
92
+ version_requirements: !ruby/object:Gem::Requirement
93
+ requirements:
94
+ - - ~>
95
+ - !ruby/object:Gem::Version
96
+ version: '2.14'
97
+ - !ruby/object:Gem::Dependency
98
+ type: :development
99
+ prerelease: false
100
+ name: fakefs
101
+ requirement: !ruby/object:Gem::Requirement
102
+ requirements:
103
+ - - ! '>='
104
+ - !ruby/object:Gem::Version
105
+ version: '0'
106
+ version_requirements: !ruby/object:Gem::Requirement
107
+ requirements:
108
+ - - ! '>='
109
+ - !ruby/object:Gem::Version
110
+ version: '0'
111
+ - !ruby/object:Gem::Dependency
112
+ type: :development
113
+ prerelease: false
114
+ name: rubocop
115
+ requirement: !ruby/object:Gem::Requirement
116
+ requirements:
117
+ - - ! '>='
118
+ - !ruby/object:Gem::Version
119
+ version: '0'
120
+ version_requirements: !ruby/object:Gem::Requirement
121
+ requirements:
122
+ - - ! '>='
123
+ - !ruby/object:Gem::Version
124
+ version: '0'
125
+ - !ruby/object:Gem::Dependency
126
+ type: :runtime
127
+ prerelease: false
128
+ name: thor
129
+ requirement: !ruby/object:Gem::Requirement
130
+ requirements:
131
+ - - ~>
132
+ - !ruby/object:Gem::Version
133
+ version: 0.18.1
134
+ version_requirements: !ruby/object:Gem::Requirement
135
+ requirements:
136
+ - - ~>
137
+ - !ruby/object:Gem::Version
138
+ version: 0.18.1
139
+ - !ruby/object:Gem::Dependency
140
+ type: :runtime
141
+ prerelease: false
142
+ name: awesome_print
143
+ requirement: !ruby/object:Gem::Requirement
144
+ requirements:
145
+ - - ! '>='
146
+ - !ruby/object:Gem::Version
147
+ version: '0'
148
+ version_requirements: !ruby/object:Gem::Requirement
149
+ requirements:
150
+ - - ! '>='
151
+ - !ruby/object:Gem::Version
152
+ version: '0'
153
+ - !ruby/object:Gem::Dependency
154
+ type: :runtime
155
+ prerelease: false
156
+ name: activesupport
157
+ requirement: !ruby/object:Gem::Requirement
158
+ requirements:
159
+ - - ! '>='
160
+ - !ruby/object:Gem::Version
161
+ version: '0'
162
+ version_requirements: !ruby/object:Gem::Requirement
163
+ requirements:
164
+ - - ! '>='
165
+ - !ruby/object:Gem::Version
166
+ version: '0'
167
+ - !ruby/object:Gem::Dependency
168
+ type: :runtime
169
+ prerelease: false
170
+ name: colored
171
+ requirement: !ruby/object:Gem::Requirement
172
+ requirements:
173
+ - - ! '>='
174
+ - !ruby/object:Gem::Version
175
+ version: '0'
176
+ version_requirements: !ruby/object:Gem::Requirement
177
+ requirements:
178
+ - - ! '>='
179
+ - !ruby/object:Gem::Version
180
+ version: '0'
181
+ - !ruby/object:Gem::Dependency
182
+ type: :runtime
183
+ prerelease: false
184
+ name: faraday
185
+ requirement: !ruby/object:Gem::Requirement
186
+ requirements:
187
+ - - ! '>='
188
+ - !ruby/object:Gem::Version
189
+ version: '0'
190
+ version_requirements: !ruby/object:Gem::Requirement
191
+ requirements:
192
+ - - ! '>='
193
+ - !ruby/object:Gem::Version
194
+ version: '0'
195
+ - !ruby/object:Gem::Dependency
196
+ type: :runtime
197
+ prerelease: false
198
+ name: faraday_middleware
199
+ requirement: !ruby/object:Gem::Requirement
200
+ requirements:
201
+ - - ! '>='
202
+ - !ruby/object:Gem::Version
203
+ version: '0'
204
+ version_requirements: !ruby/object:Gem::Requirement
205
+ requirements:
206
+ - - ! '>='
207
+ - !ruby/object:Gem::Version
208
+ version: '0'
209
+ - !ruby/object:Gem::Dependency
210
+ type: :runtime
211
+ prerelease: false
212
+ name: addressable
213
+ requirement: !ruby/object:Gem::Requirement
214
+ requirements:
215
+ - - ! '>='
216
+ - !ruby/object:Gem::Version
217
+ version: '0'
218
+ version_requirements: !ruby/object:Gem::Requirement
219
+ requirements:
220
+ - - ! '>='
221
+ - !ruby/object:Gem::Version
222
+ version: '0'
223
+ - !ruby/object:Gem::Dependency
224
+ type: :runtime
225
+ prerelease: false
226
+ name: highline
227
+ requirement: !ruby/object:Gem::Requirement
228
+ requirements:
229
+ - - ! '>='
230
+ - !ruby/object:Gem::Version
231
+ version: '0'
232
+ version_requirements: !ruby/object:Gem::Requirement
233
+ requirements:
234
+ - - ! '>='
235
+ - !ruby/object:Gem::Version
236
+ version: '0'
237
+ - !ruby/object:Gem::Dependency
238
+ type: :runtime
239
+ prerelease: false
240
+ name: mustache
241
+ requirement: !ruby/object:Gem::Requirement
242
+ requirements:
243
+ - - ! '>='
244
+ - !ruby/object:Gem::Version
245
+ version: '0'
246
+ version_requirements: !ruby/object:Gem::Requirement
247
+ requirements:
248
+ - - ! '>='
249
+ - !ruby/object:Gem::Version
250
+ version: '0'
251
+ description: ! ' Cli tool to make inspecting and recording HTTP requests fun again
252
+
253
+ '
254
+ email:
255
+ - zorbash@skroutz.gr
256
+ executables:
257
+ - response_mate
258
+ extensions: []
259
+ extra_rdoc_files: []
260
+ files:
261
+ - .gitignore
262
+ - .travis.yml
263
+ - Gemfile
264
+ - Gemfile.lock
265
+ - LICENSE
266
+ - README.md
267
+ - Rakefile
268
+ - bin/response_mate
269
+ - environment.yml.sample
270
+ - lib/response_mate.rb
271
+ - lib/response_mate/cli.rb
272
+ - lib/response_mate/commands.rb
273
+ - lib/response_mate/commands/base.rb
274
+ - lib/response_mate/commands/clear.rb
275
+ - lib/response_mate/commands/export.rb
276
+ - lib/response_mate/commands/inspect.rb
277
+ - lib/response_mate/commands/list.rb
278
+ - lib/response_mate/commands/record.rb
279
+ - lib/response_mate/commands/setup.rb
280
+ - lib/response_mate/connection.rb
281
+ - lib/response_mate/core.rb
282
+ - lib/response_mate/environment.rb
283
+ - lib/response_mate/exporter.rb
284
+ - lib/response_mate/exporters/postman.rb
285
+ - lib/response_mate/helpers/application.rb
286
+ - lib/response_mate/http.rb
287
+ - lib/response_mate/inspector.rb
288
+ - lib/response_mate/manifest.rb
289
+ - lib/response_mate/manifest_parser.rb
290
+ - lib/response_mate/oauth.rb
291
+ - lib/response_mate/recorder.rb
292
+ - lib/response_mate/request.rb
293
+ - lib/response_mate/tape.rb
294
+ - lib/response_mate/version.rb
295
+ - oauth.yml.sample
296
+ - requests.yml.sample
297
+ - response_mate.gemspec
298
+ - roadmap.md
299
+ - spec/fixtures/two_keys.yml.erb
300
+ - spec/lib/response_mate/cli_spec.rb
301
+ - spec/lib/response_mate/core_spec.rb
302
+ - spec/lib/response_mate/recorder_spec.rb
303
+ - spec/lib/response_mate_spec.rb
304
+ - spec/spec_helper.rb
305
+ homepage: ''
306
+ licenses:
307
+ - MIT
308
+ metadata: {}
309
+ post_install_message:
310
+ rdoc_options: []
311
+ require_paths:
312
+ - lib
313
+ required_ruby_version: !ruby/object:Gem::Requirement
314
+ requirements:
315
+ - - ! '>='
316
+ - !ruby/object:Gem::Version
317
+ version: '0'
318
+ required_rubygems_version: !ruby/object:Gem::Requirement
319
+ requirements:
320
+ - - ! '>='
321
+ - !ruby/object:Gem::Version
322
+ version: '0'
323
+ requirements: []
324
+ rubyforge_project:
325
+ rubygems_version: 2.1.9
326
+ signing_key:
327
+ specification_version: 4
328
+ summary: ''
329
+ test_files:
330
+ - spec/fixtures/two_keys.yml.erb
331
+ - spec/lib/response_mate/cli_spec.rb
332
+ - spec/lib/response_mate/core_spec.rb
333
+ - spec/lib/response_mate/recorder_spec.rb
334
+ - spec/lib/response_mate_spec.rb
335
+ - spec/spec_helper.rb
336
+ has_rdoc: