sonar 0.2.1
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/.travis.yml +6 -0
- data/Gemfile +2 -0
- data/LICENSE +19 -0
- data/README.md +283 -0
- data/Rakefile +27 -0
- data/lib/sonar.rb +97 -0
- data/lib/sonar/cookies.rb +125 -0
- data/lib/sonar/session.rb +150 -0
- data/sonar.gemspec +25 -0
- data/test/setup.rb +152 -0
- data/test/test__app.rb +71 -0
- data/test/test__auth.rb +144 -0
- data/test/test__cookies.rb +284 -0
- data/test/test__follow_redirect.rb +40 -0
- data/test/test__headers.rb +94 -0
- data/test/test__map.rb +73 -0
- data/test/test__params.rb +47 -0
- data/test/test__request_methods.rb +76 -0
- data/test/test__session.rb +49 -0
- metadata +131 -0
@@ -0,0 +1,47 @@
|
|
1
|
+
module SonarTest__params
|
2
|
+
|
3
|
+
class App < Air
|
4
|
+
|
5
|
+
def index vars
|
6
|
+
self.GET.values_at(*vars.split(',')).inspect
|
7
|
+
end
|
8
|
+
|
9
|
+
def post_index vars
|
10
|
+
self.POST.values_at(*vars.split(',')).inspect
|
11
|
+
end
|
12
|
+
|
13
|
+
end
|
14
|
+
|
15
|
+
Spec.new App do
|
16
|
+
|
17
|
+
before do
|
18
|
+
@vars, @vals = 2.times.map { 10.times.map { rand.to_s } }
|
19
|
+
@params = Hash[@vars.zip @vals]
|
20
|
+
end
|
21
|
+
|
22
|
+
Testing :GET do
|
23
|
+
|
24
|
+
r = get @vars.join(','), @params
|
25
|
+
expect(r.body) == @params.values_at(*@vars).inspect
|
26
|
+
|
27
|
+
Should 'mix params [Hash] with query_string [String]' do
|
28
|
+
qs_vars, qs_vals = 2.times.map { 10.times.map { rand.to_s } }
|
29
|
+
qs_params = Hash[qs_vars.zip qs_vals]
|
30
|
+
query_string = ::Rack::Utils.build_query(qs_params)
|
31
|
+
r = get((@vars + qs_vars).join(',') << '?' << query_string, @params)
|
32
|
+
expect(r.body) == @params.merge(qs_params).values_at(*(@vars + qs_vars)).inspect
|
33
|
+
end
|
34
|
+
end
|
35
|
+
|
36
|
+
Testing :POST do
|
37
|
+
|
38
|
+
r = post @vars.join(','), @params
|
39
|
+
expect(r.body) == @params.values_at(*@vars).inspect
|
40
|
+
|
41
|
+
Should 'have content type set to application/x-www-form-urlencoded' do
|
42
|
+
expect(last_request.env['CONTENT_TYPE']) == 'application/x-www-form-urlencoded'
|
43
|
+
end
|
44
|
+
end
|
45
|
+
|
46
|
+
end
|
47
|
+
end
|
@@ -0,0 +1,76 @@
|
|
1
|
+
module SonarTest__request_methods
|
2
|
+
|
3
|
+
class App < Air
|
4
|
+
|
5
|
+
def index
|
6
|
+
body
|
7
|
+
end
|
8
|
+
|
9
|
+
def post_index
|
10
|
+
body
|
11
|
+
end
|
12
|
+
|
13
|
+
def put_index
|
14
|
+
body
|
15
|
+
end
|
16
|
+
|
17
|
+
def patch_index
|
18
|
+
body
|
19
|
+
end
|
20
|
+
|
21
|
+
def head_index
|
22
|
+
body
|
23
|
+
end
|
24
|
+
|
25
|
+
def delete_index
|
26
|
+
body
|
27
|
+
end
|
28
|
+
|
29
|
+
def options_index
|
30
|
+
body
|
31
|
+
end
|
32
|
+
|
33
|
+
def trace_index
|
34
|
+
body
|
35
|
+
end
|
36
|
+
|
37
|
+
private
|
38
|
+
def body
|
39
|
+
[request_method, port, ssl?, xhr?].inspect
|
40
|
+
end
|
41
|
+
|
42
|
+
end
|
43
|
+
|
44
|
+
Spec.new App do
|
45
|
+
|
46
|
+
SonarConstants::REQUEST_METHODS.each do |rm|
|
47
|
+
r = self.send(rm.downcase)
|
48
|
+
expect(r.status) == 200
|
49
|
+
expect(r.body) == [rm, 80, false, false].inspect
|
50
|
+
end
|
51
|
+
|
52
|
+
Testing :SSL do
|
53
|
+
SonarConstants::REQUEST_METHODS.each do |rm|
|
54
|
+
r = self.send('s_' + rm.downcase)
|
55
|
+
expect(r.status) == 200
|
56
|
+
expect(r.body) == [rm, 443, true, false].inspect
|
57
|
+
end
|
58
|
+
end
|
59
|
+
|
60
|
+
Testing :XHR do
|
61
|
+
SonarConstants::REQUEST_METHODS.each do |rm|
|
62
|
+
r = self.send(rm.downcase + '_x')
|
63
|
+
expect(r.status) == 200
|
64
|
+
expect(r.body) == [rm, 80, false, true].inspect
|
65
|
+
end
|
66
|
+
end
|
67
|
+
|
68
|
+
Testing :SecureXHR do
|
69
|
+
SonarConstants::REQUEST_METHODS.each do |rm|
|
70
|
+
r = self.send('s_' + rm.downcase + '_x')
|
71
|
+
expect(r.status) == 200
|
72
|
+
expect(r.body) == [rm, 443, true, true].inspect
|
73
|
+
end
|
74
|
+
end
|
75
|
+
end
|
76
|
+
end
|
@@ -0,0 +1,49 @@
|
|
1
|
+
module SonarTest__session
|
2
|
+
|
3
|
+
class App < Air
|
4
|
+
|
5
|
+
def index
|
6
|
+
__method__
|
7
|
+
end
|
8
|
+
|
9
|
+
end
|
10
|
+
|
11
|
+
class JustAnotherApp < Air
|
12
|
+
def alone
|
13
|
+
__method__
|
14
|
+
end
|
15
|
+
end
|
16
|
+
|
17
|
+
Spec.new self do
|
18
|
+
|
19
|
+
Testing 'manually initialized session' do
|
20
|
+
session = SonarSession.new App
|
21
|
+
|
22
|
+
o 'setting headers'
|
23
|
+
session.header['User-Agent'] = 'Sonar'
|
24
|
+
|
25
|
+
session.get
|
26
|
+
expect(session.last_response.status) == 200
|
27
|
+
expect(session.last_response.body) == 'index'
|
28
|
+
|
29
|
+
o 'checking headers'
|
30
|
+
is(session.last_request.env['HTTP_USER_AGENT']) == 'Sonar'
|
31
|
+
|
32
|
+
o 'resetting app'
|
33
|
+
expect { session.reset_app! }.to_raise_error
|
34
|
+
|
35
|
+
Testing 'app switcher' do
|
36
|
+
expect { session.app JustAnotherApp }.to_raise_error
|
37
|
+
|
38
|
+
session = SonarSession.new JustAnotherApp
|
39
|
+
session.get
|
40
|
+
expect(session.last_response.status) == 404
|
41
|
+
|
42
|
+
session.get :alone
|
43
|
+
expect(session.last_response.status) == 200
|
44
|
+
|
45
|
+
end
|
46
|
+
end
|
47
|
+
|
48
|
+
end
|
49
|
+
end
|
metadata
ADDED
@@ -0,0 +1,131 @@
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
|
+
name: sonar
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: 0.2.1
|
5
|
+
prerelease:
|
6
|
+
platform: ruby
|
7
|
+
authors:
|
8
|
+
- Walter Smith
|
9
|
+
- Joran Kikke
|
10
|
+
autorequire:
|
11
|
+
bindir: bin
|
12
|
+
cert_chain: []
|
13
|
+
date: 2013-07-11 00:00:00.000000000 Z
|
14
|
+
dependencies:
|
15
|
+
- !ruby/object:Gem::Dependency
|
16
|
+
name: rack
|
17
|
+
requirement: !ruby/object:Gem::Requirement
|
18
|
+
none: false
|
19
|
+
requirements:
|
20
|
+
- - ~>
|
21
|
+
- !ruby/object:Gem::Version
|
22
|
+
version: '1.5'
|
23
|
+
type: :runtime
|
24
|
+
prerelease: false
|
25
|
+
version_requirements: !ruby/object:Gem::Requirement
|
26
|
+
none: false
|
27
|
+
requirements:
|
28
|
+
- - ~>
|
29
|
+
- !ruby/object:Gem::Version
|
30
|
+
version: '1.5'
|
31
|
+
- !ruby/object:Gem::Dependency
|
32
|
+
name: rake
|
33
|
+
requirement: !ruby/object:Gem::Requirement
|
34
|
+
none: false
|
35
|
+
requirements:
|
36
|
+
- - ~>
|
37
|
+
- !ruby/object:Gem::Version
|
38
|
+
version: '10'
|
39
|
+
type: :development
|
40
|
+
prerelease: false
|
41
|
+
version_requirements: !ruby/object:Gem::Requirement
|
42
|
+
none: false
|
43
|
+
requirements:
|
44
|
+
- - ~>
|
45
|
+
- !ruby/object:Gem::Version
|
46
|
+
version: '10'
|
47
|
+
- !ruby/object:Gem::Dependency
|
48
|
+
name: specular
|
49
|
+
requirement: !ruby/object:Gem::Requirement
|
50
|
+
none: false
|
51
|
+
requirements:
|
52
|
+
- - ~>
|
53
|
+
- !ruby/object:Gem::Version
|
54
|
+
version: 0.2.2
|
55
|
+
type: :development
|
56
|
+
prerelease: false
|
57
|
+
version_requirements: !ruby/object:Gem::Requirement
|
58
|
+
none: false
|
59
|
+
requirements:
|
60
|
+
- - ~>
|
61
|
+
- !ruby/object:Gem::Version
|
62
|
+
version: 0.2.2
|
63
|
+
- !ruby/object:Gem::Dependency
|
64
|
+
name: bundler
|
65
|
+
requirement: !ruby/object:Gem::Requirement
|
66
|
+
none: false
|
67
|
+
requirements:
|
68
|
+
- - ! '>='
|
69
|
+
- !ruby/object:Gem::Version
|
70
|
+
version: '0'
|
71
|
+
type: :development
|
72
|
+
prerelease: false
|
73
|
+
version_requirements: !ruby/object:Gem::Requirement
|
74
|
+
none: false
|
75
|
+
requirements:
|
76
|
+
- - ! '>='
|
77
|
+
- !ruby/object:Gem::Version
|
78
|
+
version: '0'
|
79
|
+
description: API for Testing Rack Applications via Mock HTTP
|
80
|
+
email:
|
81
|
+
- waltee.smith@gmail.com
|
82
|
+
- joran.k@gmail.com
|
83
|
+
executables: []
|
84
|
+
extensions: []
|
85
|
+
extra_rdoc_files: []
|
86
|
+
files:
|
87
|
+
- Gemfile
|
88
|
+
- lib/sonar/cookies.rb
|
89
|
+
- lib/sonar/session.rb
|
90
|
+
- lib/sonar.rb
|
91
|
+
- LICENSE
|
92
|
+
- Rakefile
|
93
|
+
- README.md
|
94
|
+
- sonar.gemspec
|
95
|
+
- test/setup.rb
|
96
|
+
- test/test__app.rb
|
97
|
+
- test/test__auth.rb
|
98
|
+
- test/test__cookies.rb
|
99
|
+
- test/test__follow_redirect.rb
|
100
|
+
- test/test__headers.rb
|
101
|
+
- test/test__map.rb
|
102
|
+
- test/test__params.rb
|
103
|
+
- test/test__request_methods.rb
|
104
|
+
- test/test__session.rb
|
105
|
+
- .travis.yml
|
106
|
+
homepage: https://github.com/dangerousbeans/sonar
|
107
|
+
licenses:
|
108
|
+
- MIT
|
109
|
+
post_install_message:
|
110
|
+
rdoc_options: []
|
111
|
+
require_paths:
|
112
|
+
- lib
|
113
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
114
|
+
none: false
|
115
|
+
requirements:
|
116
|
+
- - ! '>='
|
117
|
+
- !ruby/object:Gem::Version
|
118
|
+
version: 1.9.2
|
119
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
120
|
+
none: false
|
121
|
+
requirements:
|
122
|
+
- - ! '>='
|
123
|
+
- !ruby/object:Gem::Version
|
124
|
+
version: '0'
|
125
|
+
requirements: []
|
126
|
+
rubyforge_project:
|
127
|
+
rubygems_version: 1.8.25
|
128
|
+
signing_key:
|
129
|
+
specification_version: 3
|
130
|
+
summary: sonar-0.2.1
|
131
|
+
test_files: []
|