rest-assured 0.1.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (67) hide show
  1. data/.gitignore +7 -0
  2. data/Gemfile +17 -0
  3. data/LICENSE +22 -0
  4. data/README.markdown +78 -0
  5. data/Rakefile +4 -0
  6. data/bin/console +12 -0
  7. data/bin/rest-assured +28 -0
  8. data/cucumber.yml +3 -0
  9. data/db/migrate/20110620161740_add_fixtures.rb +12 -0
  10. data/db/migrate/20110625155332_add_redirects_table.rb +12 -0
  11. data/db/migrate/20110709150645_add_description_to_fixtures.rb +9 -0
  12. data/db/migrate/20110807222522_add_active_bit_to_fixtures.rb +9 -0
  13. data/db/migrate/20110818155555_add_position_to_redirects.rb +9 -0
  14. data/db/migrate/20110823132023_add_method_to_fixtures.rb +9 -0
  15. data/db/migrate/20110912162948_rename_url_to_fullpath.rb +9 -0
  16. data/db/migrate/20110912163705_rename_fixtures_to_doubles.rb +9 -0
  17. data/features/doubles_via_api.feature +50 -0
  18. data/features/doubles_via_ui.feature +66 -0
  19. data/features/persistence.feature +24 -0
  20. data/features/redirect_rules_via_api.feature +29 -0
  21. data/features/redirect_rules_via_ui.feature +68 -0
  22. data/features/step_definitions/doubles_steps.rb +143 -0
  23. data/features/step_definitions/persistence_steps.rb +13 -0
  24. data/features/step_definitions/redirect_rules_steps.rb +64 -0
  25. data/features/step_definitions/support/numeric_transforms.rb +3 -0
  26. data/features/support/env.rb +71 -0
  27. data/lib/rest-assured.rb +66 -0
  28. data/lib/rest-assured/config.rb +11 -0
  29. data/lib/rest-assured/init.rb +12 -0
  30. data/lib/rest-assured/models/double.rb +30 -0
  31. data/lib/rest-assured/models/redirect.rb +37 -0
  32. data/lib/rest-assured/routes/double.rb +77 -0
  33. data/lib/rest-assured/routes/redirect.rb +71 -0
  34. data/lib/rest-assured/version.rb +3 -0
  35. data/lib/sinatra/partials.rb +18 -0
  36. data/public/css/grid.inuit.css +76 -0
  37. data/public/css/inuit.css +904 -0
  38. data/public/css/jquery.jgrowl.css +132 -0
  39. data/public/css/style.css +88 -0
  40. data/public/img/css/12-grid-720.png +0 -0
  41. data/public/img/css/12-grid.png +0 -0
  42. data/public/img/css/baseline.gif +0 -0
  43. data/public/img/css/grid-720.png +0 -0
  44. data/public/img/css/grid.png +0 -0
  45. data/public/img/css/icons/error.png +0 -0
  46. data/public/img/css/icons/info.png +0 -0
  47. data/public/img/css/icons/success.png +0 -0
  48. data/public/img/css/icons/warning.png +0 -0
  49. data/public/javascript/application.js +12 -0
  50. data/public/javascript/jquery.jgrowl_minimized.js +11 -0
  51. data/rest-assured.gemspec +36 -0
  52. data/spec/functional/double_routes_spec.rb +117 -0
  53. data/spec/functional/redirect_routes_spec.rb +108 -0
  54. data/spec/models/double_spec.rb +73 -0
  55. data/spec/models/redirect_spec.rb +38 -0
  56. data/spec/spec_helper.rb +47 -0
  57. data/views/base.scss +11 -0
  58. data/views/doubles/_form.haml +16 -0
  59. data/views/doubles/edit.haml +4 -0
  60. data/views/doubles/index.haml +41 -0
  61. data/views/doubles/new.haml +3 -0
  62. data/views/layout.haml +25 -0
  63. data/views/redirects/_form.haml +11 -0
  64. data/views/redirects/edit.haml +4 -0
  65. data/views/redirects/index.haml +33 -0
  66. data/views/redirects/new.haml +3 -0
  67. metadata +250 -0
@@ -0,0 +1,73 @@
1
+ require File.expand_path('../../spec_helper', __FILE__)
2
+
3
+ describe Double do
4
+ let :valid_params do
5
+ { :fullpath => '/some/api', :content => 'some content', :method => 'GET' }
6
+ end
7
+
8
+ it { should validate_presence_of(:fullpath) }
9
+ it { should validate_presence_of(:content) }
10
+ #it { should ensure_inclusion_of(:method).in(Double::METHODS) }
11
+
12
+ it "defaults method to GET" do
13
+ f = Double.create valid_params.except(:method)
14
+ f.method.should == 'GET'
15
+ end
16
+
17
+ it "makes double active by default" do
18
+ f = Double.create valid_params.except(:active)
19
+ f.active.should be true
20
+ end
21
+
22
+ describe 'when created' do
23
+ it "toggles active double for the same fullpath" do
24
+ f1 = Double.create valid_params
25
+ f2 = Double.create valid_params
26
+ f3 = Double.create valid_params.merge(:fullpath => '/some/other/api')
27
+
28
+ f1.reload.active.should be false
29
+ f3.reload.active.should be true
30
+ end
31
+ end
32
+
33
+ describe 'when saved' do
34
+ it "toggles active double for the same fullpath" do
35
+ f1 = Double.create valid_params
36
+ f2 = Double.create valid_params
37
+ f3 = Double.create valid_params.merge(:fullpath => '/some/other/api')
38
+
39
+ f1.active = true
40
+ f1.save
41
+
42
+ f2.reload.active.should be false
43
+ f3.reload.active.should be true
44
+ end
45
+
46
+ it "makes other doubles inactive only when active bit set to true" do
47
+ f1 = Double.create valid_params
48
+ f2 = Double.create valid_params
49
+ f3 = Double.create valid_params.merge(:fullpath => '/some/other/api')
50
+
51
+ f1.reload.save
52
+ f2.reload.save
53
+
54
+ f1.reload.active.should be false
55
+ f2.reload.active.should be true
56
+ f3.reload.active.should be true
57
+ end
58
+ end
59
+
60
+ describe 'when destroying' do
61
+ context 'active double' do
62
+ it "makes another double for the same fullpath active" do
63
+ f1 = Double.create valid_params
64
+ f2 = Double.create valid_params
65
+ f3 = Double.create valid_params.merge(:fullpath => '/some/other/api')
66
+
67
+ f2.destroy
68
+ f1.reload.active.should be true
69
+ f3.reload.active.should be true
70
+ end
71
+ end
72
+ end
73
+ end
@@ -0,0 +1,38 @@
1
+ require File.expand_path('../../spec_helper', __FILE__)
2
+
3
+ describe Redirect do
4
+ # this is solely to get through 'Can't find first XXX' shoulda crap
5
+ #before do
6
+ #Redirect.create :pattern => 'sdfsdf', :to => 'sdfsffdf'
7
+ #end
8
+
9
+ it { should validate_presence_of(:pattern) }
10
+ it { should validate_presence_of(:to) }
11
+ # commented out since it doesn't work with :allow_blank => true
12
+ #it { should validate_uniqueness_of(:position) }
13
+
14
+ it 'assigns incremental position on create' do
15
+ r1 = Redirect.create :pattern => '.*', :to => 'someurl'
16
+ r1.position.should == 0
17
+
18
+ r2 = Redirect.create :pattern => '.*', :to => 'someurl'
19
+ r2.position.should == 1
20
+
21
+ r2.position = 4
22
+ r2.save
23
+
24
+ r3 = Redirect.create :pattern => '.*', :to => 'someurl'
25
+ r3.position.should == 5
26
+ end
27
+
28
+ it 'updates order (with which redirects picked up for matching request)' do
29
+ r1 = Redirect.create :pattern => '.*', :to => 'somewhere', :position => 0
30
+ r2 = Redirect.create :pattern => '.*', :to => 'somewhere', :position => 1
31
+
32
+ Redirect.update_order([r2.id, r1.id]).should be true
33
+ r1.reload.position.should == 1
34
+ r2.reload.position.should == 0
35
+
36
+ Redirect.update_order([nil, 34]).should == false
37
+ end
38
+ end
@@ -0,0 +1,47 @@
1
+ ENV['RACK_ENV'] = 'test'
2
+
3
+ require 'rubygems'
4
+ require File.expand_path('../../lib/rest-assured', __FILE__)
5
+ require 'rspec'
6
+ require 'shoulda-matchers'
7
+ require 'capybara/rspec'
8
+ require 'rack/test'
9
+ require 'database_cleaner'
10
+
11
+ Capybara.app = RestAssured::Application
12
+
13
+ def app
14
+ RestAssured::Application
15
+ end
16
+
17
+ DatabaseCleaner.strategy = :truncation
18
+
19
+ module XhrHelpers
20
+ def xhr(path, params = {})
21
+ verb = params.delete(:as) || :get
22
+ send(verb,path, params, "HTTP_X_REQUESTED_WITH" => "XMLHttpRequest")
23
+ end
24
+ alias_method :ajax, :xhr
25
+ end
26
+
27
+ RSpec.configure do |c|
28
+ c.include Capybara::DSL
29
+ c.include Rack::Test::Methods
30
+ c.include XhrHelpers
31
+
32
+ c.before(:each) do
33
+ DatabaseCleaner.start
34
+ end
35
+
36
+ c.after(:each) do
37
+ DatabaseCleaner.clean
38
+ end
39
+
40
+ c.before(:each, :ui => true) do
41
+ header 'User-Agent', 'Firefox'
42
+ end
43
+
44
+ c.before(:each, :ui => false) do
45
+ header 'User-Agent', nil
46
+ end
47
+ end
@@ -0,0 +1,11 @@
1
+ .wide {
2
+ width: 100%;
3
+ }
4
+
5
+ .white-space-nowrap {
6
+ white-space: nowrap;
7
+ }
8
+
9
+ .nav {
10
+ font-size: 1.4em;
11
+ }
@@ -0,0 +1,16 @@
1
+ %p
2
+ %label{:for => 'double_fullpath'} Request fullpath*
3
+ %input.wide#double_fullpath{:type => 'text', :name => 'double[fullpath]', :value => @double.fullpath}
4
+
5
+ %p
6
+ %label{:for => 'double_content'} Content*
7
+ %textarea.wide#double_content{:name => 'double[content]', :rows => 10}= @double.content
8
+
9
+ %p
10
+ %label{:for => 'double_description'} Description
11
+ %textarea.wide#double_description{:name => 'double[description]', :rows => 3}= @double.description
12
+
13
+ %p
14
+ %input{:type => 'submit', :value => 'Save'}
15
+ |
16
+ %a{:href => 'javascript:history.back()'} back
@@ -0,0 +1,4 @@
1
+ %h2 Edit Double
2
+ %form{:action => "/doubles/#{@double.id}", :method => 'post'}
3
+ %input{:type => 'hidden', :name => '_method', :value => 'put'}
4
+ = partial :'doubles/form'
@@ -0,0 +1,41 @@
1
+ %h2 Doubles index
2
+ %a= link_to 'New double', '/doubles/new'
3
+ %table
4
+ %thead
5
+ %tr
6
+ %th Request fullpath
7
+ %th Description
8
+ %th Active?
9
+ %th  
10
+ %tbody
11
+ - @doubles.group_by {|f| f.fullpath}.each do |fullpath, fs|
12
+ - fs.each_with_index do |f, i|
13
+ %tr{:id => "double_row_#{f.id}"}
14
+ - if i == 0
15
+ %td{:rowspan => fs.size}= fullpath
16
+ %td= f.description
17
+ %td.label.text-center
18
+ %input.active-double-toggle{:type => 'radio', :name => fullpath, :checked => f.active, :data => { :double_id => f.id }}
19
+ %td.edit-link.text-center.white-space-nowrap
20
+ = link_to 'Edit', "/doubles/#{f.id}/edit"
21
+ |
22
+ %a.delete_link{:href => "/doubles/#{f.id}"} Delete
23
+
24
+ :javascript
25
+ $(function() {
26
+ $('td.label').click(function() {
27
+ $('input', this).click();
28
+ });
29
+
30
+ $('input.active-double-toggle').click(function(e) {
31
+ e.stopPropagation();
32
+
33
+ $.post(
34
+ '/doubles/' + this.getAttribute('data-double_id'),
35
+ { _method: 'put', active: 't' },
36
+ function(data) {
37
+ $.jGrowl(data);
38
+ }
39
+ );
40
+ });
41
+ });
@@ -0,0 +1,3 @@
1
+ %h2 New Double
2
+ %form{:action => '/doubles', :method => 'post'}
3
+ = partial :'doubles/form'
@@ -0,0 +1,25 @@
1
+ !!!
2
+ %html
3
+ %head
4
+ %title= request.path_info[1..-1] + ' - REST assured'
5
+ = stylesheet_link_tag '/css/inuit.css'
6
+ = stylesheet_link_tag '/css/grid.inuit.css'
7
+ = stylesheet_link_tag '/css/base.css'
8
+ = stylesheet_link_tag '/css/jquery.jgrowl.css'
9
+ = stylesheet_link_tag 'http://ajax.googleapis.com/ajax/libs/jqueryui/1.8.15/themes/base/jquery-ui.css'
10
+ = javascript_script_tag 'http://ajax.googleapis.com/ajax/libs/jquery/1.6.2/jquery.min.js'
11
+ = javascript_script_tag 'https://ajax.googleapis.com/ajax/libs/jqueryui/1.8.15/jquery-ui.min.js'
12
+ = javascript_script_tag '/javascript/jquery.jgrowl_minimized.js'
13
+ = javascript_script_tag '/javascript/application.js'
14
+ %body.wrapper
15
+ %ul.nav
16
+ %li= link_to 'Doubles', '/doubles'
17
+ %li |
18
+ %li= link_to 'Redirects', '/redirects'
19
+
20
+ - if flash[:notice]
21
+ .message.success= flash[:notice]
22
+ - elsif flash[:error]
23
+ .message.error= flash[:error]
24
+
25
+ = yield
@@ -0,0 +1,11 @@
1
+ %p
2
+ %label{:for => 'redirect_pattern'} Pattern*
3
+ %input.wide#redirect_pattern{:type => 'text', :name => 'redirect[pattern]', :value => @redirect.pattern}
4
+ %p
5
+ %label{:for => 'redirect_to'} Redirect to*
6
+ %input.wide#redirect_to{:type => 'text', :name => 'redirect[to]', :value => @redirect.to}
7
+
8
+ %p
9
+ %input{:type => 'submit', :value => 'Save'}
10
+ |
11
+ %a{:href => 'javascript:history.back()'} back
@@ -0,0 +1,4 @@
1
+ %h2 Edit Redirect
2
+ %form{:action => "/redirects/#{@redirect.id}", :method => 'post'}
3
+ %input{:type => 'hidden', :name => '_method', :value => 'put'}
4
+ = partial :'redirects/form'
@@ -0,0 +1,33 @@
1
+ %h2 Redirects index
2
+ %a= link_to 'New redirect', '/redirects/new'
3
+ %table#redirects
4
+ %thead
5
+ %tr
6
+ %th D&D to reorder
7
+ %th Pattern
8
+ %th Redirect to
9
+ %th  
10
+ %tbody
11
+ - @redirects.each do |r|
12
+ %tr{:id => "redirect_#{r.id}"}
13
+ %td.text-center.handle
14
+ %span.ui-icon.ui-icon-arrowthick-2-n-s
15
+ %td= r.pattern
16
+ %td= r.to
17
+ %td.edit-link.text-center.white-space-nowrap
18
+ = link_to 'Edit', "/redirects/#{r.id}/edit"
19
+ |
20
+ %a.delete_link{:href => "/redirects/#{r.id}"} Delete
21
+
22
+ :javascript
23
+ $(function() {
24
+ $('#redirects tbody').sortable({
25
+ handle: 'td.handle',
26
+ cursors: 'crosshair',
27
+ stop: function() {
28
+ $.post('/redirects/reorder', $(this).sortable('serialize') + '&_method=put', function(data) {
29
+ $.jGrowl(data);
30
+ });
31
+ }
32
+ });
33
+ });
@@ -0,0 +1,3 @@
1
+ %h2 New Redirect
2
+ %form{:action => '/redirects', :method => 'post'}
3
+ = partial :'redirects/form'
metadata ADDED
@@ -0,0 +1,250 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: rest-assured
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.1.0
5
+ prerelease:
6
+ platform: ruby
7
+ authors:
8
+ - Artem Avetisyan
9
+ autorequire:
10
+ bindir: bin
11
+ cert_chain: []
12
+ date: 2011-09-13 00:00:00.000000000 +01:00
13
+ default_executable:
14
+ dependencies:
15
+ - !ruby/object:Gem::Dependency
16
+ name: sinatra
17
+ requirement: &2156510480 !ruby/object:Gem::Requirement
18
+ none: false
19
+ requirements:
20
+ - - ! '>='
21
+ - !ruby/object:Gem::Version
22
+ version: '0'
23
+ type: :runtime
24
+ prerelease: false
25
+ version_requirements: *2156510480
26
+ - !ruby/object:Gem::Dependency
27
+ name: rack-flash
28
+ requirement: &2156509960 !ruby/object:Gem::Requirement
29
+ none: false
30
+ requirements:
31
+ - - ! '>='
32
+ - !ruby/object:Gem::Version
33
+ version: '0'
34
+ type: :runtime
35
+ prerelease: false
36
+ version_requirements: *2156509960
37
+ - !ruby/object:Gem::Dependency
38
+ name: haml
39
+ requirement: &2156509480 !ruby/object:Gem::Requirement
40
+ none: false
41
+ requirements:
42
+ - - ! '>='
43
+ - !ruby/object:Gem::Version
44
+ version: '0'
45
+ type: :runtime
46
+ prerelease: false
47
+ version_requirements: *2156509480
48
+ - !ruby/object:Gem::Dependency
49
+ name: sass
50
+ requirement: &2156509060 !ruby/object:Gem::Requirement
51
+ none: false
52
+ requirements:
53
+ - - ! '>='
54
+ - !ruby/object:Gem::Version
55
+ version: '0'
56
+ type: :runtime
57
+ prerelease: false
58
+ version_requirements: *2156509060
59
+ - !ruby/object:Gem::Dependency
60
+ name: sinatra-static-assets
61
+ requirement: &2156508480 !ruby/object:Gem::Requirement
62
+ none: false
63
+ requirements:
64
+ - - ! '>='
65
+ - !ruby/object:Gem::Version
66
+ version: '0'
67
+ type: :runtime
68
+ prerelease: false
69
+ version_requirements: *2156508480
70
+ - !ruby/object:Gem::Dependency
71
+ name: thin
72
+ requirement: &2156508000 !ruby/object:Gem::Requirement
73
+ none: false
74
+ requirements:
75
+ - - ! '>='
76
+ - !ruby/object:Gem::Version
77
+ version: '0'
78
+ type: :runtime
79
+ prerelease: false
80
+ version_requirements: *2156508000
81
+ - !ruby/object:Gem::Dependency
82
+ name: activerecord
83
+ requirement: &2156507460 !ruby/object:Gem::Requirement
84
+ none: false
85
+ requirements:
86
+ - - ~>
87
+ - !ruby/object:Gem::Version
88
+ version: 3.0.0
89
+ type: :runtime
90
+ prerelease: false
91
+ version_requirements: *2156507460
92
+ - !ruby/object:Gem::Dependency
93
+ name: sinatra-activerecord
94
+ requirement: &2156495140 !ruby/object:Gem::Requirement
95
+ none: false
96
+ requirements:
97
+ - - ! '>='
98
+ - !ruby/object:Gem::Version
99
+ version: '0'
100
+ type: :runtime
101
+ prerelease: false
102
+ version_requirements: *2156495140
103
+ - !ruby/object:Gem::Dependency
104
+ name: sqlite3
105
+ requirement: &2156494680 !ruby/object:Gem::Requirement
106
+ none: false
107
+ requirements:
108
+ - - ! '>='
109
+ - !ruby/object:Gem::Version
110
+ version: '0'
111
+ type: :runtime
112
+ prerelease: false
113
+ version_requirements: *2156494680
114
+ - !ruby/object:Gem::Dependency
115
+ name: rake
116
+ requirement: &2156494260 !ruby/object:Gem::Requirement
117
+ none: false
118
+ requirements:
119
+ - - ! '>='
120
+ - !ruby/object:Gem::Version
121
+ version: '0'
122
+ type: :runtime
123
+ prerelease: false
124
+ version_requirements: *2156494260
125
+ - !ruby/object:Gem::Dependency
126
+ name: meta_where
127
+ requirement: &2156493720 !ruby/object:Gem::Requirement
128
+ none: false
129
+ requirements:
130
+ - - ! '>='
131
+ - !ruby/object:Gem::Version
132
+ version: '0'
133
+ type: :runtime
134
+ prerelease: false
135
+ version_requirements: *2156493720
136
+ description:
137
+ email:
138
+ - artem.avetisyan@bbc.co.uk
139
+ executables:
140
+ - rest-assured
141
+ extensions: []
142
+ extra_rdoc_files: []
143
+ files:
144
+ - .gitignore
145
+ - Gemfile
146
+ - LICENSE
147
+ - README.markdown
148
+ - Rakefile
149
+ - bin/console
150
+ - bin/rest-assured
151
+ - cucumber.yml
152
+ - db/migrate/20110620161740_add_fixtures.rb
153
+ - db/migrate/20110625155332_add_redirects_table.rb
154
+ - db/migrate/20110709150645_add_description_to_fixtures.rb
155
+ - db/migrate/20110807222522_add_active_bit_to_fixtures.rb
156
+ - db/migrate/20110818155555_add_position_to_redirects.rb
157
+ - db/migrate/20110823132023_add_method_to_fixtures.rb
158
+ - db/migrate/20110912162948_rename_url_to_fullpath.rb
159
+ - db/migrate/20110912163705_rename_fixtures_to_doubles.rb
160
+ - features/doubles_via_api.feature
161
+ - features/doubles_via_ui.feature
162
+ - features/persistence.feature
163
+ - features/redirect_rules_via_api.feature
164
+ - features/redirect_rules_via_ui.feature
165
+ - features/step_definitions/doubles_steps.rb
166
+ - features/step_definitions/persistence_steps.rb
167
+ - features/step_definitions/redirect_rules_steps.rb
168
+ - features/step_definitions/support/numeric_transforms.rb
169
+ - features/support/env.rb
170
+ - lib/rest-assured.rb
171
+ - lib/rest-assured/config.rb
172
+ - lib/rest-assured/init.rb
173
+ - lib/rest-assured/models/double.rb
174
+ - lib/rest-assured/models/redirect.rb
175
+ - lib/rest-assured/routes/double.rb
176
+ - lib/rest-assured/routes/redirect.rb
177
+ - lib/rest-assured/version.rb
178
+ - lib/sinatra/partials.rb
179
+ - public/css/grid.inuit.css
180
+ - public/css/inuit.css
181
+ - public/css/jquery.jgrowl.css
182
+ - public/css/style.css
183
+ - public/img/css/12-grid-720.png
184
+ - public/img/css/12-grid.png
185
+ - public/img/css/baseline.gif
186
+ - public/img/css/grid-720.png
187
+ - public/img/css/grid.png
188
+ - public/img/css/icons/error.png
189
+ - public/img/css/icons/info.png
190
+ - public/img/css/icons/success.png
191
+ - public/img/css/icons/warning.png
192
+ - public/javascript/application.js
193
+ - public/javascript/jquery.jgrowl_minimized.js
194
+ - rest-assured.gemspec
195
+ - spec/functional/double_routes_spec.rb
196
+ - spec/functional/redirect_routes_spec.rb
197
+ - spec/models/double_spec.rb
198
+ - spec/models/redirect_spec.rb
199
+ - spec/spec_helper.rb
200
+ - views/base.scss
201
+ - views/doubles/_form.haml
202
+ - views/doubles/edit.haml
203
+ - views/doubles/index.haml
204
+ - views/doubles/new.haml
205
+ - views/layout.haml
206
+ - views/redirects/_form.haml
207
+ - views/redirects/edit.haml
208
+ - views/redirects/index.haml
209
+ - views/redirects/new.haml
210
+ has_rdoc: true
211
+ homepage: https://github.com/BBC/rest-assured
212
+ licenses: []
213
+ post_install_message:
214
+ rdoc_options: []
215
+ require_paths:
216
+ - lib
217
+ required_ruby_version: !ruby/object:Gem::Requirement
218
+ none: false
219
+ requirements:
220
+ - - ! '>='
221
+ - !ruby/object:Gem::Version
222
+ version: 1.8.7
223
+ required_rubygems_version: !ruby/object:Gem::Requirement
224
+ none: false
225
+ requirements:
226
+ - - ! '>='
227
+ - !ruby/object:Gem::Version
228
+ version: '0'
229
+ requirements: []
230
+ rubyforge_project: rest-assured
231
+ rubygems_version: 1.6.2
232
+ signing_key:
233
+ specification_version: 3
234
+ summary: A tool for high level mocking/stubbing HTTP based REST services
235
+ test_files:
236
+ - features/doubles_via_api.feature
237
+ - features/doubles_via_ui.feature
238
+ - features/persistence.feature
239
+ - features/redirect_rules_via_api.feature
240
+ - features/redirect_rules_via_ui.feature
241
+ - features/step_definitions/doubles_steps.rb
242
+ - features/step_definitions/persistence_steps.rb
243
+ - features/step_definitions/redirect_rules_steps.rb
244
+ - features/step_definitions/support/numeric_transforms.rb
245
+ - features/support/env.rb
246
+ - spec/functional/double_routes_spec.rb
247
+ - spec/functional/redirect_routes_spec.rb
248
+ - spec/models/double_spec.rb
249
+ - spec/models/redirect_spec.rb
250
+ - spec/spec_helper.rb