fakettp 0.3.1 → 0.3.2
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.
- data/README.rdoc +21 -12
- data/VERSION +1 -1
- data/fakettp.gemspec +111 -0
- data/features/control.feature +3 -3
- data/features/dashboard.feature +1 -1
- data/features/expectations.feature +4 -4
- data/features/verification.feature +8 -8
- data/lib/fakettp/controller.rb +4 -4
- metadata +2 -1
data/README.rdoc
CHANGED
@@ -33,16 +33,14 @@ You can install FakeTTP anywhere that your web server user can see it:
|
|
33
33
|
|
34
34
|
fakettp install <directory> <hostname>
|
35
35
|
|
36
|
-
Set _hostname_ to the host you want to use for FakeTTP control requests
|
36
|
+
Set _hostname_ to the host you want to use for FakeTTP control requests (the
|
37
|
+
examples below use <tt>fakettp.local</tt>).
|
37
38
|
|
38
39
|
You can install multiple copies
|
39
40
|
and run them independently by using different directories and hostnames (for
|
40
41
|
example on a CI server to prevent clashes when building multiple projects
|
41
42
|
in parallel).
|
42
43
|
|
43
|
-
The examples below assume that all fakettp hostnames end with
|
44
|
-
<tt>fakettp.local</tt>.
|
45
|
-
|
46
44
|
=== Point your web server at the directory
|
47
45
|
|
48
46
|
FakeTTP should work with any Rack-compatible server: just point the server to
|
@@ -51,7 +49,6 @@ the correct directory. For example, using Passenger[http://www.modrails.com/]
|
|
51
49
|
|
52
50
|
<VirtualHost *:80>
|
53
51
|
ServerName fakettp.local
|
54
|
-
ServerAlias *.fakettp.local
|
55
52
|
ServerAlias *.fake.local
|
56
53
|
DocumentRoot "/path/to/fakettp/public"
|
57
54
|
<directory "/path/to/fakettp/public">
|
@@ -61,16 +58,16 @@ the correct directory. For example, using Passenger[http://www.modrails.com/]
|
|
61
58
|
</directory>
|
62
59
|
</VirtualHost>
|
63
60
|
|
64
|
-
|
65
|
-
|
61
|
+
The <tt>ServerAlias</tt> line means that FakeTTP will attempt to simulate
|
62
|
+
all requests that match the supplied pattern. You can add as many of these
|
63
|
+
as necessary.
|
66
64
|
|
67
|
-
|
68
|
-
127.0.0.1 (assuming you're
|
69
|
-
|
70
|
-
by adding the following line to <tt>/etc/hosts</tt>:
|
65
|
+
Then make sure the simualtor hostname and any simulated hosts all resolve to
|
66
|
+
127.0.0.1 (assuming you're running the simulator on the same machine as the
|
67
|
+
application under test), eg by adding the following to <tt>/etc/hosts</tt>:
|
71
68
|
|
72
69
|
127.0.0.1 fakettp.local
|
73
|
-
127.0.0.1
|
70
|
+
127.0.0.1 some-host.fake.local
|
74
71
|
|
75
72
|
=== IMPORTANT: security note
|
76
73
|
|
@@ -142,8 +139,20 @@ Point your browser at http://fakettp.local/
|
|
142
139
|
|
143
140
|
Currently this is very basic, just showing the expectations from the last run.
|
144
141
|
|
142
|
+
=== Multiple faked hosts
|
143
|
+
|
144
|
+
To have FakeTTP respond to multiple hostnames, create the appropriate hosts
|
145
|
+
entries. If you're using name-based virtual hosts in Apache, add a
|
146
|
+
_ServerAlias_ entry to the virtual host config, under the _ServerName_ line, eg:
|
147
|
+
|
148
|
+
ServerAlias foo.com bar.com
|
149
|
+
|
145
150
|
== Change log
|
146
151
|
|
152
|
+
0.3.0 (19 May 2009)
|
153
|
+
|
154
|
+
* Fixed some issues with multiple hosts
|
155
|
+
|
147
156
|
0.3.0 (18 May 2009)
|
148
157
|
|
149
158
|
* Now uses SQLite and ActiveRecord to store expectations, instead of the filesystem.
|
data/VERSION
CHANGED
@@ -1 +1 @@
|
|
1
|
-
0.3.
|
1
|
+
0.3.2
|
data/fakettp.gemspec
ADDED
@@ -0,0 +1,111 @@
|
|
1
|
+
# Generated by jeweler
|
2
|
+
# DO NOT EDIT THIS FILE
|
3
|
+
# Instead, edit Jeweler::Tasks in Rakefile, and run `rake gemspec`
|
4
|
+
# -*- encoding: utf-8 -*-
|
5
|
+
|
6
|
+
Gem::Specification.new do |s|
|
7
|
+
s.name = %q{fakettp}
|
8
|
+
s.version = "0.3.2"
|
9
|
+
|
10
|
+
s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
|
11
|
+
s.authors = ["Kerry Buckley"]
|
12
|
+
s.date = %q{2009-10-19}
|
13
|
+
s.default_executable = %q{fakettp}
|
14
|
+
s.description = %q{HTTP server mocking tool}
|
15
|
+
s.email = %q{kerryjbuckley@gmail.com}
|
16
|
+
s.executables = ["fakettp"]
|
17
|
+
s.extra_rdoc_files = [
|
18
|
+
"README.rdoc"
|
19
|
+
]
|
20
|
+
s.files = [
|
21
|
+
".gitignore",
|
22
|
+
"README.rdoc",
|
23
|
+
"Rakefile",
|
24
|
+
"VERSION",
|
25
|
+
"bin/fakettp",
|
26
|
+
"fakettp.gemspec",
|
27
|
+
"features/control.feature",
|
28
|
+
"features/dashboard.feature",
|
29
|
+
"features/expectations.feature",
|
30
|
+
"features/expectations/expect_get",
|
31
|
+
"features/expectations/get_foo",
|
32
|
+
"features/expectations/get_root",
|
33
|
+
"features/expectations/pass_and_fail",
|
34
|
+
"features/expectations/set_response",
|
35
|
+
"features/step_definitions/expectations.rb",
|
36
|
+
"features/step_definitions/http.rb",
|
37
|
+
"features/step_definitions/simulator.rb",
|
38
|
+
"features/step_definitions/webrat_steps.rb",
|
39
|
+
"features/support/env.rb",
|
40
|
+
"features/support/fakettp.rb",
|
41
|
+
"features/support/paths.rb",
|
42
|
+
"features/support/xpath.rb",
|
43
|
+
"features/verification.feature",
|
44
|
+
"lib/fakettp.rb",
|
45
|
+
"lib/fakettp/commands/fakettp_command.rb",
|
46
|
+
"lib/fakettp/config.ru",
|
47
|
+
"lib/fakettp/controller.rb",
|
48
|
+
"lib/fakettp/db.rb",
|
49
|
+
"lib/fakettp/error.rb",
|
50
|
+
"lib/fakettp/expectation.rb",
|
51
|
+
"lib/fakettp/expectation_helper.rb",
|
52
|
+
"lib/fakettp/fakettp.yml",
|
53
|
+
"lib/fakettp/public/fakettp.css",
|
54
|
+
"lib/fakettp/schema.rb",
|
55
|
+
"lib/fakettp/simulator.rb",
|
56
|
+
"lib/fakettp/views/index.erb",
|
57
|
+
"spec/fakettp/commands/fakettp_command_spec.rb",
|
58
|
+
"spec/fakettp/controller_spec.rb",
|
59
|
+
"spec/fakettp/error_spec.rb",
|
60
|
+
"spec/fakettp/expectation_helper_spec.rb",
|
61
|
+
"spec/fakettp/expectation_spec.rb",
|
62
|
+
"spec/fakettp/simulator_spec.rb",
|
63
|
+
"spec/spec.opts",
|
64
|
+
"spec/spec_helper.rb"
|
65
|
+
]
|
66
|
+
s.homepage = %q{http://github.com/kerryb/fakettp}
|
67
|
+
s.rdoc_options = ["--charset=UTF-8"]
|
68
|
+
s.require_paths = ["lib"]
|
69
|
+
s.rubygems_version = %q{1.3.5}
|
70
|
+
s.summary = %q{HTTP server mocking tool}
|
71
|
+
s.test_files = [
|
72
|
+
"spec/fakettp/commands/fakettp_command_spec.rb",
|
73
|
+
"spec/fakettp/controller_spec.rb",
|
74
|
+
"spec/fakettp/error_spec.rb",
|
75
|
+
"spec/fakettp/expectation_helper_spec.rb",
|
76
|
+
"spec/fakettp/expectation_spec.rb",
|
77
|
+
"spec/fakettp/simulator_spec.rb",
|
78
|
+
"spec/spec_helper.rb"
|
79
|
+
]
|
80
|
+
|
81
|
+
if s.respond_to? :specification_version then
|
82
|
+
current_version = Gem::Specification::CURRENT_SPECIFICATION_VERSION
|
83
|
+
s.specification_version = 3
|
84
|
+
|
85
|
+
if Gem::Version.new(Gem::RubyGemsVersion) >= Gem::Version.new('1.2.0') then
|
86
|
+
s.add_runtime_dependency(%q<sinatra-sinatra>, [">= 0.10.1"])
|
87
|
+
s.add_runtime_dependency(%q<sqlite3-ruby>, [">= 0"])
|
88
|
+
s.add_runtime_dependency(%q<activerecord>, [">= 0"])
|
89
|
+
s.add_development_dependency(%q<jeweler>, [">= 0"])
|
90
|
+
s.add_development_dependency(%q<rcov>, [">= 0"])
|
91
|
+
s.add_development_dependency(%q<rspec>, [">= 0"])
|
92
|
+
s.add_development_dependency(%q<cucumber>, [">= 0"])
|
93
|
+
else
|
94
|
+
s.add_dependency(%q<sinatra-sinatra>, [">= 0.10.1"])
|
95
|
+
s.add_dependency(%q<sqlite3-ruby>, [">= 0"])
|
96
|
+
s.add_dependency(%q<activerecord>, [">= 0"])
|
97
|
+
s.add_dependency(%q<jeweler>, [">= 0"])
|
98
|
+
s.add_dependency(%q<rcov>, [">= 0"])
|
99
|
+
s.add_dependency(%q<rspec>, [">= 0"])
|
100
|
+
s.add_dependency(%q<cucumber>, [">= 0"])
|
101
|
+
end
|
102
|
+
else
|
103
|
+
s.add_dependency(%q<sinatra-sinatra>, [">= 0.10.1"])
|
104
|
+
s.add_dependency(%q<sqlite3-ruby>, [">= 0"])
|
105
|
+
s.add_dependency(%q<activerecord>, [">= 0"])
|
106
|
+
s.add_dependency(%q<jeweler>, [">= 0"])
|
107
|
+
s.add_dependency(%q<rcov>, [">= 0"])
|
108
|
+
s.add_dependency(%q<rspec>, [">= 0"])
|
109
|
+
s.add_dependency(%q<cucumber>, [">= 0"])
|
110
|
+
end
|
111
|
+
end
|
data/features/control.feature
CHANGED
@@ -1,12 +1,12 @@
|
|
1
1
|
Feature: Controlling the simulator
|
2
2
|
Scenario: Attempting to reset the simulator using the wrong host
|
3
|
-
When we post to /reset on foo.fake.local
|
3
|
+
When we post to /reset on foo.fakettp.fake.local
|
4
4
|
Then the response body should contain 'Simulator received mismatched request'
|
5
5
|
|
6
6
|
Scenario: Attempting to create an expectation using the wrong host
|
7
|
-
When we post to /expect on foo.fake.local
|
7
|
+
When we post to /expect on foo.fakettp.fake.local
|
8
8
|
Then the response body should contain 'Simulator received mismatched request'
|
9
9
|
|
10
10
|
Scenario: Attempting to verify the simulator using the wrong host
|
11
|
-
When we get /verify on foo.fake.local
|
11
|
+
When we get /verify on foo.fakettp.fake.local
|
12
12
|
Then the response body should contain 'Simulator received mismatched request'
|
data/features/dashboard.feature
CHANGED
@@ -26,7 +26,7 @@ Feature: Dashboard for debugging failures
|
|
26
26
|
Scenario: Highlight passed and failed lines
|
27
27
|
Given the simulator is reset
|
28
28
|
And we expect pass_and_fail
|
29
|
-
And we get / on foo.fake.local
|
29
|
+
And we get / on foo.fakettp.fake.local
|
30
30
|
When we get / on fakettp.local
|
31
31
|
Then //div[1]/pre in the response should be:
|
32
32
|
"""
|
@@ -2,26 +2,26 @@ Feature: Expectations
|
|
2
2
|
Scenario: Using rspec matchers
|
3
3
|
Given the simulator is reset
|
4
4
|
And we expect expect_get
|
5
|
-
And we get / on foo.fake.local
|
5
|
+
And we get / on foo.fakettp.fake.local
|
6
6
|
Then verifying the simulator should report success
|
7
7
|
|
8
8
|
Scenario: Setting response headers
|
9
9
|
Given the simulator is reset
|
10
10
|
And we expect set_response
|
11
|
-
And we get / on foo.fake.local
|
11
|
+
And we get / on foo.fakettp.fake.local
|
12
12
|
Then the response should have a 'foo' header with a value of 'bar'
|
13
13
|
And verifying the simulator should report success
|
14
14
|
|
15
15
|
Scenario: Setting response content-type
|
16
16
|
Given the simulator is reset
|
17
17
|
And we expect set_response
|
18
|
-
And we get / on foo.fake.local
|
18
|
+
And we get / on foo.fakettp.fake.local
|
19
19
|
Then the response should have a content type of 'application/xml'
|
20
20
|
And verifying the simulator should report success
|
21
21
|
|
22
22
|
Scenario: Setting response code
|
23
23
|
Given the simulator is reset
|
24
24
|
And we expect set_response
|
25
|
-
And we get / on foo.fake.local
|
25
|
+
And we get / on foo.fakettp.fake.local
|
26
26
|
Then the response body should be '<foo />'
|
27
27
|
And verifying the simulator should report success
|
@@ -6,7 +6,7 @@ Feature: Verification of expectations
|
|
6
6
|
Scenario: Satisfied expectation
|
7
7
|
Given the simulator is reset
|
8
8
|
And we expect get_root
|
9
|
-
When we get / on foo.fake.local
|
9
|
+
When we get / on foo.fakettp.fake.local
|
10
10
|
Then verifying the simulator should report success
|
11
11
|
|
12
12
|
Scenario: Unsatisfied expectation
|
@@ -16,34 +16,34 @@ Feature: Verification of expectations
|
|
16
16
|
|
17
17
|
Scenario: Unexpected request
|
18
18
|
Given the simulator is reset
|
19
|
-
When we get / on foo.fake.local
|
19
|
+
When we get / on foo.fakettp.fake.local
|
20
20
|
Then verifying the simulator should report a failure, with message "Received unexpected request"
|
21
21
|
|
22
22
|
Scenario: Mismatched expectation
|
23
23
|
Given the simulator is reset
|
24
24
|
And we expect get_root
|
25
|
-
When we get /foo on foo.fake.local
|
25
|
+
When we get /foo on foo.fakettp.fake.local
|
26
26
|
Then verifying the simulator should report a failure, with message "Error in GET /: expected: "/",.*got: "/foo""
|
27
27
|
|
28
28
|
Scenario: Two satisfied expectations
|
29
29
|
Given the simulator is reset
|
30
30
|
And we expect get_root
|
31
31
|
And we expect get_foo
|
32
|
-
When we get / on foo.fake.local
|
33
|
-
And we get /foo on foo.fake.local
|
32
|
+
When we get / on foo.fakettp.fake.local
|
33
|
+
And we get /foo on foo.fakettp.fake.local
|
34
34
|
Then verifying the simulator should report success
|
35
35
|
|
36
36
|
Scenario: Two expectations, one satisfied
|
37
37
|
Given the simulator is reset
|
38
38
|
And we expect get_root
|
39
39
|
And we expect get_foo
|
40
|
-
When we get / on foo.fake.local
|
40
|
+
When we get / on foo.fakettp.fake.local
|
41
41
|
Then verifying the simulator should report a failure, with message "Expected request not received"
|
42
42
|
|
43
43
|
Scenario: Two expectations, with requests received in the wrong order
|
44
44
|
Given the simulator is reset
|
45
45
|
And we expect get_root
|
46
46
|
And we expect get_foo
|
47
|
-
When we get /foo on foo.fake.local
|
48
|
-
And we get / on foo.fake.local
|
47
|
+
When we get /foo on foo.fakettp.fake.local
|
48
|
+
And we get / on foo.fakettp.fake.local
|
49
49
|
Then verifying the simulator should report a failure, with message "Error in GET /: expected: "/",.*got: "/foo".*Error in GET /foo: expected: "/foo",.*got: "/""
|
data/lib/fakettp/controller.rb
CHANGED
@@ -15,19 +15,19 @@ host = YAML.load(config)['hostname']
|
|
15
15
|
|
16
16
|
include Fakettp::ExpectationHelper
|
17
17
|
|
18
|
-
post '/expect', :host =>
|
18
|
+
send :post, '/expect', :host => host do
|
19
19
|
Fakettp::Simulator << request.body.read
|
20
20
|
content_type 'text/plain'
|
21
21
|
"Expect OK\n"
|
22
22
|
end
|
23
23
|
|
24
|
-
post '/reset', :host =>
|
24
|
+
send :post, '/reset', :host => host do
|
25
25
|
Fakettp::Simulator.reset
|
26
26
|
content_type 'text/plain'
|
27
27
|
"Reset OK\n"
|
28
28
|
end
|
29
29
|
|
30
|
-
get '/verify', :host =>
|
30
|
+
send :get, '/verify', :host => host do
|
31
31
|
content_type 'text/plain'
|
32
32
|
if Fakettp::Simulator.verify
|
33
33
|
"Verify OK\n"
|
@@ -36,7 +36,7 @@ get '/verify', :host => 'fakettp.local' do
|
|
36
36
|
end
|
37
37
|
end
|
38
38
|
|
39
|
-
get '/', :host =>
|
39
|
+
send :get, '/', :host => host do
|
40
40
|
content_type 'text/html'
|
41
41
|
@expectations = Fakettp::Expectation.all
|
42
42
|
erb :index
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: fakettp
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.3.
|
4
|
+
version: 0.3.2
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Kerry Buckley
|
@@ -96,6 +96,7 @@ files:
|
|
96
96
|
- Rakefile
|
97
97
|
- VERSION
|
98
98
|
- bin/fakettp
|
99
|
+
- fakettp.gemspec
|
99
100
|
- features/control.feature
|
100
101
|
- features/dashboard.feature
|
101
102
|
- features/expectations.feature
|