kensa 1.4.1 → 1.4.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/.travis.yml +5 -2
- data/Gemfile +1 -1
- data/Gemfile.lock +45 -24
- data/README.md +5 -6
- data/bin/kensa +1 -1
- data/kensa.gemspec +2 -2
- data/lib/heroku/kensa/check.rb +14 -1
- data/lib/heroku/kensa/client.rb +6 -4
- data/lib/heroku/kensa/manifest.rb +8 -4
- data/lib/heroku/kensa/version.rb +1 -1
- data/test/manifest_check_test.rb +17 -2
- data/test/manifest_test.rb +8 -0
- data/test/sso_check_test.rb +2 -2
- metadata +186 -190
data/.travis.yml
CHANGED
data/Gemfile
CHANGED
data/Gemfile.lock
CHANGED
|
@@ -1,39 +1,55 @@
|
|
|
1
1
|
PATH
|
|
2
2
|
remote: .
|
|
3
3
|
specs:
|
|
4
|
-
kensa (1.4.
|
|
4
|
+
kensa (1.4.2)
|
|
5
5
|
launchy (>= 0.3.2)
|
|
6
|
-
mechanize (~>
|
|
6
|
+
mechanize (~> 2.6.0)
|
|
7
7
|
rest-client (>= 1.4.0, < 1.7.0)
|
|
8
8
|
term-ansicolor (~> 1.0)
|
|
9
9
|
|
|
10
10
|
GEM
|
|
11
|
-
remote:
|
|
11
|
+
remote: https://rubygems.org/
|
|
12
12
|
specs:
|
|
13
|
-
addressable (2.
|
|
13
|
+
addressable (2.3.3)
|
|
14
14
|
archive-tar-minitar (0.5.2)
|
|
15
15
|
artifice (0.6)
|
|
16
16
|
rack-test
|
|
17
|
-
columnize (0.3.
|
|
17
|
+
columnize (0.3.6)
|
|
18
18
|
contest (0.1.3)
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
19
|
+
domain_name (0.5.9)
|
|
20
|
+
unf (>= 0.0.5, < 1.0.0)
|
|
21
|
+
fakefs (0.4.2)
|
|
22
|
+
haml (4.0.1)
|
|
23
|
+
tilt
|
|
24
|
+
launchy (2.2.0)
|
|
25
|
+
addressable (~> 2.3)
|
|
26
|
+
linecache (0.46)
|
|
27
|
+
rbx-require-relative (> 0.0.4)
|
|
24
28
|
linecache19 (0.5.12)
|
|
25
29
|
ruby_core_source (>= 0.1.4)
|
|
26
|
-
mechanize (
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
30
|
+
mechanize (2.6.0)
|
|
31
|
+
domain_name (~> 0.5, >= 0.5.1)
|
|
32
|
+
mime-types (~> 1.17, >= 1.17.2)
|
|
33
|
+
net-http-digest_auth (~> 1.1, >= 1.1.1)
|
|
34
|
+
net-http-persistent (~> 2.5, >= 2.5.2)
|
|
35
|
+
nokogiri (~> 1.4)
|
|
36
|
+
ntlm-http (~> 0.1, >= 0.1.1)
|
|
37
|
+
webrobots (>= 0.0.9, < 0.2)
|
|
38
|
+
mime-types (1.21)
|
|
39
|
+
net-http-digest_auth (1.2.1)
|
|
40
|
+
net-http-persistent (2.8)
|
|
41
|
+
nokogiri (1.5.9)
|
|
42
|
+
ntlm-http (0.1.1)
|
|
43
|
+
rack (1.5.2)
|
|
44
|
+
rack-protection (1.5.0)
|
|
45
|
+
rack
|
|
46
|
+
rack-test (0.6.2)
|
|
32
47
|
rack (>= 1.0)
|
|
33
|
-
rake (0.
|
|
48
|
+
rake (10.0.4)
|
|
49
|
+
rbx-require-relative (0.0.9)
|
|
34
50
|
rest-client (1.6.7)
|
|
35
51
|
mime-types (>= 1.16)
|
|
36
|
-
rr (1.0.
|
|
52
|
+
rr (1.0.4)
|
|
37
53
|
ruby-debug (0.10.4)
|
|
38
54
|
columnize (>= 0.1)
|
|
39
55
|
ruby-debug-base (~> 0.10.4.0)
|
|
@@ -49,12 +65,17 @@ GEM
|
|
|
49
65
|
ruby-debug-base19 (>= 0.11.19)
|
|
50
66
|
ruby_core_source (0.1.5)
|
|
51
67
|
archive-tar-minitar (>= 0.5.2)
|
|
52
|
-
sinatra (1.2
|
|
53
|
-
rack (~> 1.1)
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
68
|
+
sinatra (1.4.2)
|
|
69
|
+
rack (~> 1.5, >= 1.5.2)
|
|
70
|
+
rack-protection (~> 1.4)
|
|
71
|
+
tilt (~> 1.3, >= 1.3.4)
|
|
72
|
+
term-ansicolor (1.1.3)
|
|
73
|
+
tilt (1.3.6)
|
|
74
|
+
timecop (0.6.1)
|
|
75
|
+
unf (0.1.1)
|
|
76
|
+
unf_ext
|
|
77
|
+
unf_ext (0.0.6)
|
|
78
|
+
webrobots (0.1.1)
|
|
58
79
|
|
|
59
80
|
PLATFORMS
|
|
60
81
|
ruby
|
data/README.md
CHANGED
|
@@ -1,7 +1,6 @@
|
|
|
1
|
-
Kensa
|
|
2
|
-
=====
|
|
1
|
+
# Kensa
|
|
3
2
|
|
|
4
|
-
|
|
3
|
+
[](https://travis-ci.org/heroku/kensa)
|
|
5
4
|
|
|
6
5
|
Kensa is a command-line utility to help Heroku add-on providers integrating
|
|
7
6
|
their services to Heroku. It offers commands to create and validate manifests,
|
|
@@ -21,11 +20,11 @@ Install it like any Ruby Gem:
|
|
|
21
20
|
Refer to the Heroku Add-ons Resource Center for more information on usage, and
|
|
22
21
|
how to build your Heroku add-on:
|
|
23
22
|
|
|
24
|
-
http://provider.heroku.com/resources/technical/build/provisioning
|
|
23
|
+
<http://provider.heroku.com/resources/technical/build/provisioning>
|
|
25
24
|
|
|
26
25
|
|
|
27
26
|
## Meta #######################################################################
|
|
28
27
|
|
|
29
|
-
Maintained by Glenn Gillen and
|
|
28
|
+
Maintained by Glenn Gillen and @mattonrails.
|
|
30
29
|
|
|
31
|
-
Released under the MIT license. http://github.com/heroku/kensa
|
|
30
|
+
Released under the MIT license. <http://github.com/heroku/kensa>
|
data/bin/kensa
CHANGED
data/kensa.gemspec
CHANGED
|
@@ -7,7 +7,7 @@ Gem::Specification.new do |s|
|
|
|
7
7
|
s.version = Heroku::Kensa::VERSION
|
|
8
8
|
s.platform = Gem::Platform::RUBY
|
|
9
9
|
|
|
10
|
-
s.authors = ["Blake Mizerany", "Pedro Belo", "Adam Wiggins", 'Glenn Gillen', 'Chris Continanza']
|
|
10
|
+
s.authors = ["Blake Mizerany", "Pedro Belo", "Adam Wiggins", 'Glenn Gillen', 'Chris Continanza', 'Matthew Conway']
|
|
11
11
|
s.default_executable = %q{kensa}
|
|
12
12
|
s.description = %q{Kensa is a command-line tool to help add-on providers integrating their services with Heroku. It manages manifest files, and provides a TDD-like approach for programmers to test and develop their APIs.}
|
|
13
13
|
s.email = %q{pedro@heroku.com}
|
|
@@ -34,6 +34,6 @@ Gem::Specification.new do |s|
|
|
|
34
34
|
s.add_runtime_dependency(%q<rest-client>, ["< 1.7.0", ">= 1.4.0"])
|
|
35
35
|
s.add_runtime_dependency(%q<term-ansicolor>, ["~> 1.0"])
|
|
36
36
|
s.add_runtime_dependency(%q<launchy>, [">= 0.3.2"])
|
|
37
|
-
s.add_runtime_dependency(%q<mechanize>, ["~>
|
|
37
|
+
s.add_runtime_dependency(%q<mechanize>, ["~> 2.6.0"])
|
|
38
38
|
end
|
|
39
39
|
|
data/lib/heroku/kensa/check.rb
CHANGED
|
@@ -92,6 +92,16 @@ module Heroku
|
|
|
92
92
|
check "is a hash" do
|
|
93
93
|
data["api"].is_a?(Hash)
|
|
94
94
|
end
|
|
95
|
+
check "has a list of regions" do
|
|
96
|
+
data["api"].has_key?("regions")
|
|
97
|
+
data["api"]["regions"].is_a?(Array)
|
|
98
|
+
end
|
|
99
|
+
check "contains at least the US region" do
|
|
100
|
+
data["api"]["regions"].include? "us"
|
|
101
|
+
end
|
|
102
|
+
check "contains only valid region names" do
|
|
103
|
+
data["api"]["regions"].all? { |reg| Manifest::REGIONS.include? reg }
|
|
104
|
+
end
|
|
95
105
|
check "contains password" do
|
|
96
106
|
data["api"].has_key?("password") && data["api"]["password"] != ""
|
|
97
107
|
end
|
|
@@ -454,7 +464,10 @@ module Heroku
|
|
|
454
464
|
end
|
|
455
465
|
|
|
456
466
|
check "displays the heroku layout" do
|
|
457
|
-
|
|
467
|
+
if page_logged_in.search('div#heroku-header').empty? &&
|
|
468
|
+
page_logged_in.search('script[src*=boomerang]').empty?
|
|
469
|
+
error("could not find Heroku layout")
|
|
470
|
+
end
|
|
458
471
|
true
|
|
459
472
|
end
|
|
460
473
|
end
|
data/lib/heroku/kensa/client.rb
CHANGED
|
@@ -64,6 +64,8 @@ module Heroku
|
|
|
64
64
|
run_check ManifestCheck, SsoCheck, :id => id
|
|
65
65
|
when "all"
|
|
66
66
|
run_check AllCheck
|
|
67
|
+
when nil
|
|
68
|
+
run_check AllCheck
|
|
67
69
|
else
|
|
68
70
|
abort "! Unknown test '#{check}'; see usage"
|
|
69
71
|
end
|
|
@@ -91,8 +93,8 @@ module Heroku
|
|
|
91
93
|
resource['provider/addons'].post(resolve_manifest, headers)
|
|
92
94
|
puts "-----> Manifest for \"#{data['id']}\" was pushed successfully"
|
|
93
95
|
puts " Continue at #{(heroku_host)}/provider/addons/#{data['id']}"
|
|
94
|
-
rescue RestClient::UnprocessableEntity => e
|
|
95
|
-
abort("FAILED: #{e.
|
|
96
|
+
rescue RestClient::UnprocessableEntity, RestClient::BadRequest => e
|
|
97
|
+
abort("FAILED: #{e.response}")
|
|
96
98
|
rescue RestClient::Unauthorized
|
|
97
99
|
abort("Authentication failure")
|
|
98
100
|
rescue RestClient::Forbidden
|
|
@@ -236,11 +238,11 @@ module Heroku
|
|
|
236
238
|
end
|
|
237
239
|
|
|
238
240
|
def error(msg)
|
|
239
|
-
$stdout.print "\n",
|
|
241
|
+
$stdout.print "\n", red(" #{msg}")
|
|
240
242
|
end
|
|
241
243
|
|
|
242
244
|
def result(status)
|
|
243
|
-
msg = status ?
|
|
245
|
+
msg = status ? green("[PASS]") : red(bold("[FAIL]"))
|
|
244
246
|
$stdout.print " #{msg}"
|
|
245
247
|
end
|
|
246
248
|
|
|
@@ -1,6 +1,9 @@
|
|
|
1
|
+
require 'securerandom'
|
|
2
|
+
|
|
1
3
|
module Heroku
|
|
2
4
|
module Kensa
|
|
3
5
|
class Manifest
|
|
6
|
+
REGIONS = %w(us eu)
|
|
4
7
|
|
|
5
8
|
def initialize(options = {})
|
|
6
9
|
@method = options.fetch(:method, 'post').to_sym
|
|
@@ -20,6 +23,7 @@ module Heroku
|
|
|
20
23
|
"id": "myaddon",
|
|
21
24
|
"api": {
|
|
22
25
|
"config_vars": [ "MYADDON_URL" ],
|
|
26
|
+
"regions": [ "us" ],
|
|
23
27
|
"password": "#{@password}",#{ sso_key }
|
|
24
28
|
"production": "https://yourapp.com/",
|
|
25
29
|
"test": "http://localhost:#{@port}/"
|
|
@@ -34,6 +38,7 @@ JSON
|
|
|
34
38
|
"id": "myaddon",
|
|
35
39
|
"api": {
|
|
36
40
|
"config_vars": [ "MYADDON_URL" ],
|
|
41
|
+
"regions": [ "us" ],
|
|
37
42
|
"password": "#{@password}",#{ sso_key }
|
|
38
43
|
"production": {
|
|
39
44
|
"base_url": "https://yourapp.com/heroku/resources",
|
|
@@ -69,15 +74,14 @@ ENV
|
|
|
69
74
|
private
|
|
70
75
|
|
|
71
76
|
def sso_key
|
|
72
|
-
@sso_salt = generate_password(16)
|
|
77
|
+
@sso_salt = generate_password(16)
|
|
73
78
|
unless @options[:sso] === false
|
|
74
79
|
%{\n "sso_salt": "#{@sso_salt}",}
|
|
75
80
|
end
|
|
76
81
|
end
|
|
77
82
|
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
Array.new(size) { PasswordChars[rand(PasswordChars.size)] }.join
|
|
83
|
+
def generate_password(size=8)
|
|
84
|
+
SecureRandom.hex(size)
|
|
81
85
|
end
|
|
82
86
|
|
|
83
87
|
end
|
data/lib/heroku/kensa/version.rb
CHANGED
data/test/manifest_check_test.rb
CHANGED
|
@@ -12,8 +12,8 @@ class ManifestCheckTest < Test::Unit::TestCase
|
|
|
12
12
|
end
|
|
13
13
|
end
|
|
14
14
|
|
|
15
|
-
%w{get post}.each do |method|
|
|
16
|
-
context "with sso #{method}" do
|
|
15
|
+
%w{get post}.each do |method|
|
|
16
|
+
context "with sso #{method}" do
|
|
17
17
|
setup { @data = Manifest.new(:method => method).skeleton }
|
|
18
18
|
|
|
19
19
|
test "is valid if no errors" do
|
|
@@ -35,6 +35,21 @@ class ManifestCheckTest < Test::Unit::TestCase
|
|
|
35
35
|
assert_invalid
|
|
36
36
|
end
|
|
37
37
|
|
|
38
|
+
test "api has a list of regions" do
|
|
39
|
+
@data["api"].delete("regions")
|
|
40
|
+
assert_invalid
|
|
41
|
+
end
|
|
42
|
+
|
|
43
|
+
test "api has a list of regions including US" do
|
|
44
|
+
@data["api"]["regions"] = ["eu"]
|
|
45
|
+
assert_invalid
|
|
46
|
+
end
|
|
47
|
+
|
|
48
|
+
test "api only allows valid region names" do
|
|
49
|
+
@data["api"]["regions"] = ["us", "ap"]
|
|
50
|
+
assert_invalid
|
|
51
|
+
end
|
|
52
|
+
|
|
38
53
|
test "api has a password" do
|
|
39
54
|
@data["api"].delete("password")
|
|
40
55
|
assert_invalid
|
data/test/manifest_test.rb
CHANGED
|
@@ -26,6 +26,10 @@ class ManifestTest < Test::Unit::TestCase
|
|
|
26
26
|
assert_equal @manifest.skeleton['api']['test'], 'http://localhost:4567/'
|
|
27
27
|
assert_equal @manifest.skeleton['api']['production'], 'https://yourapp.com/'
|
|
28
28
|
end
|
|
29
|
+
|
|
30
|
+
test 'specifies the US region by default' do
|
|
31
|
+
assert_equal @manifest.skeleton['api']['regions'], ['us']
|
|
32
|
+
end
|
|
29
33
|
end
|
|
30
34
|
|
|
31
35
|
context "POST manifest" do
|
|
@@ -40,6 +44,10 @@ class ManifestTest < Test::Unit::TestCase
|
|
|
40
44
|
assert_equal @manifest.skeleton['api']['production']['base_url'], 'https://yourapp.com/heroku/resources'
|
|
41
45
|
assert_equal @manifest.skeleton['api']['production']['sso_url'], 'https://yourapp.com/sso/login'
|
|
42
46
|
end
|
|
47
|
+
|
|
48
|
+
test 'specifies the US region by default' do
|
|
49
|
+
assert_equal @manifest.skeleton['api']['regions'], ['us']
|
|
50
|
+
end
|
|
43
51
|
end
|
|
44
52
|
|
|
45
53
|
context 'manifest without sso' do
|
data/test/sso_check_test.rb
CHANGED
|
@@ -5,14 +5,14 @@ class SsoCheckTest < Test::Unit::TestCase
|
|
|
5
5
|
include ProviderMock
|
|
6
6
|
|
|
7
7
|
def check ; SsoCheck ; end
|
|
8
|
-
%w{get post}.each do |method|
|
|
8
|
+
%w{get post}.each do |method|
|
|
9
9
|
context "via #{method}" do
|
|
10
10
|
setup do
|
|
11
11
|
@data = Manifest.new(:sso => true, :method => method).
|
|
12
12
|
skeleton.merge :id => 123
|
|
13
13
|
@data['api']['sso_salt'] = 'SSO_SALT'
|
|
14
14
|
end
|
|
15
|
-
|
|
15
|
+
|
|
16
16
|
test "working sso request" do
|
|
17
17
|
use_provider_endpoint('working', 'sso')
|
|
18
18
|
assert_valid
|
metadata
CHANGED
|
@@ -1,222 +1,228 @@
|
|
|
1
|
-
--- !ruby/object:Gem::Specification
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: kensa
|
|
3
|
-
version: !ruby/object:Gem::Version
|
|
4
|
-
|
|
3
|
+
version: !ruby/object:Gem::Version
|
|
4
|
+
version: 1.4.2
|
|
5
5
|
prerelease:
|
|
6
|
-
segments:
|
|
7
|
-
- 1
|
|
8
|
-
- 4
|
|
9
|
-
- 1
|
|
10
|
-
version: 1.4.1
|
|
11
6
|
platform: ruby
|
|
12
|
-
authors:
|
|
7
|
+
authors:
|
|
13
8
|
- Blake Mizerany
|
|
14
9
|
- Pedro Belo
|
|
15
10
|
- Adam Wiggins
|
|
16
11
|
- Glenn Gillen
|
|
17
12
|
- Chris Continanza
|
|
13
|
+
- Matthew Conway
|
|
18
14
|
autorequire:
|
|
19
15
|
bindir: bin
|
|
20
16
|
cert_chain: []
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
dependencies:
|
|
25
|
-
- !ruby/object:Gem::Dependency
|
|
26
|
-
requirement: &id001 !ruby/object:Gem::Requirement
|
|
27
|
-
none: false
|
|
28
|
-
requirements:
|
|
29
|
-
- - ">="
|
|
30
|
-
- !ruby/object:Gem::Version
|
|
31
|
-
hash: 3
|
|
32
|
-
segments:
|
|
33
|
-
- 0
|
|
34
|
-
version: "0"
|
|
35
|
-
version_requirements: *id001
|
|
17
|
+
date: 2013-05-08 00:00:00.000000000 Z
|
|
18
|
+
dependencies:
|
|
19
|
+
- !ruby/object:Gem::Dependency
|
|
36
20
|
name: contest
|
|
37
|
-
|
|
21
|
+
requirement: !ruby/object:Gem::Requirement
|
|
22
|
+
none: false
|
|
23
|
+
requirements:
|
|
24
|
+
- - ! '>='
|
|
25
|
+
- !ruby/object:Gem::Version
|
|
26
|
+
version: '0'
|
|
38
27
|
type: :development
|
|
39
|
-
|
|
40
|
-
|
|
28
|
+
prerelease: false
|
|
29
|
+
version_requirements: !ruby/object:Gem::Requirement
|
|
41
30
|
none: false
|
|
42
|
-
requirements:
|
|
43
|
-
- -
|
|
44
|
-
- !ruby/object:Gem::Version
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
- 0
|
|
48
|
-
- 3
|
|
49
|
-
- 5
|
|
50
|
-
version: 0.3.5
|
|
51
|
-
version_requirements: *id002
|
|
31
|
+
requirements:
|
|
32
|
+
- - ! '>='
|
|
33
|
+
- !ruby/object:Gem::Version
|
|
34
|
+
version: '0'
|
|
35
|
+
- !ruby/object:Gem::Dependency
|
|
52
36
|
name: timecop
|
|
53
|
-
|
|
37
|
+
requirement: !ruby/object:Gem::Requirement
|
|
38
|
+
none: false
|
|
39
|
+
requirements:
|
|
40
|
+
- - ! '>='
|
|
41
|
+
- !ruby/object:Gem::Version
|
|
42
|
+
version: 0.3.5
|
|
54
43
|
type: :development
|
|
55
|
-
|
|
56
|
-
|
|
44
|
+
prerelease: false
|
|
45
|
+
version_requirements: !ruby/object:Gem::Requirement
|
|
57
46
|
none: false
|
|
58
|
-
requirements:
|
|
59
|
-
- -
|
|
60
|
-
- !ruby/object:Gem::Version
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
- 0
|
|
64
|
-
- 9
|
|
65
|
-
version: "0.9"
|
|
66
|
-
version_requirements: *id003
|
|
47
|
+
requirements:
|
|
48
|
+
- - ! '>='
|
|
49
|
+
- !ruby/object:Gem::Version
|
|
50
|
+
version: 0.3.5
|
|
51
|
+
- !ruby/object:Gem::Dependency
|
|
67
52
|
name: sinatra
|
|
68
|
-
|
|
53
|
+
requirement: !ruby/object:Gem::Requirement
|
|
54
|
+
none: false
|
|
55
|
+
requirements:
|
|
56
|
+
- - ! '>='
|
|
57
|
+
- !ruby/object:Gem::Version
|
|
58
|
+
version: '0.9'
|
|
69
59
|
type: :development
|
|
70
|
-
|
|
71
|
-
|
|
60
|
+
prerelease: false
|
|
61
|
+
version_requirements: !ruby/object:Gem::Requirement
|
|
72
62
|
none: false
|
|
73
|
-
requirements:
|
|
74
|
-
- -
|
|
75
|
-
- !ruby/object:Gem::Version
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
- 0
|
|
79
|
-
version: "0"
|
|
80
|
-
version_requirements: *id004
|
|
63
|
+
requirements:
|
|
64
|
+
- - ! '>='
|
|
65
|
+
- !ruby/object:Gem::Version
|
|
66
|
+
version: '0.9'
|
|
67
|
+
- !ruby/object:Gem::Dependency
|
|
81
68
|
name: contest
|
|
82
|
-
|
|
69
|
+
requirement: !ruby/object:Gem::Requirement
|
|
70
|
+
none: false
|
|
71
|
+
requirements:
|
|
72
|
+
- - ! '>='
|
|
73
|
+
- !ruby/object:Gem::Version
|
|
74
|
+
version: '0'
|
|
83
75
|
type: :development
|
|
84
|
-
|
|
85
|
-
|
|
76
|
+
prerelease: false
|
|
77
|
+
version_requirements: !ruby/object:Gem::Requirement
|
|
86
78
|
none: false
|
|
87
|
-
requirements:
|
|
88
|
-
- -
|
|
89
|
-
- !ruby/object:Gem::Version
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
- 0
|
|
93
|
-
version: "0"
|
|
94
|
-
version_requirements: *id005
|
|
79
|
+
requirements:
|
|
80
|
+
- - ! '>='
|
|
81
|
+
- !ruby/object:Gem::Version
|
|
82
|
+
version: '0'
|
|
83
|
+
- !ruby/object:Gem::Dependency
|
|
95
84
|
name: haml
|
|
96
|
-
|
|
85
|
+
requirement: !ruby/object:Gem::Requirement
|
|
86
|
+
none: false
|
|
87
|
+
requirements:
|
|
88
|
+
- - ! '>='
|
|
89
|
+
- !ruby/object:Gem::Version
|
|
90
|
+
version: '0'
|
|
97
91
|
type: :development
|
|
98
|
-
|
|
99
|
-
|
|
92
|
+
prerelease: false
|
|
93
|
+
version_requirements: !ruby/object:Gem::Requirement
|
|
100
94
|
none: false
|
|
101
|
-
requirements:
|
|
102
|
-
- -
|
|
103
|
-
- !ruby/object:Gem::Version
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
- 0
|
|
107
|
-
version: "0"
|
|
108
|
-
version_requirements: *id006
|
|
95
|
+
requirements:
|
|
96
|
+
- - ! '>='
|
|
97
|
+
- !ruby/object:Gem::Version
|
|
98
|
+
version: '0'
|
|
99
|
+
- !ruby/object:Gem::Dependency
|
|
109
100
|
name: rr
|
|
110
|
-
|
|
101
|
+
requirement: !ruby/object:Gem::Requirement
|
|
102
|
+
none: false
|
|
103
|
+
requirements:
|
|
104
|
+
- - ! '>='
|
|
105
|
+
- !ruby/object:Gem::Version
|
|
106
|
+
version: '0'
|
|
111
107
|
type: :development
|
|
112
|
-
|
|
113
|
-
|
|
108
|
+
prerelease: false
|
|
109
|
+
version_requirements: !ruby/object:Gem::Requirement
|
|
114
110
|
none: false
|
|
115
|
-
requirements:
|
|
116
|
-
- -
|
|
117
|
-
- !ruby/object:Gem::Version
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
- 0
|
|
121
|
-
version: "0"
|
|
122
|
-
version_requirements: *id007
|
|
111
|
+
requirements:
|
|
112
|
+
- - ! '>='
|
|
113
|
+
- !ruby/object:Gem::Version
|
|
114
|
+
version: '0'
|
|
115
|
+
- !ruby/object:Gem::Dependency
|
|
123
116
|
name: fakefs
|
|
124
|
-
|
|
117
|
+
requirement: !ruby/object:Gem::Requirement
|
|
118
|
+
none: false
|
|
119
|
+
requirements:
|
|
120
|
+
- - ! '>='
|
|
121
|
+
- !ruby/object:Gem::Version
|
|
122
|
+
version: '0'
|
|
125
123
|
type: :development
|
|
126
|
-
|
|
127
|
-
|
|
124
|
+
prerelease: false
|
|
125
|
+
version_requirements: !ruby/object:Gem::Requirement
|
|
128
126
|
none: false
|
|
129
|
-
requirements:
|
|
130
|
-
- -
|
|
131
|
-
- !ruby/object:Gem::Version
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
- 0
|
|
135
|
-
version: "0"
|
|
136
|
-
version_requirements: *id008
|
|
127
|
+
requirements:
|
|
128
|
+
- - ! '>='
|
|
129
|
+
- !ruby/object:Gem::Version
|
|
130
|
+
version: '0'
|
|
131
|
+
- !ruby/object:Gem::Dependency
|
|
137
132
|
name: artifice
|
|
138
|
-
|
|
133
|
+
requirement: !ruby/object:Gem::Requirement
|
|
134
|
+
none: false
|
|
135
|
+
requirements:
|
|
136
|
+
- - ! '>='
|
|
137
|
+
- !ruby/object:Gem::Version
|
|
138
|
+
version: '0'
|
|
139
139
|
type: :development
|
|
140
|
-
|
|
141
|
-
|
|
140
|
+
prerelease: false
|
|
141
|
+
version_requirements: !ruby/object:Gem::Requirement
|
|
142
142
|
none: false
|
|
143
|
-
requirements:
|
|
143
|
+
requirements:
|
|
144
|
+
- - ! '>='
|
|
145
|
+
- !ruby/object:Gem::Version
|
|
146
|
+
version: '0'
|
|
147
|
+
- !ruby/object:Gem::Dependency
|
|
148
|
+
name: rest-client
|
|
149
|
+
requirement: !ruby/object:Gem::Requirement
|
|
150
|
+
none: false
|
|
151
|
+
requirements:
|
|
144
152
|
- - <
|
|
145
|
-
- !ruby/object:Gem::Version
|
|
146
|
-
hash: 11
|
|
147
|
-
segments:
|
|
148
|
-
- 1
|
|
149
|
-
- 7
|
|
150
|
-
- 0
|
|
153
|
+
- !ruby/object:Gem::Version
|
|
151
154
|
version: 1.7.0
|
|
152
|
-
- -
|
|
153
|
-
- !ruby/object:Gem::Version
|
|
154
|
-
hash: 7
|
|
155
|
-
segments:
|
|
156
|
-
- 1
|
|
157
|
-
- 4
|
|
158
|
-
- 0
|
|
155
|
+
- - ! '>='
|
|
156
|
+
- !ruby/object:Gem::Version
|
|
159
157
|
version: 1.4.0
|
|
160
|
-
version_requirements: *id009
|
|
161
|
-
name: rest-client
|
|
162
|
-
prerelease: false
|
|
163
158
|
type: :runtime
|
|
164
|
-
|
|
165
|
-
|
|
159
|
+
prerelease: false
|
|
160
|
+
version_requirements: !ruby/object:Gem::Requirement
|
|
166
161
|
none: false
|
|
167
|
-
requirements:
|
|
168
|
-
- -
|
|
169
|
-
- !ruby/object:Gem::Version
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
version_requirements: *id010
|
|
162
|
+
requirements:
|
|
163
|
+
- - <
|
|
164
|
+
- !ruby/object:Gem::Version
|
|
165
|
+
version: 1.7.0
|
|
166
|
+
- - ! '>='
|
|
167
|
+
- !ruby/object:Gem::Version
|
|
168
|
+
version: 1.4.0
|
|
169
|
+
- !ruby/object:Gem::Dependency
|
|
176
170
|
name: term-ansicolor
|
|
177
|
-
|
|
171
|
+
requirement: !ruby/object:Gem::Requirement
|
|
172
|
+
none: false
|
|
173
|
+
requirements:
|
|
174
|
+
- - ~>
|
|
175
|
+
- !ruby/object:Gem::Version
|
|
176
|
+
version: '1.0'
|
|
178
177
|
type: :runtime
|
|
179
|
-
|
|
180
|
-
|
|
178
|
+
prerelease: false
|
|
179
|
+
version_requirements: !ruby/object:Gem::Requirement
|
|
181
180
|
none: false
|
|
182
|
-
requirements:
|
|
183
|
-
- -
|
|
184
|
-
- !ruby/object:Gem::Version
|
|
185
|
-
|
|
186
|
-
|
|
187
|
-
- 0
|
|
188
|
-
- 3
|
|
189
|
-
- 2
|
|
190
|
-
version: 0.3.2
|
|
191
|
-
version_requirements: *id011
|
|
181
|
+
requirements:
|
|
182
|
+
- - ~>
|
|
183
|
+
- !ruby/object:Gem::Version
|
|
184
|
+
version: '1.0'
|
|
185
|
+
- !ruby/object:Gem::Dependency
|
|
192
186
|
name: launchy
|
|
193
|
-
|
|
187
|
+
requirement: !ruby/object:Gem::Requirement
|
|
188
|
+
none: false
|
|
189
|
+
requirements:
|
|
190
|
+
- - ! '>='
|
|
191
|
+
- !ruby/object:Gem::Version
|
|
192
|
+
version: 0.3.2
|
|
194
193
|
type: :runtime
|
|
195
|
-
|
|
196
|
-
|
|
194
|
+
prerelease: false
|
|
195
|
+
version_requirements: !ruby/object:Gem::Requirement
|
|
197
196
|
none: false
|
|
198
|
-
requirements:
|
|
199
|
-
- -
|
|
200
|
-
- !ruby/object:Gem::Version
|
|
201
|
-
|
|
202
|
-
|
|
203
|
-
- 1
|
|
204
|
-
- 0
|
|
205
|
-
- 0
|
|
206
|
-
version: 1.0.0
|
|
207
|
-
version_requirements: *id012
|
|
197
|
+
requirements:
|
|
198
|
+
- - ! '>='
|
|
199
|
+
- !ruby/object:Gem::Version
|
|
200
|
+
version: 0.3.2
|
|
201
|
+
- !ruby/object:Gem::Dependency
|
|
208
202
|
name: mechanize
|
|
209
|
-
|
|
203
|
+
requirement: !ruby/object:Gem::Requirement
|
|
204
|
+
none: false
|
|
205
|
+
requirements:
|
|
206
|
+
- - ~>
|
|
207
|
+
- !ruby/object:Gem::Version
|
|
208
|
+
version: 2.6.0
|
|
210
209
|
type: :runtime
|
|
211
|
-
|
|
210
|
+
prerelease: false
|
|
211
|
+
version_requirements: !ruby/object:Gem::Requirement
|
|
212
|
+
none: false
|
|
213
|
+
requirements:
|
|
214
|
+
- - ~>
|
|
215
|
+
- !ruby/object:Gem::Version
|
|
216
|
+
version: 2.6.0
|
|
217
|
+
description: Kensa is a command-line tool to help add-on providers integrating their
|
|
218
|
+
services with Heroku. It manages manifest files, and provides a TDD-like approach
|
|
219
|
+
for programmers to test and develop their APIs.
|
|
212
220
|
email: pedro@heroku.com
|
|
213
|
-
executables:
|
|
221
|
+
executables:
|
|
214
222
|
- kensa
|
|
215
223
|
extensions: []
|
|
216
|
-
|
|
217
224
|
extra_rdoc_files: []
|
|
218
|
-
|
|
219
|
-
files:
|
|
225
|
+
files:
|
|
220
226
|
- .gitignore
|
|
221
227
|
- .travis.yml
|
|
222
228
|
- Gemfile
|
|
@@ -253,41 +259,31 @@ files:
|
|
|
253
259
|
- test/resources/server.rb
|
|
254
260
|
- test/sso_check_test.rb
|
|
255
261
|
- test/sso_test.rb
|
|
256
|
-
has_rdoc: true
|
|
257
262
|
homepage: http://provider.heroku.com/resources
|
|
258
263
|
licenses: []
|
|
259
|
-
|
|
260
264
|
post_install_message:
|
|
261
265
|
rdoc_options: []
|
|
262
|
-
|
|
263
|
-
require_paths:
|
|
266
|
+
require_paths:
|
|
264
267
|
- lib
|
|
265
|
-
required_ruby_version: !ruby/object:Gem::Requirement
|
|
268
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
|
266
269
|
none: false
|
|
267
|
-
requirements:
|
|
268
|
-
- -
|
|
269
|
-
- !ruby/object:Gem::Version
|
|
270
|
-
|
|
271
|
-
|
|
272
|
-
- 0
|
|
273
|
-
version: "0"
|
|
274
|
-
required_rubygems_version: !ruby/object:Gem::Requirement
|
|
270
|
+
requirements:
|
|
271
|
+
- - ! '>='
|
|
272
|
+
- !ruby/object:Gem::Version
|
|
273
|
+
version: '0'
|
|
274
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
|
275
275
|
none: false
|
|
276
|
-
requirements:
|
|
277
|
-
- -
|
|
278
|
-
- !ruby/object:Gem::Version
|
|
279
|
-
|
|
280
|
-
segments:
|
|
281
|
-
- 0
|
|
282
|
-
version: "0"
|
|
276
|
+
requirements:
|
|
277
|
+
- - ! '>='
|
|
278
|
+
- !ruby/object:Gem::Version
|
|
279
|
+
version: '0'
|
|
283
280
|
requirements: []
|
|
284
|
-
|
|
285
281
|
rubyforge_project: kensa
|
|
286
|
-
rubygems_version: 1.
|
|
282
|
+
rubygems_version: 1.8.23
|
|
287
283
|
signing_key:
|
|
288
284
|
specification_version: 3
|
|
289
285
|
summary: Tool to help Heroku add-on providers integrating their services
|
|
290
|
-
test_files:
|
|
286
|
+
test_files:
|
|
291
287
|
- test/all_check_test.rb
|
|
292
288
|
- test/create_test.rb
|
|
293
289
|
- test/deprovision_check_test.rb
|