kensa 1.1.4 → 1.2.0rc1
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/.gitignore +5 -0
- data/Gemfile +4 -7
- data/Gemfile.lock +59 -23
- data/README.md +1 -1
- data/Rakefile +6 -33
- data/kensa.gemspec +26 -98
- data/lib/heroku/kensa/client.rb +25 -5
- data/lib/heroku/kensa/manifest.rb +9 -3
- data/lib/heroku/kensa/sso.rb +24 -14
- data/lib/heroku/kensa/version.rb +6 -0
- data/lib/heroku/kensa.rb +10 -6
- data/test/deprovision_test.rb +30 -0
- data/test/helper.rb +11 -44
- data/test/lib/dependencies.rb +8 -0
- data/test/lib/formatter.rb +85 -0
- data/test/lib/response.rb +6 -0
- data/test/lib/test_case.rb +56 -0
- data/test/manifest_generation_test.rb +32 -0
- data/test/manifest_test.rb +36 -21
- data/test/plan_change_test.rb +30 -0
- data/test/provision_test.rb +84 -0
- data/test/resources/provider_server.rb +82 -0
- data/test/resources/views/index.haml +6 -0
- data/test/sso_launch_test.rb +130 -0
- data/test/sso_test.rb +52 -106
- metadata +161 -210
- data/lib/heroku/kensa/check.rb +0 -485
- data/test/all_check_test.rb +0 -25
- data/test/deprovision_check_test.rb +0 -36
- data/test/manifest_check_test.rb +0 -79
- data/test/plan_change_check_test.rb +0 -27
- data/test/provision_check_test.rb +0 -43
- data/test/provision_response_check_test.rb +0 -72
- data/test/resources/runner.rb +0 -1
- data/test/resources/server.rb +0 -207
- data/test/sso_check_test.rb +0 -59
data/test/sso_test.rb
CHANGED
@@ -1,126 +1,72 @@
|
|
1
|
-
|
2
|
-
require '
|
3
|
-
|
1
|
+
$:.unshift(File.expand_path("../..",__FILE__))
|
2
|
+
require 'test/lib/dependencies'
|
4
3
|
class SsoTest < Test::Unit::TestCase
|
5
|
-
include Heroku::Kensa
|
6
4
|
|
7
|
-
setup
|
8
|
-
|
9
|
-
@
|
10
|
-
@
|
5
|
+
def setup
|
6
|
+
super
|
7
|
+
@user_id ||= manifest["user_id"] || 123
|
8
|
+
@time = Time.now.to_i
|
9
|
+
@params = { :timestamp => @time,
|
10
|
+
:token => make_token(@user_id, manifest['api']["sso_salt"], @time.to_s),
|
11
|
+
"nav-data" => "some-nav-data"
|
12
|
+
}
|
11
13
|
end
|
12
14
|
|
13
|
-
|
14
|
-
|
15
|
-
|
16
|
-
url, query = @sso.full_url.split('?')
|
17
|
-
data = CGI.parse(query)
|
18
|
-
|
19
|
-
|
20
|
-
assert_equal "#{@data['api'][env]}heroku/resources/1", url
|
21
|
-
assert_equal 'b6010f6fbb850887a396c2bc0ab23974003008f6', data['token'].first
|
22
|
-
assert_equal '1262304000', data['timestamp'].first
|
23
|
-
assert_equal 'username@example.com', data['user'].first
|
15
|
+
def sso_post?
|
16
|
+
manifest["api"]["test"].is_a?(Hash) &&
|
17
|
+
manifest["api"]["test"]["sso_url"]
|
24
18
|
end
|
25
19
|
|
26
|
-
|
27
|
-
|
28
|
-
|
29
|
-
|
30
|
-
|
31
|
-
|
32
|
-
test 'builds path' do
|
33
|
-
assert_equal '/heroku/resources/1', @sso.path
|
34
|
-
end
|
35
|
-
|
36
|
-
test 'builds full url' do
|
37
|
-
builds_full_url('test')
|
38
|
-
end
|
39
|
-
|
40
|
-
context 'with no "sso" field specified' do
|
41
|
-
test "defaults to GET" do
|
42
|
-
assert_equal @sso.full_url, @sso.sso_url
|
43
|
-
end
|
20
|
+
def sso_url
|
21
|
+
if sso_post?
|
22
|
+
manifest["api"]["test"]["sso_url"].chomp("/")
|
23
|
+
else
|
24
|
+
"/heroku/resources"
|
44
25
|
end
|
26
|
+
end
|
45
27
|
|
46
|
-
|
47
|
-
|
48
|
-
|
49
|
-
|
50
|
-
|
51
|
-
|
52
|
-
test "#sso_url should be the #full_url" do
|
53
|
-
assert_equal @sso.full_url, @sso.sso_url
|
54
|
-
end
|
55
|
-
|
56
|
-
test "#message is Opening <full_url>" do
|
57
|
-
assert_equal "Opening #{@sso.full_url}", @sso.message
|
58
|
-
end
|
28
|
+
def sso_login(params = @params, user_id = @user_id)
|
29
|
+
if sso_post?
|
30
|
+
post sso_url, params.merge(:id => user_id)
|
31
|
+
else
|
32
|
+
get "#{sso_url}/#{user_id}", params
|
59
33
|
end
|
34
|
+
end
|
60
35
|
|
61
|
-
|
62
|
-
|
63
|
-
|
64
|
-
|
65
|
-
end
|
66
|
-
|
67
|
-
test "it starts the proxy server" do
|
68
|
-
@sso = Sso.new(@data).start
|
69
|
-
body = RestClient.get(@sso.sso_url)
|
70
|
-
|
71
|
-
assert body.include? @sso.path
|
72
|
-
assert body.include? 'b6010f6fbb850887a396c2bc0ab23974003008f6'
|
73
|
-
assert body.include? '1262304000'
|
74
|
-
assert body.include? @sso.url
|
75
|
-
assert body.include? @sso.sample_nav_data
|
76
|
-
end
|
77
|
-
|
78
|
-
context "with the proxy working" do
|
79
|
-
setup do
|
80
|
-
any_instance_of(Sso, :run_proxy => false)
|
81
|
-
@sso = Sso.new(@data).start
|
82
|
-
end
|
83
|
-
|
84
|
-
test "#sso_url should point to the proxy" do
|
85
|
-
assert_equal "http://localhost:#{@sso.proxy_port}/", @sso.sso_url
|
86
|
-
end
|
87
|
-
|
88
|
-
test "#post_url contains url and path" do
|
89
|
-
assert_equal "http://localhost:4567/heroku/resources/1/sso", @sso.post_url
|
90
|
-
end
|
91
|
-
|
92
|
-
test "#message is Posting <data> to <post_url> via proxy on port <proxy_port>" do
|
93
|
-
assert_equal "POSTing #{@sso.query_data} to http://localhost:4567/heroku/resources/1/sso via proxy on port #{@sso.proxy_port}", @sso.message
|
94
|
-
end
|
95
|
-
end
|
96
|
-
end
|
36
|
+
def test_validates_token
|
37
|
+
@params[:token] = "foo"
|
38
|
+
response = sso_login
|
39
|
+
assert_equal 403, response.code, "Signing in via SSO at /heroku/resources/:id must return a 403 if the token is invalid."
|
97
40
|
end
|
98
41
|
|
99
|
-
|
100
|
-
|
101
|
-
|
102
|
-
|
103
|
-
|
42
|
+
def test_validates_timestamp
|
43
|
+
@params[:timestamp] = (Time.now-60*3).to_i
|
44
|
+
@params[:token] = make_token(123, "SSO_SALT", @params[:timestamp].to_s)
|
45
|
+
response = sso_login
|
46
|
+
assert_equal 403, response.code, "Signing in via SSO at /heroku/resources/:id must return a 403 if the timestamp is expired."
|
104
47
|
|
105
|
-
|
106
|
-
|
48
|
+
@params[:timestamp] = "foo"
|
49
|
+
response = sso_login
|
50
|
+
assert_equal 403, response.code, "Signing in via SSO at /heroku/resources/:id must return a 403 if the timestamp is invalid."
|
51
|
+
end
|
107
52
|
|
108
|
-
|
109
|
-
|
53
|
+
def test_logs_in
|
54
|
+
response = sso_login
|
55
|
+
assert response.code.to_s.match(/\A2/), "Signing in via SSO at /heroku/resources/:id must return a 2xx response if sign in was valid."
|
110
56
|
end
|
111
57
|
|
112
|
-
|
113
|
-
|
114
|
-
|
115
|
-
|
116
|
-
@data[:env] = env
|
117
|
-
@data['api'][env] = 'http://localhost:7654/'
|
58
|
+
def test_creates_the_heroku_nav_data_cookie
|
59
|
+
response = sso_login
|
60
|
+
puts "Hello"
|
61
|
+
puts response.cookies.inspect
|
118
62
|
|
119
|
-
|
120
|
-
|
63
|
+
assert response.cookies, "SSO sign in should set the heroku-nav-data cookie to the value of the passed nav-data parameter."
|
64
|
+
assert_equal @params["nav-data"], response.cookies["heroku-nav-data"], "SSO sign in should set the heroku-nav-data cookie to the value of the passed nav-data parameter."
|
65
|
+
end
|
121
66
|
|
122
|
-
|
123
|
-
|
124
|
-
|
67
|
+
def test_displays_the_heroku_layout
|
68
|
+
response = sso_login
|
69
|
+
document = Nokogiri::HTML.parse(response.body)
|
70
|
+
assert !document.search("div#heroku-header").empty?, "Logged in page should contain the Heroku header."
|
125
71
|
end
|
126
72
|
end
|
metadata
CHANGED
@@ -1,220 +1,162 @@
|
|
1
|
-
--- !ruby/object:Gem::Specification
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
2
|
name: kensa
|
3
|
-
version: !ruby/object:Gem::Version
|
4
|
-
|
5
|
-
|
6
|
-
- 1
|
7
|
-
- 1
|
8
|
-
- 4
|
9
|
-
version: 1.1.4
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: 1.2.0rc1
|
5
|
+
prerelease: 5
|
10
6
|
platform: ruby
|
11
|
-
authors:
|
7
|
+
authors:
|
12
8
|
- Blake Mizerany
|
13
9
|
- Pedro Belo
|
14
10
|
- Adam Wiggins
|
15
11
|
- Chris Continanza
|
12
|
+
- Glenn Gillen
|
16
13
|
autorequire:
|
17
14
|
bindir: bin
|
18
15
|
cert_chain: []
|
19
|
-
|
20
|
-
|
21
|
-
|
22
|
-
|
23
|
-
|
24
|
-
|
25
|
-
|
26
|
-
|
27
|
-
|
28
|
-
|
29
|
-
- !ruby/object:Gem::Version
|
30
|
-
segments:
|
31
|
-
- 0
|
32
|
-
version: "0"
|
16
|
+
date: 2011-10-14 00:00:00.000000000Z
|
17
|
+
dependencies:
|
18
|
+
- !ruby/object:Gem::Dependency
|
19
|
+
name: json
|
20
|
+
requirement: &70119858551140 !ruby/object:Gem::Requirement
|
21
|
+
none: false
|
22
|
+
requirements:
|
23
|
+
- - ! '>='
|
24
|
+
- !ruby/object:Gem::Version
|
25
|
+
version: '0'
|
33
26
|
type: :development
|
34
|
-
version_requirements: *id001
|
35
|
-
- !ruby/object:Gem::Dependency
|
36
|
-
name: contest
|
37
27
|
prerelease: false
|
38
|
-
|
39
|
-
|
40
|
-
|
41
|
-
|
42
|
-
|
43
|
-
|
44
|
-
|
28
|
+
version_requirements: *70119858551140
|
29
|
+
- !ruby/object:Gem::Dependency
|
30
|
+
name: sinatra
|
31
|
+
requirement: &70119858550340 !ruby/object:Gem::Requirement
|
32
|
+
none: false
|
33
|
+
requirements:
|
34
|
+
- - ~>
|
35
|
+
- !ruby/object:Gem::Version
|
36
|
+
version: 1.2.6
|
45
37
|
type: :development
|
46
|
-
version_requirements: *id002
|
47
|
-
- !ruby/object:Gem::Dependency
|
48
|
-
name: timecop
|
49
38
|
prerelease: false
|
50
|
-
|
51
|
-
|
52
|
-
|
53
|
-
|
54
|
-
|
55
|
-
|
56
|
-
|
57
|
-
|
39
|
+
version_requirements: *70119858550340
|
40
|
+
- !ruby/object:Gem::Dependency
|
41
|
+
name: timecop
|
42
|
+
requirement: &70119858549300 !ruby/object:Gem::Requirement
|
43
|
+
none: false
|
44
|
+
requirements:
|
45
|
+
- - ~>
|
46
|
+
- !ruby/object:Gem::Version
|
58
47
|
version: 0.3.5
|
59
48
|
type: :development
|
60
|
-
version_requirements: *id003
|
61
|
-
- !ruby/object:Gem::Dependency
|
62
|
-
name: sinatra
|
63
49
|
prerelease: false
|
64
|
-
|
65
|
-
|
66
|
-
|
67
|
-
|
68
|
-
|
69
|
-
|
70
|
-
|
71
|
-
|
50
|
+
version_requirements: *70119858549300
|
51
|
+
- !ruby/object:Gem::Dependency
|
52
|
+
name: rr
|
53
|
+
requirement: &70119858548460 !ruby/object:Gem::Requirement
|
54
|
+
none: false
|
55
|
+
requirements:
|
56
|
+
- - ~>
|
57
|
+
- !ruby/object:Gem::Version
|
58
|
+
version: 1.0.4
|
72
59
|
type: :development
|
73
|
-
version_requirements: *id004
|
74
|
-
- !ruby/object:Gem::Dependency
|
75
|
-
name: json
|
76
60
|
prerelease: false
|
77
|
-
|
78
|
-
|
79
|
-
|
80
|
-
|
81
|
-
|
82
|
-
|
83
|
-
|
61
|
+
version_requirements: *70119858548460
|
62
|
+
- !ruby/object:Gem::Dependency
|
63
|
+
name: artifice
|
64
|
+
requirement: &70119858547540 !ruby/object:Gem::Requirement
|
65
|
+
none: false
|
66
|
+
requirements:
|
67
|
+
- - ~>
|
68
|
+
- !ruby/object:Gem::Version
|
69
|
+
version: '0.6'
|
84
70
|
type: :development
|
85
|
-
version_requirements: *id005
|
86
|
-
- !ruby/object:Gem::Dependency
|
87
|
-
name: contest
|
88
71
|
prerelease: false
|
89
|
-
|
90
|
-
|
91
|
-
- - ">="
|
92
|
-
- !ruby/object:Gem::Version
|
93
|
-
segments:
|
94
|
-
- 0
|
95
|
-
version: "0"
|
96
|
-
type: :development
|
97
|
-
version_requirements: *id006
|
98
|
-
- !ruby/object:Gem::Dependency
|
72
|
+
version_requirements: *70119858547540
|
73
|
+
- !ruby/object:Gem::Dependency
|
99
74
|
name: haml
|
100
|
-
|
101
|
-
|
102
|
-
requirements:
|
103
|
-
- -
|
104
|
-
- !ruby/object:Gem::Version
|
105
|
-
|
106
|
-
- 0
|
107
|
-
version: "0"
|
75
|
+
requirement: &70119858546680 !ruby/object:Gem::Requirement
|
76
|
+
none: false
|
77
|
+
requirements:
|
78
|
+
- - ~>
|
79
|
+
- !ruby/object:Gem::Version
|
80
|
+
version: 3.1.3
|
108
81
|
type: :development
|
109
|
-
version_requirements: *id007
|
110
|
-
- !ruby/object:Gem::Dependency
|
111
|
-
name: jeweler
|
112
82
|
prerelease: false
|
113
|
-
|
114
|
-
|
115
|
-
|
116
|
-
|
117
|
-
|
118
|
-
|
119
|
-
|
120
|
-
|
121
|
-
|
122
|
-
|
123
|
-
name: rr
|
83
|
+
version_requirements: *70119858546680
|
84
|
+
- !ruby/object:Gem::Dependency
|
85
|
+
name: test-unit
|
86
|
+
requirement: &70119858545920 !ruby/object:Gem::Requirement
|
87
|
+
none: false
|
88
|
+
requirements:
|
89
|
+
- - ~>
|
90
|
+
- !ruby/object:Gem::Version
|
91
|
+
version: 1.2.3
|
92
|
+
type: :runtime
|
124
93
|
prerelease: false
|
125
|
-
|
126
|
-
|
127
|
-
- - ">="
|
128
|
-
- !ruby/object:Gem::Version
|
129
|
-
segments:
|
130
|
-
- 0
|
131
|
-
version: "0"
|
132
|
-
type: :development
|
133
|
-
version_requirements: *id009
|
134
|
-
- !ruby/object:Gem::Dependency
|
94
|
+
version_requirements: *70119858545920
|
95
|
+
- !ruby/object:Gem::Dependency
|
135
96
|
name: rest-client
|
136
|
-
|
137
|
-
|
138
|
-
requirements:
|
139
|
-
- -
|
140
|
-
- !ruby/object:Gem::Version
|
141
|
-
|
142
|
-
- 1
|
143
|
-
- 7
|
144
|
-
- 0
|
145
|
-
version: 1.7.0
|
146
|
-
- - ">="
|
147
|
-
- !ruby/object:Gem::Version
|
148
|
-
segments:
|
149
|
-
- 1
|
150
|
-
- 4
|
151
|
-
- 0
|
152
|
-
version: 1.4.0
|
97
|
+
requirement: &70119858545100 !ruby/object:Gem::Requirement
|
98
|
+
none: false
|
99
|
+
requirements:
|
100
|
+
- - ~>
|
101
|
+
- !ruby/object:Gem::Version
|
102
|
+
version: 1.6.7
|
153
103
|
type: :runtime
|
154
|
-
version_requirements: *id010
|
155
|
-
- !ruby/object:Gem::Dependency
|
156
|
-
name: yajl-ruby
|
157
104
|
prerelease: false
|
158
|
-
|
159
|
-
|
105
|
+
version_requirements: *70119858545100
|
106
|
+
- !ruby/object:Gem::Dependency
|
107
|
+
name: yajl-ruby
|
108
|
+
requirement: &70119858544180 !ruby/object:Gem::Requirement
|
109
|
+
none: false
|
110
|
+
requirements:
|
160
111
|
- - ~>
|
161
|
-
- !ruby/object:Gem::Version
|
162
|
-
|
163
|
-
- 0
|
164
|
-
- 6
|
165
|
-
version: "0.6"
|
112
|
+
- !ruby/object:Gem::Version
|
113
|
+
version: 0.8.3
|
166
114
|
type: :runtime
|
167
|
-
version_requirements: *id011
|
168
|
-
- !ruby/object:Gem::Dependency
|
169
|
-
name: term-ansicolor
|
170
115
|
prerelease: false
|
171
|
-
|
172
|
-
|
116
|
+
version_requirements: *70119858544180
|
117
|
+
- !ruby/object:Gem::Dependency
|
118
|
+
name: term-ansicolor
|
119
|
+
requirement: &70119858543480 !ruby/object:Gem::Requirement
|
120
|
+
none: false
|
121
|
+
requirements:
|
173
122
|
- - ~>
|
174
|
-
- !ruby/object:Gem::Version
|
175
|
-
|
176
|
-
- 1
|
177
|
-
- 0
|
178
|
-
version: "1.0"
|
123
|
+
- !ruby/object:Gem::Version
|
124
|
+
version: 1.0.6
|
179
125
|
type: :runtime
|
180
|
-
version_requirements: *id012
|
181
|
-
- !ruby/object:Gem::Dependency
|
182
|
-
name: launchy
|
183
126
|
prerelease: false
|
184
|
-
|
185
|
-
|
186
|
-
|
187
|
-
|
188
|
-
|
189
|
-
|
190
|
-
|
191
|
-
|
192
|
-
version: 0.
|
127
|
+
version_requirements: *70119858543480
|
128
|
+
- !ruby/object:Gem::Dependency
|
129
|
+
name: launchy
|
130
|
+
requirement: &70119858542700 !ruby/object:Gem::Requirement
|
131
|
+
none: false
|
132
|
+
requirements:
|
133
|
+
- - ~>
|
134
|
+
- !ruby/object:Gem::Version
|
135
|
+
version: 2.0.5
|
193
136
|
type: :runtime
|
194
|
-
version_requirements: *id013
|
195
|
-
- !ruby/object:Gem::Dependency
|
196
|
-
name: mechanize
|
197
137
|
prerelease: false
|
198
|
-
|
199
|
-
|
138
|
+
version_requirements: *70119858542700
|
139
|
+
- !ruby/object:Gem::Dependency
|
140
|
+
name: mechanize
|
141
|
+
requirement: &70119858541620 !ruby/object:Gem::Requirement
|
142
|
+
none: false
|
143
|
+
requirements:
|
200
144
|
- - ~>
|
201
|
-
- !ruby/object:Gem::Version
|
202
|
-
segments:
|
203
|
-
- 1
|
204
|
-
- 0
|
205
|
-
- 0
|
145
|
+
- !ruby/object:Gem::Version
|
206
146
|
version: 1.0.0
|
207
147
|
type: :runtime
|
208
|
-
|
209
|
-
|
210
|
-
|
211
|
-
|
148
|
+
prerelease: false
|
149
|
+
version_requirements: *70119858541620
|
150
|
+
description: Kensa is a command-line tool to help add-on providers integrating their
|
151
|
+
services with Heroku. It manages manifest files, and provides a TDD-like approach
|
152
|
+
for programmers to test and develop their APIs.
|
153
|
+
email: glenn@heroku.com
|
154
|
+
executables:
|
212
155
|
- kensa
|
213
156
|
extensions: []
|
214
|
-
|
215
|
-
|
216
|
-
-
|
217
|
-
files:
|
157
|
+
extra_rdoc_files: []
|
158
|
+
files:
|
159
|
+
- .gitignore
|
218
160
|
- Gemfile
|
219
161
|
- Gemfile.lock
|
220
162
|
- README.md
|
@@ -222,54 +164,63 @@ files:
|
|
222
164
|
- bin/kensa
|
223
165
|
- kensa.gemspec
|
224
166
|
- lib/heroku/kensa.rb
|
225
|
-
- lib/heroku/kensa/check.rb
|
226
167
|
- lib/heroku/kensa/client.rb
|
227
168
|
- lib/heroku/kensa/http.rb
|
228
169
|
- lib/heroku/kensa/manifest.rb
|
229
170
|
- lib/heroku/kensa/post_proxy.rb
|
230
171
|
- lib/heroku/kensa/sso.rb
|
172
|
+
- lib/heroku/kensa/version.rb
|
231
173
|
- set-env.sh
|
232
|
-
- test/
|
233
|
-
- test/deprovision_check_test.rb
|
174
|
+
- test/deprovision_test.rb
|
234
175
|
- test/helper.rb
|
235
|
-
- test/
|
176
|
+
- test/lib/dependencies.rb
|
177
|
+
- test/lib/formatter.rb
|
178
|
+
- test/lib/response.rb
|
179
|
+
- test/lib/test_case.rb
|
180
|
+
- test/manifest_generation_test.rb
|
236
181
|
- test/manifest_test.rb
|
237
|
-
- test/
|
238
|
-
- test/
|
239
|
-
- test/
|
240
|
-
- test/resources/
|
241
|
-
- test/
|
242
|
-
- test/sso_check_test.rb
|
182
|
+
- test/plan_change_test.rb
|
183
|
+
- test/provision_test.rb
|
184
|
+
- test/resources/provider_server.rb
|
185
|
+
- test/resources/views/index.haml
|
186
|
+
- test/sso_launch_test.rb
|
243
187
|
- test/sso_test.rb
|
244
|
-
has_rdoc: true
|
245
188
|
homepage: http://provider.heroku.com/resources
|
246
189
|
licenses: []
|
247
|
-
|
248
190
|
post_install_message:
|
249
191
|
rdoc_options: []
|
250
|
-
|
251
|
-
require_paths:
|
192
|
+
require_paths:
|
252
193
|
- lib
|
253
|
-
required_ruby_version: !ruby/object:Gem::Requirement
|
254
|
-
|
255
|
-
|
256
|
-
|
257
|
-
|
258
|
-
|
259
|
-
|
260
|
-
|
261
|
-
requirements:
|
262
|
-
- -
|
263
|
-
- !ruby/object:Gem::Version
|
264
|
-
|
265
|
-
- 0
|
266
|
-
version: "0"
|
194
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
195
|
+
none: false
|
196
|
+
requirements:
|
197
|
+
- - ! '>='
|
198
|
+
- !ruby/object:Gem::Version
|
199
|
+
version: '0'
|
200
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
201
|
+
none: false
|
202
|
+
requirements:
|
203
|
+
- - ! '>'
|
204
|
+
- !ruby/object:Gem::Version
|
205
|
+
version: 1.3.1
|
267
206
|
requirements: []
|
268
|
-
|
269
|
-
|
270
|
-
rubygems_version: 1.3.6
|
207
|
+
rubyforge_project: kensa
|
208
|
+
rubygems_version: 1.8.10
|
271
209
|
signing_key:
|
272
210
|
specification_version: 3
|
273
211
|
summary: Tool to help Heroku add-on providers integrating their services
|
274
|
-
test_files:
|
275
|
-
|
212
|
+
test_files:
|
213
|
+
- test/deprovision_test.rb
|
214
|
+
- test/helper.rb
|
215
|
+
- test/lib/dependencies.rb
|
216
|
+
- test/lib/formatter.rb
|
217
|
+
- test/lib/response.rb
|
218
|
+
- test/lib/test_case.rb
|
219
|
+
- test/manifest_generation_test.rb
|
220
|
+
- test/manifest_test.rb
|
221
|
+
- test/plan_change_test.rb
|
222
|
+
- test/provision_test.rb
|
223
|
+
- test/resources/provider_server.rb
|
224
|
+
- test/resources/views/index.haml
|
225
|
+
- test/sso_launch_test.rb
|
226
|
+
- test/sso_test.rb
|