rack-test-poc 1.0.0 → 1.0.1
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/README.md +25 -1
- data/VERSION +1 -1
- data/lib/rack/test/poc.rb +31 -3
- data/test/dummy.rb +2 -1
- data/test/test_poc_generation.rb +22 -18
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 8abaa5a14ca7bf666d2e4f932eccea6145f5d4bf
|
4
|
+
data.tar.gz: 0272b76fb384693b12fbebf4d20d03b791cf637d
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 2e23a6d95d2d78752d54dc5ebe6d8f26186f7a62e1c42d8cec6d28bd43788eda7392074e7289663878ba92419d6879f51547c5678759a932a32f991904f9f8c2
|
7
|
+
data.tar.gz: 189c0002bccd8768a0f5c2abca38901a5cf6b14111b882a367ad4302518cd0618ce662cc871a6c7491cace7909d4ee69645c5af12351219f5c2da7a4fa566955
|
data/README.md
CHANGED
@@ -22,6 +22,12 @@ I my self use for documentation and cooperation purpose with other developers
|
|
22
22
|
|
23
23
|
gem 'rack-test-poc'
|
24
24
|
|
25
|
+
### Use
|
26
|
+
|
27
|
+
All you need to do is to require 'rack/test/poc' in your test_helper
|
28
|
+
when you working with rack-test module,
|
29
|
+
and you good to go!
|
30
|
+
|
25
31
|
### example
|
26
32
|
|
27
33
|
```ruby
|
@@ -57,4 +63,22 @@ describe 'AppTest' do
|
|
57
63
|
|
58
64
|
end
|
59
65
|
|
60
|
-
```
|
66
|
+
```
|
67
|
+
|
68
|
+
this will generate a yaml file with the current unix timestamp in the following format:
|
69
|
+
|
70
|
+
```yaml
|
71
|
+
|
72
|
+
---
|
73
|
+
"/": #> endpoint
|
74
|
+
GET: #> endpoint method
|
75
|
+
response:
|
76
|
+
body: #> parsed response.body
|
77
|
+
msg: Hello Rack!
|
78
|
+
status: 200
|
79
|
+
format: json #> format of the response
|
80
|
+
request:
|
81
|
+
query: '' #> query string that been used
|
82
|
+
|
83
|
+
|
84
|
+
```
|
data/VERSION
CHANGED
@@ -1 +1 @@
|
|
1
|
-
1.0.
|
1
|
+
1.0.1
|
data/lib/rack/test/poc.rb
CHANGED
@@ -12,7 +12,7 @@ module RackTestPoc
|
|
12
12
|
|
13
13
|
def self.dump_obj
|
14
14
|
@dump_obj ||= Hash.new
|
15
|
-
end
|
15
|
+
end;self.dump_obj #> eager load for multiThread
|
16
16
|
|
17
17
|
module EXT
|
18
18
|
|
@@ -72,11 +72,39 @@ module RackTestPoc
|
|
72
72
|
RackTestPoc.dump_obj[uri][env['REQUEST_METHOD']]['response'] ||= {}
|
73
73
|
RackTestPoc.dump_obj[uri][env['REQUEST_METHOD']]['request'] ||= {}
|
74
74
|
|
75
|
-
|
75
|
+
raw_query = env.find{|k,v|
|
76
|
+
%W[ QUERY_STRING rack.request.form_vars ].any?{|tag| k == tag && !v.nil? && v != '' }
|
77
|
+
}[1] rescue nil
|
78
|
+
|
79
|
+
query_hash = if raw_query
|
80
|
+
require 'cgi'
|
81
|
+
CGI.parse(raw_query).reduce({}){
|
82
|
+
|m,o| m.merge!(o[0]=> (o[1].length == 1 ? o[1][0] : o[1] ) )
|
83
|
+
}
|
84
|
+
|
85
|
+
else
|
86
|
+
{}
|
87
|
+
|
88
|
+
end
|
89
|
+
|
90
|
+
RackTestPoc.dump_obj[uri][env['REQUEST_METHOD']]['request']['query'] ||= {}
|
91
|
+
RackTestPoc.dump_obj[uri][env['REQUEST_METHOD']]['request']['query']['raw'] = raw_query
|
92
|
+
RackTestPoc.dump_obj[uri][env['REQUEST_METHOD']]['request']['query']['object'] = query_hash
|
93
|
+
RackTestPoc.dump_obj[uri][env['REQUEST_METHOD']]['request']['headers']= env.reduce({}){
|
94
|
+
|m,o| m.merge!(o[0]=>o[1]) if o[0].to_s.downcase =~ /^http_/ ; m
|
95
|
+
}
|
96
|
+
|
76
97
|
RackTestPoc.dump_obj[uri][env['REQUEST_METHOD']]['response']['body'] = body
|
77
98
|
RackTestPoc.dump_obj[uri][env['REQUEST_METHOD']]['response']['status']= last_response.status
|
78
99
|
RackTestPoc.dump_obj[uri][env['REQUEST_METHOD']]['response']['format']= format
|
79
100
|
|
101
|
+
if env['CONTENT_TYPE']
|
102
|
+
RackTestPoc.dump_obj[uri][env['REQUEST_METHOD']]['response']['content_type']= env['CONTENT_TYPE']
|
103
|
+
|
104
|
+
end
|
105
|
+
|
106
|
+
|
107
|
+
|
80
108
|
return last_response
|
81
109
|
|
82
110
|
end
|
@@ -85,4 +113,4 @@ module RackTestPoc
|
|
85
113
|
end
|
86
114
|
|
87
115
|
require 'rack/test'
|
88
|
-
Rack::Test::Session.prepend RackTestPoc::EXT
|
116
|
+
Rack::Test::Session.prepend RackTestPoc::EXT
|
data/test/dummy.rb
CHANGED
@@ -20,7 +20,8 @@ describe 'AppTest' do
|
|
20
20
|
|
21
21
|
specify 'some rack test!' do
|
22
22
|
|
23
|
-
|
23
|
+
header('Accept-Version','v1')
|
24
|
+
get '/',one_param: 'data' #> at this point poc data generated for '/'
|
24
25
|
|
25
26
|
#> bla bla bla some code here
|
26
27
|
|
data/test/test_poc_generation.rb
CHANGED
@@ -1,11 +1,13 @@
|
|
1
1
|
require 'yaml'
|
2
2
|
require 'timeout'
|
3
3
|
require 'minitest/autorun'
|
4
|
+
require_relative '../lib/rack/test/poc'
|
5
|
+
|
4
6
|
describe 'POCTest' do
|
5
7
|
|
6
8
|
specify 'it should be made able to made a poc at exiting from the process' do
|
7
9
|
|
8
|
-
`bundle exec ruby #{File.join __dir__,'dummy.rb'}`
|
10
|
+
$stdout.puts `bundle exec ruby #{File.join __dir__,'dummy.rb'}`
|
9
11
|
|
10
12
|
begin
|
11
13
|
|
@@ -17,29 +19,31 @@ describe 'POCTest' do
|
|
17
19
|
rescue;nil
|
18
20
|
end.must_be_instance_of TrueClass
|
19
21
|
|
20
|
-
Dir.glob( File.join __dir__,'poc','*.{yml,yaml}' ).
|
21
|
-
|
22
|
+
path = Dir.glob( File.join __dir__,'poc','*.{yml,yaml}' ).sort{
|
23
|
+
|a,b| a.split(File::Separator)[-1].split('.')[0] <=> b.split(File::Separator)[-1].split('.')[0]
|
24
|
+
}[-1]
|
22
25
|
|
23
|
-
|
24
|
-
|
26
|
+
poc_object = YAML.load File.read(path)
|
27
|
+
poc_object.must_be_instance_of Hash
|
28
|
+
poc_object.each_pair do |endpoint,options|
|
25
29
|
|
26
|
-
|
27
|
-
|
30
|
+
endpoint.must_be_instance_of String
|
31
|
+
endpoint[0].must_be :==, '/'
|
28
32
|
|
29
|
-
|
30
|
-
|
31
|
-
|
32
|
-
|
33
|
-
|
34
|
-
|
35
|
-
|
36
|
-
|
37
|
-
|
33
|
+
options.must_be_instance_of Hash
|
34
|
+
options.keys.first.must_be_instance_of String
|
35
|
+
options.values.each do |rest_options|
|
36
|
+
rest_options.must_be_instance_of Hash
|
37
|
+
rest_options['response'].must_be_instance_of Hash
|
38
|
+
rest_options['response']['body'].wont_be :==, nil
|
39
|
+
rest_options['response']['status'].class.must_be :<=,Numeric
|
40
|
+
rest_options['response']['format'].must_be_instance_of String
|
41
|
+
rest_options['request']['query']['raw'].must_be_instance_of String
|
42
|
+
rest_options['request']['query']['object'].must_be_instance_of Hash
|
38
43
|
|
39
|
-
|
44
|
+
end
|
40
45
|
|
41
46
|
|
42
|
-
end
|
43
47
|
|
44
48
|
end
|
45
49
|
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: rack-test-poc
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.0.
|
4
|
+
version: 1.0.1
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Adam Luzsi
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2014-10-
|
11
|
+
date: 2014-10-22 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: bundler
|