kensa 1.4.1 → 1.4.2
Sign up to get free protection for your applications and to get access to all the features.
- 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
|
+
[![Build Status](https://travis-ci.org/heroku/kensa.png?branch=master)](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
|