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.
@@ -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
- ./rest-assured/bin/rest-assured &
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 resp API for managing redirects:
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
@@ -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
- # XXX This does not pass due to Capybara/Selelium broken drag and drop support
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
 
@@ -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
@@ -19,7 +19,11 @@ module RestAssured
19
19
 
20
20
  enable :method_override
21
21
 
22
+ Logger.class_eval do
23
+ alias_method :write, :<<
24
+ end
22
25
  enable :logging
26
+ use Rack::CommonLogger, $app_logger
23
27
 
24
28
  enable :sessions
25
29
  use Rack::Flash, :sweep => true
@@ -3,9 +3,14 @@ AppConfig = {
3
3
  :environment => ENV['RACK_ENV'] || 'production'
4
4
  }
5
5
 
6
- AppConfig[:database] = case AppConfig[:environment]
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
@@ -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]
@@ -1,5 +1,5 @@
1
1
  class Redirect < ActiveRecord::Base
2
- attr_accessible :pattern, :to
2
+ attr_accessible :pattern, :to, :position
3
3
 
4
4
  validates_presence_of :pattern, :to
5
5
  validates_uniqueness_of :position, :allow_blank => true
@@ -1,3 +1,3 @@
1
1
  module RestAssured
2
- VERSION = '0.1.0'
2
+ VERSION = '0.1.1'
3
3
  end
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.0
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-13 00:00:00.000000000 +01:00
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: &2156510480 !ruby/object:Gem::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: *2156510480
25
+ version_requirements: *2168546540
26
26
  - !ruby/object:Gem::Dependency
27
27
  name: rack-flash
28
- requirement: &2156509960 !ruby/object:Gem::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: *2156509960
36
+ version_requirements: *2168545960
37
37
  - !ruby/object:Gem::Dependency
38
38
  name: haml
39
- requirement: &2156509480 !ruby/object:Gem::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: *2156509480
47
+ version_requirements: *2168545440
48
48
  - !ruby/object:Gem::Dependency
49
49
  name: sass
50
- requirement: &2156509060 !ruby/object:Gem::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: *2156509060
58
+ version_requirements: *2168544980
59
59
  - !ruby/object:Gem::Dependency
60
60
  name: sinatra-static-assets
61
- requirement: &2156508480 !ruby/object:Gem::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: *2156508480
69
+ version_requirements: *2168544440
70
70
  - !ruby/object:Gem::Dependency
71
71
  name: thin
72
- requirement: &2156508000 !ruby/object:Gem::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: *2156508000
80
+ version_requirements: *2168536860
81
81
  - !ruby/object:Gem::Dependency
82
82
  name: activerecord
83
- requirement: &2156507460 !ruby/object:Gem::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: *2156507460
91
+ version_requirements: *2168536240
92
92
  - !ruby/object:Gem::Dependency
93
93
  name: sinatra-activerecord
94
- requirement: &2156495140 !ruby/object:Gem::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: *2156495140
102
+ version_requirements: *2168535700
103
103
  - !ruby/object:Gem::Dependency
104
104
  name: sqlite3
105
- requirement: &2156494680 !ruby/object:Gem::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: *2156494680
113
+ version_requirements: *2168535100
114
114
  - !ruby/object:Gem::Dependency
115
115
  name: rake
116
- requirement: &2156494260 !ruby/object:Gem::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: *2156494260
124
+ version_requirements: *2168534540
125
125
  - !ruby/object:Gem::Dependency
126
126
  name: meta_where
127
- requirement: &2156493720 !ruby/object:Gem::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: *2156493720
135
+ version_requirements: *2168534000
136
136
  description:
137
137
  email:
138
138
  - artem.avetisyan@bbc.co.uk