rest-assured 0.1.0 → 0.1.1
Sign up to get free protection for your applications and to get access to all the features.
- data/README.markdown +10 -5
- data/bin/rest-assured +4 -0
- data/features/redirect_rules_via_ui.feature +1 -2
- data/features/step_definitions/redirect_rules_steps.rb +2 -0
- data/features/support/env.rb +0 -18
- data/lib/rest-assured.rb +4 -0
- data/lib/rest-assured/config.rb +7 -2
- data/lib/rest-assured/init.rb +11 -0
- data/lib/rest-assured/models/redirect.rb +1 -1
- data/lib/rest-assured/version.rb +1 -1
- metadata +24 -24
data/README.markdown
CHANGED
@@ -13,13 +13,14 @@ There are three main use cases:
|
|
13
13
|
|
14
14
|
You are going to need ruby >= 1.8.7. Install gem and run:
|
15
15
|
|
16
|
-
sudo gem install rest-assured # omit sudo if using rvm
|
17
|
-
rest-assured &
|
16
|
+
avetia01:~% sudo gem install rest-assured # omit sudo if using rvm
|
17
|
+
avetia01:~% rest-assured &
|
18
18
|
|
19
19
|
Or clone from github and run:
|
20
20
|
|
21
|
-
git clone git@github.com:BBC/rest-assured.git
|
22
|
-
|
21
|
+
avetia01:~% git clone git@github.com:BBC/rest-assured.git
|
22
|
+
avetia01:~% cd rest-assured && bundle install # `gem install bundler` if command not found
|
23
|
+
avetia01:~% ./bin/rest-assured &
|
23
24
|
|
24
25
|
This starts an instance of rest-assured on port 4578 (changable with --port option) and creates rest-assured.db (changable with --database option) in the current directory. You can now access it via REST or web interfaces on http://localhost:4578
|
25
26
|
|
@@ -47,7 +48,7 @@ Double is a stub/mock of a particular external call. There is the following rest
|
|
47
48
|
|
48
49
|
### Redirects
|
49
50
|
|
50
|
-
It is sometimes desirable to only double certain calls while letting others through to the 'real' services. Meet Redirects. Kind of "rewrite rules" for requests that didn't match any double. Here is the
|
51
|
+
It is sometimes desirable to only double certain calls while letting others through to the 'real' services. Meet Redirects. Kind of "rewrite rules" for requests that didn't match any double. Here is the rest API for managing redirects:
|
51
52
|
|
52
53
|
* `POST '/redirects', { pattern: pattern, to: uri }` Creates redirect with the following parameters:
|
53
54
|
|
@@ -65,6 +66,10 @@ It is sometimes desirable to only double certain calls while letting others thro
|
|
65
66
|
|
66
67
|
By default when you start rest-assured it creates (unless already exists) sqlite database and stores it into file in the current directory. This is good for using it for development - when you want doubles/redirects to persist across restarts - but may not be so desirable for using with tests, where you want each test run to start from blank slate. For that reason, you can specify `--database :memory:` so that database is kept in memory.
|
67
68
|
|
69
|
+
### Logging
|
70
|
+
|
71
|
+
It is sometimes useful to see what requests rest-assured is being hit. Either to explore what requests your app is making or to check that test setup is right and doubles indeed get returned. By default, when started, rest-assured creates log file in the current directory. This is configurable with `--logfile` option.
|
72
|
+
|
68
73
|
## TODO
|
69
74
|
|
70
75
|
* Implement expectations
|
data/bin/rest-assured
CHANGED
@@ -17,6 +17,10 @@ OptionParser.new do |opts|
|
|
17
17
|
AppConfig[:port] = port
|
18
18
|
end
|
19
19
|
|
20
|
+
opts.on('-l', '--logfile FILENAME', "Path to logfile. Defaults to ./rest-assured.log") do |log_file|
|
21
|
+
AppConfig[:log_file] = log_file
|
22
|
+
end
|
23
|
+
|
20
24
|
opts.on_tail("-h", "--help", "Show this message") do
|
21
25
|
puts opts
|
22
26
|
exit
|
@@ -41,8 +41,7 @@ Feature: manage redirects via ui
|
|
41
41
|
| pattern | to |
|
42
42
|
| /some/remote.* | http://google.com/api |
|
43
43
|
|
44
|
-
|
45
|
-
@javascript @pending
|
44
|
+
@javascript
|
46
45
|
Scenario: reorder redirects
|
47
46
|
Given the following redirects exist:
|
48
47
|
| pattern | to |
|
@@ -57,6 +57,8 @@ When /^I reorder second redirect to be the first one$/ do
|
|
57
57
|
end
|
58
58
|
|
59
59
|
Then /^"([^"]*)" should be redirected to "([^"]*)"$/ do |missing_request, url|
|
60
|
+
pending('This does not pass due to Capybara/Selelium broken drag and drop support')
|
61
|
+
|
60
62
|
get missing_request
|
61
63
|
follow_redirect!
|
62
64
|
|
data/features/support/env.rb
CHANGED
@@ -5,7 +5,6 @@ require 'capybara'
|
|
5
5
|
require 'capybara/firebug'
|
6
6
|
require 'capybara/cucumber'
|
7
7
|
require 'database_cleaner'
|
8
|
-
require 'logger'
|
9
8
|
|
10
9
|
ENV['RACK_ENV'] = 'test'
|
11
10
|
|
@@ -24,23 +23,6 @@ module RackHeaderHack
|
|
24
23
|
end
|
25
24
|
end
|
26
25
|
|
27
|
-
def setup_logger
|
28
|
-
Logger.class_eval do
|
29
|
-
alias_method :write, :<<
|
30
|
-
end
|
31
|
-
|
32
|
-
logger = Logger.new(File.expand_path("../../../test.log", __FILE__))
|
33
|
-
logger.level = Logger::DEBUG
|
34
|
-
|
35
|
-
RestAssured::Application.class_eval do
|
36
|
-
use Rack::CommonLogger, logger
|
37
|
-
end
|
38
|
-
|
39
|
-
ActiveRecord::Base.logger = logger
|
40
|
-
end
|
41
|
-
|
42
|
-
setup_logger
|
43
|
-
|
44
26
|
def app
|
45
27
|
RestAssured::Application
|
46
28
|
end
|
data/lib/rest-assured.rb
CHANGED
data/lib/rest-assured/config.rb
CHANGED
@@ -3,9 +3,14 @@ AppConfig = {
|
|
3
3
|
:environment => ENV['RACK_ENV'] || 'production'
|
4
4
|
}
|
5
5
|
|
6
|
-
AppConfig[:database] =
|
7
|
-
when 'production'
|
6
|
+
AppConfig[:database] = if AppConfig[:environment] == 'production'
|
8
7
|
'./rest-assured.db'
|
9
8
|
else
|
10
9
|
File.expand_path("../../../db/#{AppConfig[:environment]}.db", __FILE__)
|
11
10
|
end
|
11
|
+
|
12
|
+
AppConfig[:log_file] = if AppConfig[:environment] == 'production'
|
13
|
+
'./rest-assured.log'
|
14
|
+
else
|
15
|
+
File.expand_path("../../../#{AppConfig[:environment]}.log", __FILE__)
|
16
|
+
end
|
data/lib/rest-assured/init.rb
CHANGED
@@ -2,6 +2,17 @@ require 'sinatra/activerecord'
|
|
2
2
|
require 'meta_where'
|
3
3
|
require 'rest-assured/config'
|
4
4
|
|
5
|
+
$app_logger = Logger.new(AppConfig[:log_file])
|
6
|
+
$app_logger.level = Logger::DEBUG
|
7
|
+
|
8
|
+
# active record logging is purely internal
|
9
|
+
# thus disabling it for production
|
10
|
+
ActiveRecord::Base.logger = if AppConfig[:environment] == 'production'
|
11
|
+
Logger.new(test('e', '/dev/null') ? '/dev/null' : 'NUL:')
|
12
|
+
else
|
13
|
+
$app_logger
|
14
|
+
end
|
15
|
+
|
5
16
|
ActiveRecord::Base.establish_connection(
|
6
17
|
:adapter => "sqlite3",
|
7
18
|
:database => AppConfig[:database]
|
data/lib/rest-assured/version.rb
CHANGED
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: rest-assured
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.1.
|
4
|
+
version: 0.1.1
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -9,12 +9,12 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date: 2011-09-
|
12
|
+
date: 2011-09-18 00:00:00.000000000 +01:00
|
13
13
|
default_executable:
|
14
14
|
dependencies:
|
15
15
|
- !ruby/object:Gem::Dependency
|
16
16
|
name: sinatra
|
17
|
-
requirement: &
|
17
|
+
requirement: &2168546540 !ruby/object:Gem::Requirement
|
18
18
|
none: false
|
19
19
|
requirements:
|
20
20
|
- - ! '>='
|
@@ -22,10 +22,10 @@ dependencies:
|
|
22
22
|
version: '0'
|
23
23
|
type: :runtime
|
24
24
|
prerelease: false
|
25
|
-
version_requirements: *
|
25
|
+
version_requirements: *2168546540
|
26
26
|
- !ruby/object:Gem::Dependency
|
27
27
|
name: rack-flash
|
28
|
-
requirement: &
|
28
|
+
requirement: &2168545960 !ruby/object:Gem::Requirement
|
29
29
|
none: false
|
30
30
|
requirements:
|
31
31
|
- - ! '>='
|
@@ -33,10 +33,10 @@ dependencies:
|
|
33
33
|
version: '0'
|
34
34
|
type: :runtime
|
35
35
|
prerelease: false
|
36
|
-
version_requirements: *
|
36
|
+
version_requirements: *2168545960
|
37
37
|
- !ruby/object:Gem::Dependency
|
38
38
|
name: haml
|
39
|
-
requirement: &
|
39
|
+
requirement: &2168545440 !ruby/object:Gem::Requirement
|
40
40
|
none: false
|
41
41
|
requirements:
|
42
42
|
- - ! '>='
|
@@ -44,10 +44,10 @@ dependencies:
|
|
44
44
|
version: '0'
|
45
45
|
type: :runtime
|
46
46
|
prerelease: false
|
47
|
-
version_requirements: *
|
47
|
+
version_requirements: *2168545440
|
48
48
|
- !ruby/object:Gem::Dependency
|
49
49
|
name: sass
|
50
|
-
requirement: &
|
50
|
+
requirement: &2168544980 !ruby/object:Gem::Requirement
|
51
51
|
none: false
|
52
52
|
requirements:
|
53
53
|
- - ! '>='
|
@@ -55,10 +55,10 @@ dependencies:
|
|
55
55
|
version: '0'
|
56
56
|
type: :runtime
|
57
57
|
prerelease: false
|
58
|
-
version_requirements: *
|
58
|
+
version_requirements: *2168544980
|
59
59
|
- !ruby/object:Gem::Dependency
|
60
60
|
name: sinatra-static-assets
|
61
|
-
requirement: &
|
61
|
+
requirement: &2168544440 !ruby/object:Gem::Requirement
|
62
62
|
none: false
|
63
63
|
requirements:
|
64
64
|
- - ! '>='
|
@@ -66,10 +66,10 @@ dependencies:
|
|
66
66
|
version: '0'
|
67
67
|
type: :runtime
|
68
68
|
prerelease: false
|
69
|
-
version_requirements: *
|
69
|
+
version_requirements: *2168544440
|
70
70
|
- !ruby/object:Gem::Dependency
|
71
71
|
name: thin
|
72
|
-
requirement: &
|
72
|
+
requirement: &2168536860 !ruby/object:Gem::Requirement
|
73
73
|
none: false
|
74
74
|
requirements:
|
75
75
|
- - ! '>='
|
@@ -77,10 +77,10 @@ dependencies:
|
|
77
77
|
version: '0'
|
78
78
|
type: :runtime
|
79
79
|
prerelease: false
|
80
|
-
version_requirements: *
|
80
|
+
version_requirements: *2168536860
|
81
81
|
- !ruby/object:Gem::Dependency
|
82
82
|
name: activerecord
|
83
|
-
requirement: &
|
83
|
+
requirement: &2168536240 !ruby/object:Gem::Requirement
|
84
84
|
none: false
|
85
85
|
requirements:
|
86
86
|
- - ~>
|
@@ -88,10 +88,10 @@ dependencies:
|
|
88
88
|
version: 3.0.0
|
89
89
|
type: :runtime
|
90
90
|
prerelease: false
|
91
|
-
version_requirements: *
|
91
|
+
version_requirements: *2168536240
|
92
92
|
- !ruby/object:Gem::Dependency
|
93
93
|
name: sinatra-activerecord
|
94
|
-
requirement: &
|
94
|
+
requirement: &2168535700 !ruby/object:Gem::Requirement
|
95
95
|
none: false
|
96
96
|
requirements:
|
97
97
|
- - ! '>='
|
@@ -99,10 +99,10 @@ dependencies:
|
|
99
99
|
version: '0'
|
100
100
|
type: :runtime
|
101
101
|
prerelease: false
|
102
|
-
version_requirements: *
|
102
|
+
version_requirements: *2168535700
|
103
103
|
- !ruby/object:Gem::Dependency
|
104
104
|
name: sqlite3
|
105
|
-
requirement: &
|
105
|
+
requirement: &2168535100 !ruby/object:Gem::Requirement
|
106
106
|
none: false
|
107
107
|
requirements:
|
108
108
|
- - ! '>='
|
@@ -110,10 +110,10 @@ dependencies:
|
|
110
110
|
version: '0'
|
111
111
|
type: :runtime
|
112
112
|
prerelease: false
|
113
|
-
version_requirements: *
|
113
|
+
version_requirements: *2168535100
|
114
114
|
- !ruby/object:Gem::Dependency
|
115
115
|
name: rake
|
116
|
-
requirement: &
|
116
|
+
requirement: &2168534540 !ruby/object:Gem::Requirement
|
117
117
|
none: false
|
118
118
|
requirements:
|
119
119
|
- - ! '>='
|
@@ -121,10 +121,10 @@ dependencies:
|
|
121
121
|
version: '0'
|
122
122
|
type: :runtime
|
123
123
|
prerelease: false
|
124
|
-
version_requirements: *
|
124
|
+
version_requirements: *2168534540
|
125
125
|
- !ruby/object:Gem::Dependency
|
126
126
|
name: meta_where
|
127
|
-
requirement: &
|
127
|
+
requirement: &2168534000 !ruby/object:Gem::Requirement
|
128
128
|
none: false
|
129
129
|
requirements:
|
130
130
|
- - ! '>='
|
@@ -132,7 +132,7 @@ dependencies:
|
|
132
132
|
version: '0'
|
133
133
|
type: :runtime
|
134
134
|
prerelease: false
|
135
|
-
version_requirements: *
|
135
|
+
version_requirements: *2168534000
|
136
136
|
description:
|
137
137
|
email:
|
138
138
|
- artem.avetisyan@bbc.co.uk
|