rest-assured 0.2.0.rc7 → 0.2.0.rc8

Sign up to get free protection for your applications and to get access to all the features.
@@ -1,12 +1,11 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- rest-assured (0.2.0.rc6)
4
+ rest-assured (0.2.0.rc7)
5
5
  activerecord (~> 3.1.0)
6
6
  activeresource (~> 3.1.0)
7
7
  haml (>= 3.1.3)
8
8
  rack-flash (>= 0.1.2)
9
- sass (>= 3.1.8)
10
9
  sinatra (>= 1.3.1)
11
10
 
12
11
  GEM
@@ -96,7 +95,6 @@ GEM
96
95
  ruby-debug-base (0.10.4)
97
96
  linecache (>= 0.3)
98
97
  rubyzip (0.9.4)
99
- sass (3.1.10)
100
98
  selenium-webdriver (2.9.1)
101
99
  childprocess (>= 0.2.1)
102
100
  ffi (= 1.0.9)
@@ -104,9 +102,9 @@ GEM
104
102
  rubyzip
105
103
  shoulda-matchers (1.0.0.beta3)
106
104
  sinatra (1.3.1)
107
- rack (>= 1.3.4, ~> 1.3)
108
- rack-protection (>= 1.1.2, ~> 1.1)
109
- tilt (>= 1.3.3, ~> 1.3)
105
+ rack (~> 1.3, >= 1.3.4)
106
+ rack-protection (~> 1.1, >= 1.1.2)
107
+ tilt (~> 1.3, >= 1.3.3)
110
108
  sinatra-activerecord (0.1.3)
111
109
  sinatra (>= 0.9.4)
112
110
  spoon (0.0.1)
@@ -6,39 +6,58 @@ require 'rubygems'
6
6
  require 'optparse'
7
7
  require 'rest-assured/config'
8
8
 
9
+ user_opts = {}
10
+
9
11
  OptionParser.new do |opts|
10
12
  opts.banner = "Usage: rest-assured [options]"
11
13
 
12
14
  opts.on('-a', '--adapter mysql|sqlite') do |adapter|
13
- AppConfig[:adapter] = adapter
15
+ user_opts[:adapter] = adapter
16
+ end
17
+
18
+ opts.on('-d', '--database FILENAME', "Either path to database file (sqlite, defaults to ./rest-assured.db) or db name (defaults to rest_assured)") do |fname|
19
+ user_opts[:database] = fname
14
20
  end
15
21
 
16
- opts.on('-d', '--database FILENAME', "Path to database file. Defaults to ./rest-assured.db. There is a special value ':memory:' for in memory database.") do |fname|
17
- AppConfig[:database] = fname
22
+ opts.on('-u', '--dbuser DBUSER', "Db username (mysql only)") do |user|
23
+ user_opts[:user] = user
18
24
  end
19
25
 
20
- opts.on('--user', "Db username") do |uname|
21
- AppConfig[:db_user] = uname
26
+ opts.on('--dbpass DBPASSWORD', 'Db password (mysql only). Defaults to empty') do |password|
27
+ user_opts[:dbpass] = password
22
28
  end
23
29
 
24
- opts.on('--password', 'Db password') do |password|
25
- AppConfig[:db_password] = password
30
+ opts.on('--dbhost DBHOST', 'Db host (mysql only). Defaults to mysql default host (localhost)') do |dbhost|
31
+ user_opts[:dbhost] = dbhost
32
+ end
33
+
34
+ opts.on('--dbport DBPORT', Integer, 'Db port (mysql only). Defaults to mysql default port (3306)') do |dbport|
35
+ user_opts[:dbport] = dbport
36
+ end
37
+
38
+ opts.on('--dbencoding DBENCODING', 'Db encoding (mysql only). Defaults to mysql default encoding') do |dbencoding|
39
+ user_opts[:dbencoding] = dbencoding
40
+ end
41
+
42
+ opts.on('--dbsocket DBSOCKET', 'Db socket (mysql only). Defaults to mysql default socket') do |dbsocket|
43
+ user_opts[:dbsocket] = dbsocket
26
44
  end
27
45
 
28
46
  opts.on('-p', '--port PORT', Integer, "Server port. Defaults to 4578") do |port|
29
- AppConfig[:port] = port
47
+ user_opts[:port] = port
30
48
  end
31
49
 
32
- opts.on('-l', '--logfile FILENAME', "Path to logfile. Defaults to ./rest-assured.log") do |log_file|
33
- AppConfig[:log_file] = log_file
50
+ opts.on('-l', '--logfile FILENAME', "Path to logfile. Defaults to ./rest-assured.log") do |logfile|
51
+ user_opts[:logfile] = logfile
34
52
  end
35
53
 
36
- opts.on_tail("-h", "--help", "Show this message") do
54
+ opts.on_tail("--help", "Show this message") do
37
55
  puts opts
38
56
  exit
39
57
  end
40
58
  end.parse!
41
59
 
42
- require 'rest-assured'
60
+ RestAssured::Config.build(user_opts)
43
61
 
62
+ require 'rest-assured'
44
63
  RestAssured::Application.run!
@@ -8,7 +8,6 @@ Feature: check double's call history
8
8
  When I request call history for that double
9
9
  Then it should be empty
10
10
 
11
- @now
12
11
  Scenario: some calls made to double
13
12
  Given there is a double
14
13
  When that double gets requested
@@ -0,0 +1,55 @@
1
+ Feature: command line options
2
+ In order to run rest-assured in different configurations (db params, port, etc)
3
+ As test developer
4
+ I need a way to specify those configurations.
5
+
6
+ Scenario Outline: specifying server port
7
+ When I start rest-assured with <option>
8
+ Then it should run on port <port>
9
+
10
+ Examples:
11
+ | option | port |
12
+ | -p 1234 | 1234 |
13
+ | --port 1235 | 1235 |
14
+ | | 4578 |
15
+
16
+ Scenario Outline: specifying log file
17
+ When I start rest-assured with <option>
18
+ Then the log file should be <logfile>
19
+
20
+ Examples:
21
+ | option | logfile |
22
+ | -l /tmp/rest-assured.log | /tmp/rest-assured.log |
23
+ | --logfile ./test.log | ./test.log |
24
+ | | ./rest-assured.log |
25
+
26
+ Scenario Outline: sqlite options
27
+ When I start rest-assured with <options>
28
+ Then database adapter should be sqlite and db file should be <dbfile>
29
+
30
+ Examples:
31
+ | options | dbfile |
32
+ | | ./rest-assured.db |
33
+ | -d /tmp/ratest.db | /tmp/ratest.db |
34
+ | --database /tmp/resta.db | /tmp/resta.db |
35
+
36
+ @now
37
+ Scenario Outline: mysql options
38
+ When I start rest-assured with -a mysql <options>
39
+ Then database options should be:
40
+ | dbname | dbuser | dbpass | dbhost | dbport | dbencoding | dbsocket |
41
+ | <dbname> | <dbuser> | <dbpass> | <dbhost> | <dbport> | <dbencoding> | <dbsocket> |
42
+
43
+ Examples:
44
+ | options | dbname | dbuser | dbpass | dbhost | dbport | dbencoding | dbsocket |
45
+ | | rest_assured | root | | | | | |
46
+ | -d resta | resta | root | | | | | |
47
+ | --database resta | resta | root | | | | | |
48
+ | -u bob | rest_assured | bob | | | | | |
49
+ | --dbuser bob | rest_assured | bob | | | | | |
50
+ | --dbpass pswd | rest_assured | root | pswd | | | | |
51
+ | --dbhost remote | rest_assured | root | | remote | | | |
52
+ | --dbport 5555 | rest_assured | root | | | 5555 | | |
53
+ | --dbencoding utf16le | rest_assured | root | | | | utf16le | |
54
+ | --dbsocket /tmp/mysql.sock | rest_assured | root | | | | | /tmp/mysql.sock |
55
+
@@ -0,0 +1,35 @@
1
+ When /^I start rest\-assured with (.*)$/ do |options|
2
+ @app_config = fake_start_rest_assured(options)
3
+ end
4
+
5
+ Then /^it should run on port (\d+)$/ do |port|
6
+ @app_config[:port].should == port
7
+ end
8
+
9
+ Then /^the log file should be (.*)$/ do |logfile|
10
+ @app_config[:logfile].should == logfile
11
+ `rm #{logfile}`
12
+ end
13
+
14
+ Then /^database adapter should be sqlite and db file should be (.*)$/ do |dbfile|
15
+ @app_config[:db_config][:database].should == dbfile
16
+ @app_config[:db_config][:adapter].should == 'sqlite3'
17
+ `rm #{dbfile}`
18
+ end
19
+
20
+ Then /^database options should be:$/ do |table|
21
+ res = table.hashes.first
22
+
23
+ empty_to_nil = lambda do |string|
24
+ string.empty? ? nil : string
25
+ end
26
+
27
+ @app_config[:db_config][:adapter].should == 'mysql'
28
+ @app_config[:db_config][:database].should == res['dbname']
29
+ @app_config[:db_config][:user].should == res['dbuser']
30
+ @app_config[:db_config][:password].should == empty_to_nil[res['dbpass']]
31
+ @app_config[:db_config][:host].should == empty_to_nil[res['dbhost']]
32
+ @app_config[:db_config][:port].should == empty_to_nil[res['dbport']].try(:to_i)
33
+ @app_config[:db_config][:encoding].should == empty_to_nil[res['dbencoding']]
34
+ @app_config[:db_config][:socket].should == empty_to_nil[res['dbsocket']]
35
+ end
@@ -14,6 +14,10 @@ When /^I create a double with "([^""]*)" as fullpath, "([^""]*)" as response con
14
14
  last_response.should be_ok
15
15
  end
16
16
 
17
+ Then /^I should get (#{CAPTURE_A_NUMBER}) in response status$/ do |status|
18
+ last_response.status.should == status
19
+ end
20
+
17
21
  Then /^there should be (#{CAPTURE_A_NUMBER}) double with "([^"]*)" as fullpath and "([^"]*)" as response content$/ do |n, fullpath, content|
18
22
  Double.where(:fullpath => fullpath, :content => content).count.should == n
19
23
  end
@@ -9,6 +9,7 @@ Spork.prefork do
9
9
  require 'capybara/firebug'
10
10
  require 'capybara/cucumber'
11
11
  require 'database_cleaner'
12
+ require File.dirname(__FILE__) + '/world_helpers'
12
13
 
13
14
  ENV['RACK_ENV'] = 'test'
14
15
 
@@ -32,14 +33,14 @@ Spork.prefork do
32
33
  Capybara::Selenium::Driver.new(app, :browser => :firefox, :profile => profile)
33
34
  end
34
35
 
35
- World(Capybara, Rack::Test::Methods, RackHeaderHack)
36
+ World(Capybara, Rack::Test::Methods, RackHeaderHack, WorldHelpers)
36
37
 
37
38
  end
38
39
 
39
40
 
40
41
  Spork.each_run do
41
42
  require 'rest-assured/config'
42
- AppConfig[:adapter] = 'mysql'
43
+ RestAssured::Config.build(:adapter => 'mysql')
43
44
 
44
45
  require 'rest-assured'
45
46
  require 'rest-assured/client'
@@ -0,0 +1,31 @@
1
+ require 'yaml'
2
+ require 'open3'
3
+
4
+ module WorldHelpers
5
+ def fake_start_rest_assured(options)
6
+ rest_assured_exec = File.expand_path '../../../bin/rest-assured', __FILE__
7
+ code = File.read rest_assured_exec
8
+
9
+ code.sub!(/(.*)/, "\\1\nENV['RACK_ENV'] = 'production'")
10
+ code.sub!(/require 'rest-assured'/, '')
11
+ code.sub!(/RestAssured::Application.run!/, 'puts AppConfig.to_yaml')
12
+
13
+ new_exec = "#{rest_assured_exec}_temp"
14
+ File.open(new_exec, 'w') do |file|
15
+ file.write code
16
+ end
17
+
18
+ `chmod +x #{new_exec}`
19
+
20
+ # this is 1.9.X version. So much more useful than 1.8 (uncommented). Sigh...
21
+ #config_yaml, stderr_str, status = Open3.capture3({'RACK_ENV' => 'production'}, new_exec, *options.split(' '))
22
+ config_yaml = nil
23
+ Open3.popen3(new_exec, *options.split(' ')) do |stdin, stdout, stderr|
24
+ config_yaml = stdout.read
25
+ end
26
+
27
+ `rm #{new_exec}`
28
+
29
+ YAML.load(config_yaml)
30
+ end
31
+ end
@@ -1,11 +1,9 @@
1
1
  require 'rubygems'
2
2
  require 'sinatra/base'
3
3
  require 'haml'
4
- require 'sass'
5
4
  require 'rack-flash'
6
5
  require 'sinatra/partials'
7
- require 'active_record'
8
- require 'rest-assured/init'
6
+ require 'rest-assured/config'
9
7
  require 'rest-assured/models/double'
10
8
  require 'rest-assured/models/redirect'
11
9
  require 'rest-assured/models/request'
@@ -15,16 +13,10 @@ require 'rest-assured/routes/response'
15
13
 
16
14
  module RestAssured
17
15
  class Application < Sinatra::Base
18
- set :environment, AppConfig[:environment]
19
- set :port, AppConfig[:port]
20
16
 
21
- enable :method_override
17
+ include RestAssured::Config
22
18
 
23
- Logger.class_eval do
24
- alias_method :write, :<<
25
- end
26
- enable :logging
27
- use Rack::CommonLogger, $app_logger
19
+ enable :method_override
28
20
 
29
21
  enable :sessions
30
22
  use Rack::Flash, :sweep => true
@@ -44,15 +36,6 @@ module RestAssured
44
36
  include DoubleRoutes
45
37
  include RedirectRoutes
46
38
 
47
- #before do
48
- #ActiveRecord::Base.clear_reloadable_connections!
49
- #ActiveRecord::Base.clear_cache!
50
- #end
51
-
52
- get '/css/base.css' do
53
- scss :base
54
- end
55
-
56
39
  %w{get post put delete}.each do |verb|
57
40
  send verb, /.*/ do
58
41
  Response.perform(self)
@@ -1,13 +1,138 @@
1
- #default config values are set here
2
-
3
- AppConfig = {
4
- :port => 4578,
5
- :environment => ENV['RACK_ENV'] || 'production',
6
- :adapter => 'sqlite'
7
- }
8
-
9
- AppConfig[:log_file] = if AppConfig[:environment] == 'production'
10
- './rest-assured.log'
11
- else
12
- File.expand_path("../../../#{AppConfig[:environment]}.log", __FILE__)
13
- end
1
+ require 'logger'
2
+ require 'active_record'
3
+ require 'active_support/core_ext/kernel/reporting'
4
+
5
+ module RestAssured
6
+ module Config
7
+ class ConfigHash < Hash
8
+ def initialize(default_values = {})
9
+ super()
10
+ self.merge!(default_values)
11
+ end
12
+
13
+ def method_missing(meth, *args)
14
+ meth = meth.to_s
15
+
16
+ if meth.sub!(/=/, '')
17
+ self[meth.to_sym] = args.first
18
+ else
19
+ self[meth.to_sym]
20
+ end
21
+ end
22
+ end
23
+
24
+ ::AppConfig = ConfigHash.new({
25
+ :port => 4578,
26
+ :environment => ENV['RACK_ENV'] || 'production',
27
+ :adapter => 'sqlite'
28
+ })
29
+
30
+ # this is meant to be called prior to include
31
+ def self.build(opts = {})
32
+ AppConfig.merge!(opts)
33
+
34
+ AppConfig.logfile ||= if AppConfig.environment == 'production'
35
+ './rest-assured.log'
36
+ else
37
+ File.expand_path("../../../#{AppConfig.environment}.log", __FILE__)
38
+ end
39
+ build_db_config
40
+ end
41
+
42
+ def self.included(klass)
43
+ init_logger
44
+ setup_db
45
+
46
+ klass.set :port, AppConfig.port
47
+ klass.set :environment, AppConfig.environment
48
+
49
+ klass.enable :logging
50
+ klass.use Rack::CommonLogger, AppConfig.logger
51
+ end
52
+
53
+ private
54
+
55
+ def self.setup_db
56
+ setup_db_logging
57
+ connect_db
58
+ migrate_db
59
+ end
60
+
61
+ def self.init_logger
62
+ Logger.class_eval do
63
+ alias_method :write, :<<
64
+ end
65
+
66
+ AppConfig.logger = Logger.new(AppConfig.logfile)
67
+ AppConfig.logger.level = Logger::DEBUG
68
+ end
69
+
70
+ def self.setup_db_logging
71
+ raise "Init logger first" unless AppConfig.logger
72
+
73
+ # active record logging is purely internal
74
+ # thus disabling it for production
75
+ ActiveRecord::Base.logger = if AppConfig.environment == 'production'
76
+ Logger.new(dev_null)
77
+ else
78
+ AppConfig.logger
79
+ end
80
+ end
81
+
82
+ def self.dev_null
83
+ test('e', '/dev/null') ? '/dev/null' : 'NUL:'
84
+ end
85
+
86
+ def self.connect_db
87
+ ActiveRecord::Base.establish_connection AppConfig.db_config
88
+ end
89
+
90
+ def self.migrate_db
91
+ migrate = lambda { ActiveRecord::Migrator.migrate(File.expand_path('../../../db/migrate', __FILE__)) }
92
+
93
+ if AppConfig[:environment] == 'production' && Kernel.respond_to?(:silence)
94
+ silence(:stdout, &migrate)
95
+ else
96
+ migrate.call
97
+ end
98
+ end
99
+
100
+ def self.build_db_config
101
+ AppConfig.db_config = if AppConfig.adapter =~ /sqlite/i
102
+ default_database = if AppConfig.environment == 'production'
103
+ './rest-assured.db'
104
+ else
105
+ File.expand_path("../../../db/#{AppConfig.environment}.db", __FILE__)
106
+ end
107
+ {
108
+ :adapter => 'sqlite3',
109
+ :database => AppConfig.database || default_database
110
+ }
111
+ elsif AppConfig.adapter =~ /mysql/i
112
+ default_database = if AppConfig.environment != 'production'
113
+ "rest_assured_#{AppConfig.environment}"
114
+ else
115
+ 'rest_assured'
116
+ end
117
+
118
+ opts = {
119
+ :adapter => 'mysql',
120
+ :reconnect => true,
121
+ :user => AppConfig.user || 'root',
122
+ :database => AppConfig.database || default_database
123
+ }
124
+
125
+ opts[:password] = AppConfig.dbpass if AppConfig.dbpass
126
+ opts[:host] = AppConfig.dbhost if AppConfig.dbhost
127
+ opts[:port] = AppConfig.dbport if AppConfig.dbport
128
+ opts[:encoding] = AppConfig.dbencoding if AppConfig.dbencoding
129
+ opts[:socket] = AppConfig.dbsocket if AppConfig.dbsocket
130
+ opts
131
+ else
132
+ raise "Unsupported db adapter '#{AppConfig.adapter}'. Valid adapters are sqlite and mysql"
133
+ end
134
+ end
135
+ end
136
+ end
137
+
138
+
@@ -1,3 +1,3 @@
1
1
  module RestAssured
2
- VERSION = '0.2.0.rc7'
2
+ VERSION = '0.2.0.rc8'
3
3
  end
File without changes
@@ -23,7 +23,6 @@ Gem::Specification.new do |s|
23
23
  s.add_dependency 'sinatra', '>= 1.3.1'
24
24
  s.add_dependency 'rack-flash', '>= 0.1.2'
25
25
  s.add_dependency 'haml', '>= 3.1.3'
26
- s.add_dependency 'sass', '>= 3.1.8'
27
26
  s.add_dependency 'activerecord', '~> 3.1.0'
28
27
  s.add_dependency 'activeresource', '~> 3.1.0'
29
28
  end
@@ -0,0 +1,98 @@
1
+ require File.expand_path('../../lib/rest-assured/config', __FILE__)
2
+ require 'rack'
3
+
4
+ describe RestAssured::Config do
5
+ #this is thoroughly covered in cucumber (since there it also serves documentation purposes)
6
+ #it 'builds config from user options'
7
+
8
+ it 'initializes logger' do
9
+ logger = double(:logger).as_null_object
10
+ AppConfig.stub(:logfile).and_return('test.log')
11
+
12
+ Logger.should_receive(:new).with('test.log').and_return(logger)
13
+
14
+ RestAssured::Config.init_logger
15
+ end
16
+
17
+ context 'db setup' do
18
+ it 'connects db' do
19
+ RestAssured::Config.stub(:migrate_db) # so it does not complain
20
+ AppConfig.stub(:db_config).and_return('db_config')
21
+
22
+ ActiveRecord::Base.should_receive(:establish_connection).with('db_config')
23
+
24
+ RestAssured::Config.setup_db
25
+ end
26
+
27
+ context 'active_record logging' do
28
+ let(:logger) { double(:logger).as_null_object }
29
+
30
+ before do
31
+ RestAssured::Config.stub(:migrate_db)
32
+ RestAssured::Config.stub(:connect_db)
33
+ end
34
+
35
+ it 'is silenced in production' do
36
+ AppConfig.stub(:environment).and_return('production')
37
+ Logger.should_receive(:new).with(RestAssured::Config.dev_null).and_return(logger)
38
+
39
+ ActiveRecord::Base.should_receive(:logger=).with(logger)
40
+
41
+ RestAssured::Config.setup_db
42
+ end
43
+
44
+ it 'is set to app logger for non production' do
45
+ AppConfig.stub(:environment).and_return('test')
46
+ AppConfig.stub(:logger).and_return(logger)
47
+
48
+ ActiveRecord::Base.should_receive(:logger=).with(logger)
49
+
50
+ RestAssured::Config.setup_db
51
+ end
52
+ end
53
+
54
+ it 'runs migrations' do
55
+ RestAssured::Config.stub(:connect_db) # so it does not complain
56
+
57
+ ActiveRecord::Migrator.should_receive(:migrate)
58
+
59
+ RestAssured::Config.setup_db
60
+ end
61
+ end
62
+
63
+ context 'when included in RestAssured::Application' do
64
+ let(:app) { mock(:app).as_null_object }
65
+
66
+ before do
67
+ RestAssured::Config.build
68
+ end
69
+
70
+ it 'initializes resources' do
71
+ RestAssured::Config.should_receive(:init_logger)
72
+ RestAssured::Config.should_receive(:setup_db)
73
+
74
+ RestAssured::Config.included(app)
75
+ end
76
+
77
+ it 'sets up environment' do
78
+ app.should_receive(:set).with(:environment, AppConfig.environment)
79
+ RestAssured::Config.included(app)
80
+ end
81
+
82
+ it 'sets up port' do
83
+ app.should_receive(:set).with(:port, AppConfig.port)
84
+ RestAssured::Config.included(app)
85
+ end
86
+
87
+ it 'connects logger' do
88
+ logger = double(:logger).as_null_object
89
+ AppConfig.stub(:logger).and_return(logger)
90
+
91
+ app.should_receive(:enable).with(:logging)
92
+ app.should_receive(:use).with(Rack::CommonLogger, logger)
93
+
94
+ RestAssured::Config.included(app)
95
+ end
96
+
97
+ end
98
+ end
@@ -44,7 +44,7 @@ end
44
44
 
45
45
  Spork.each_run do
46
46
  require 'rest-assured/config'
47
- AppConfig[:adapter] = 'mysql'
47
+ RestAssured::Config.build(:adapter => 'mysql')
48
48
 
49
49
  require 'rest-assured'
50
50
  require 'rest-assured/client'
metadata CHANGED
@@ -1,15 +1,15 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: rest-assured
3
3
  version: !ruby/object:Gem::Version
4
- hash: 15424059
4
+ hash: 15424037
5
5
  prerelease: 6
6
6
  segments:
7
7
  - 0
8
8
  - 2
9
9
  - 0
10
10
  - rc
11
- - 7
12
- version: 0.2.0.rc7
11
+ - 8
12
+ version: 0.2.0.rc8
13
13
  platform: ruby
14
14
  authors:
15
15
  - Artem Avetisyan
@@ -17,7 +17,7 @@ autorequire:
17
17
  bindir: bin
18
18
  cert_chain: []
19
19
 
20
- date: 2011-10-24 00:00:00 Z
20
+ date: 2011-11-07 00:00:00 Z
21
21
  dependencies:
22
22
  - !ruby/object:Gem::Dependency
23
23
  name: sinatra
@@ -67,26 +67,10 @@ dependencies:
67
67
  version: 3.1.3
68
68
  type: :runtime
69
69
  version_requirements: *id003
70
- - !ruby/object:Gem::Dependency
71
- name: sass
72
- prerelease: false
73
- requirement: &id004 !ruby/object:Gem::Requirement
74
- none: false
75
- requirements:
76
- - - ">="
77
- - !ruby/object:Gem::Version
78
- hash: 19
79
- segments:
80
- - 3
81
- - 1
82
- - 8
83
- version: 3.1.8
84
- type: :runtime
85
- version_requirements: *id004
86
70
  - !ruby/object:Gem::Dependency
87
71
  name: activerecord
88
72
  prerelease: false
89
- requirement: &id005 !ruby/object:Gem::Requirement
73
+ requirement: &id004 !ruby/object:Gem::Requirement
90
74
  none: false
91
75
  requirements:
92
76
  - - ~>
@@ -98,11 +82,11 @@ dependencies:
98
82
  - 0
99
83
  version: 3.1.0
100
84
  type: :runtime
101
- version_requirements: *id005
85
+ version_requirements: *id004
102
86
  - !ruby/object:Gem::Dependency
103
87
  name: activeresource
104
88
  prerelease: false
105
- requirement: &id006 !ruby/object:Gem::Requirement
89
+ requirement: &id005 !ruby/object:Gem::Requirement
106
90
  none: false
107
91
  requirements:
108
92
  - - ~>
@@ -114,7 +98,7 @@ dependencies:
114
98
  - 0
115
99
  version: 3.1.0
116
100
  type: :runtime
117
- version_requirements: *id006
101
+ version_requirements: *id005
118
102
  description:
119
103
  email:
120
104
  - artem.avetisyan@bbc.co.uk
@@ -147,24 +131,25 @@ files:
147
131
  - db/migrate/20111016174101_rename_method_to_verb.rb
148
132
  - db/migrate/20111021113953_add_status_to_doubles.rb
149
133
  - features/call_history.feature
134
+ - features/command_line_options.feature
150
135
  - features/doubles_via_api.feature
151
136
  - features/doubles_via_ui.feature
152
137
  - features/redirect_rules_via_api.feature
153
138
  - features/redirect_rules_via_ui.feature
154
139
  - features/step_definitions/call_history_steps.rb
140
+ - features/step_definitions/command_line_options_steps.rb
155
141
  - features/step_definitions/doubles_steps.rb
156
- - features/step_definitions/persistence_steps.rb
157
142
  - features/step_definitions/redirect_rules_steps.rb
158
143
  - features/step_definitions/support/numeric_transforms.rb
159
144
  - features/support/env.rb
160
145
  - features/support/selenium-fix.rb
161
146
  - features/support/test-server.rb
147
+ - features/support/world_helpers.rb
162
148
  - lib/active_record/leaky_connections_patch.rb
163
149
  - lib/rest-assured.rb
164
150
  - lib/rest-assured/client.rb
165
151
  - lib/rest-assured/client/resources.rb
166
152
  - lib/rest-assured/config.rb
167
- - lib/rest-assured/init.rb
168
153
  - lib/rest-assured/models/double.rb
169
154
  - lib/rest-assured/models/redirect.rb
170
155
  - lib/rest-assured/models/request.rb
@@ -173,6 +158,7 @@ files:
173
158
  - lib/rest-assured/routes/response.rb
174
159
  - lib/rest-assured/version.rb
175
160
  - lib/sinatra/partials.rb
161
+ - public/css/base.css
176
162
  - public/css/grid.inuit.css
177
163
  - public/css/inuit.css
178
164
  - public/css/jquery.jgrowl.css
@@ -190,6 +176,7 @@ files:
190
176
  - public/javascript/jquery.jgrowl_minimized.js
191
177
  - rest-assured.gemspec
192
178
  - spec/client/resource_double_spec.rb
179
+ - spec/config_spec.rb
193
180
  - spec/custom_matchers.rb
194
181
  - spec/functional/double_routes_spec.rb
195
182
  - spec/functional/redirect_routes_spec.rb
@@ -198,7 +185,6 @@ files:
198
185
  - spec/models/redirect_spec.rb
199
186
  - spec/models/request_spec.rb
200
187
  - spec/spec_helper.rb
201
- - views/base.scss
202
188
  - views/doubles/_form.haml
203
189
  - views/doubles/edit.haml
204
190
  - views/doubles/index.haml
@@ -247,19 +233,22 @@ specification_version: 3
247
233
  summary: A tool for high level mocking/stubbing HTTP based REST services
248
234
  test_files:
249
235
  - features/call_history.feature
236
+ - features/command_line_options.feature
250
237
  - features/doubles_via_api.feature
251
238
  - features/doubles_via_ui.feature
252
239
  - features/redirect_rules_via_api.feature
253
240
  - features/redirect_rules_via_ui.feature
254
241
  - features/step_definitions/call_history_steps.rb
242
+ - features/step_definitions/command_line_options_steps.rb
255
243
  - features/step_definitions/doubles_steps.rb
256
- - features/step_definitions/persistence_steps.rb
257
244
  - features/step_definitions/redirect_rules_steps.rb
258
245
  - features/step_definitions/support/numeric_transforms.rb
259
246
  - features/support/env.rb
260
247
  - features/support/selenium-fix.rb
261
248
  - features/support/test-server.rb
249
+ - features/support/world_helpers.rb
262
250
  - spec/client/resource_double_spec.rb
251
+ - spec/config_spec.rb
263
252
  - spec/custom_matchers.rb
264
253
  - spec/functional/double_routes_spec.rb
265
254
  - spec/functional/redirect_routes_spec.rb
@@ -1,13 +0,0 @@
1
- Given /^I (?:re)?start service without \-\-database option$/ do
2
- AppConfig[:database] = ':memory:' #default value
3
- load 'rest-assured/init.rb'
4
- end
5
-
6
- Then /^I should get (#{CAPTURE_A_NUMBER}) in response status$/ do |status|
7
- last_response.status.should == status
8
- end
9
-
10
- Given /^I (?:re)?start service with \-\-database "([^"]*)" option$/ do |db_path|
11
- AppConfig[:database] = db_path
12
- load 'rest-assured/init.rb'
13
- end
@@ -1,78 +0,0 @@
1
- require 'active_record'
2
- #require 'active_record/leaky_connections_patch'
3
- #require 'active_record/sqlite_transaction_hell_patch'
4
- require 'rest-assured/config'
5
- require 'logger'
6
- require 'active_support/core_ext/kernel/reporting'
7
-
8
- module RestAssured
9
- class Init
10
- def self.init!
11
- setup_logger
12
- connect_db
13
- migrate_db
14
- end
15
-
16
- private
17
- def self.build_db_config
18
- if AppConfig[:adapter] =~ /sqlite/i
19
- AppConfig[:database] ||= if AppConfig[:environment] == 'production'
20
- './rest-assured.db'
21
- else
22
- File.expand_path("../../../db/#{AppConfig[:environment]}.db", __FILE__)
23
- end
24
- {
25
- :adapter => 'sqlite3',
26
- :database => AppConfig[:database]
27
- }
28
- elsif AppConfig[:adapter] =~ /mysql/i
29
- AppConfig[:database] ||= if AppConfig[:environment] != 'production'
30
- "rest_assured_#{AppConfig[:environment]}"
31
- else
32
- 'rest_assured'
33
- end
34
- AppConfig[:db_user] ||= 'root'
35
-
36
- {
37
- :adapter => 'mysql',
38
- :reconnect => true,
39
- :user => AppConfig[:db_user],
40
- :password => AppConfig[:db_password],
41
- :database => AppConfig[:database]
42
- }
43
- else
44
- raise "Unsupported db adapter '#{AppConfig[:adapter]}'. Valid adapters are sqlite and mysql"
45
- end
46
- end
47
-
48
- def self.connect_db
49
- config = build_db_config
50
- ActiveRecord::Base.establish_connection config
51
- end
52
-
53
- def self.migrate_db
54
- migrate = lambda { ActiveRecord::Migrator.migrate(File.expand_path('../../../db/migrate', __FILE__)) }
55
-
56
- if AppConfig[:environment] == 'production' && Kernel.respond_to?(:silence)
57
- silence(:stdout, &migrate)
58
- else
59
- migrate.call
60
- end
61
- end
62
-
63
- def self.setup_logger
64
- $app_logger = Logger.new(AppConfig[:log_file])
65
- $app_logger.level = Logger::DEBUG
66
-
67
- # active record logging is purely internal
68
- # thus disabling it for production
69
- ActiveRecord::Base.logger = if AppConfig[:environment] == 'production'
70
- Logger.new(test('e', '/dev/null') ? '/dev/null' : 'NUL:')
71
- else
72
- $app_logger
73
- end
74
- end
75
- end
76
-
77
- Init.init!
78
- end