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.
@@ -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: []