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 ADDED
@@ -0,0 +1,5 @@
1
+ addon-manifest.json
2
+ pkg/
3
+ .rvmrc
4
+ tags
5
+ bundle/
data/Gemfile CHANGED
@@ -1,9 +1,6 @@
1
- source :gemcutter
1
+ source "http://rubygems.org"
2
2
  gemspec
3
- group :development do
4
- gem 'json'
5
- gem 'contest'
6
- gem 'haml'
7
- gem 'jeweler'
8
- gem 'rr'
3
+ group :development do
4
+ gem 'ruby-debug', :platform => :mri_18
5
+ gem 'ruby-debug19', :platform => :mri_19
9
6
  end
data/Gemfile.lock CHANGED
@@ -1,58 +1,94 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- kensa (1.1.4)
5
- kensa
6
- launchy (>= 0.3.2)
4
+ kensa (2.0.0rc2)
5
+ launchy (~> 2.0.5)
7
6
  mechanize (~> 1.0.0)
8
- rest-client (< 1.7.0, >= 1.4.0)
9
- term-ansicolor (~> 1.0)
10
- yajl-ruby (~> 0.6)
7
+ rest-client (~> 1.6.7)
8
+ term-ansicolor (~> 1.0.6)
9
+ test-unit (~> 1.2.3)
10
+ yajl-ruby (~> 0.8.3)
11
11
 
12
12
  GEM
13
13
  remote: http://rubygems.org/
14
14
  specs:
15
15
  addressable (2.2.6)
16
+ <<<<<<< HEAD
16
17
  ansi (1.3.0)
17
- contest (0.1.3)
18
- git (1.2.5)
19
- haml (3.1.2)
20
- jeweler (1.6.4)
21
- bundler (~> 1.0)
22
- git (>= 1.2.5)
23
- rake
24
- json (1.5.3)
18
+ archive-tar-minitar (0.5.2)
19
+ =======
20
+ >>>>>>> bef831b5998868443cbed5c3bfeeb74220bdc5ba
21
+ artifice (0.6)
22
+ rack-test
23
+ haml (3.1.3)
24
+ hoe (2.12.3)
25
+ rake (~> 0.8)
26
+ json (1.6.1)
25
27
  launchy (2.0.5)
26
28
  addressable (~> 2.2.6)
29
+ <<<<<<< HEAD
30
+ linecache (0.43)
31
+ linecache19 (0.5.12)
32
+ ruby_core_source (>= 0.1.4)
33
+ =======
34
+ >>>>>>> bef831b5998868443cbed5c3bfeeb74220bdc5ba
27
35
  mechanize (1.0.0)
28
36
  nokogiri (>= 1.2.1)
29
37
  mime-types (1.16)
30
38
  nokogiri (1.5.0)
31
- rack (1.3.2)
39
+ rack (1.3.3)
40
+ rack-test (0.6.1)
41
+ rack (>= 1.0)
32
42
  rake (0.9.2)
33
- rest-client (1.6.3)
43
+ rest-client (1.6.7)
34
44
  mime-types (>= 1.16)
45
+ <<<<<<< HEAD
35
46
  rr (1.0.3)
47
+ ruby-debug (0.10.4)
48
+ columnize (>= 0.1)
49
+ ruby-debug-base (~> 0.10.4.0)
50
+ ruby-debug-base (0.10.4)
51
+ linecache (>= 0.3)
52
+ ruby-debug-base19 (0.11.25)
53
+ columnize (>= 0.3.1)
54
+ linecache19 (>= 0.5.11)
55
+ ruby_core_source (>= 0.1.4)
56
+ ruby-debug19 (0.11.6)
57
+ columnize (>= 0.3.1)
58
+ linecache19 (>= 0.5.11)
59
+ ruby-debug-base19 (>= 0.11.19)
60
+ ruby_core_source (0.1.5)
61
+ archive-tar-minitar (>= 0.5.2)
62
+ =======
63
+ rr (1.0.4)
64
+ >>>>>>> bef831b5998868443cbed5c3bfeeb74220bdc5ba
36
65
  sinatra (1.2.6)
37
66
  rack (~> 1.1)
38
- tilt (>= 1.2.2, < 2.0)
67
+ tilt (< 2.0, >= 1.2.2)
39
68
  term-ansicolor (1.0.6)
40
- tilt (1.3.2)
69
+ test-unit (1.2.3)
70
+ hoe (>= 1.5.1)
71
+ tilt (1.3.3)
41
72
  timecop (0.3.5)
42
- turn (0.8.2)
43
- ansi (>= 1.2.2)
44
73
  yajl-ruby (0.8.3)
45
74
 
46
75
  PLATFORMS
47
76
  ruby
48
77
 
49
78
  DEPENDENCIES
50
- contest
51
- haml
52
- jeweler
79
+ artifice (~> 0.6)
80
+ haml (~> 3.1.3)
53
81
  json
54
82
  kensa!
83
+ <<<<<<< HEAD
55
84
  rr
85
+ ruby-debug
86
+ ruby-debug19
56
87
  sinatra (>= 0.9)
57
88
  timecop (>= 0.3.5)
58
89
  turn
90
+ =======
91
+ rr (~> 1.0.4)
92
+ sinatra (~> 1.2.6)
93
+ timecop (~> 0.3.5)
94
+ >>>>>>> bef831b5998868443cbed5c3bfeeb74220bdc5ba
data/README.md CHANGED
@@ -24,6 +24,6 @@ http://provider.heroku.com/resources/technical/build/provisioning
24
24
 
25
25
  ## Meta #######################################################################
26
26
 
27
- Maintained by Pedro Belo.
27
+ Maintained by Glenn Gillen.
28
28
 
29
29
  Released under the MIT license. http://github.com/heroku/kensa
data/Rakefile CHANGED
@@ -1,39 +1,12 @@
1
+ $:.unshift File.dirname(__FILE__)
2
+ require "bundler/gem_tasks"
3
+
1
4
  desc 'Run all unit tests'
2
5
  task :test do
3
- fork do
4
- exec "ruby test/resources/server.rb > /dev/null 2>&1"
5
- #exec "ruby test/resources/server.rb > log.txt 2>&1"
6
+ puts require "test/helper"
7
+ Dir["test/*_test.rb"].each do |test_file|
8
+ require test_file
6
9
  end
7
- system "turn test"
8
- system "ps -ax | grep test/resources/server.rb | grep -v grep | awk '{print $1}' | xargs kill"
9
10
  end
10
11
 
11
12
  task :default => :test
12
-
13
- begin
14
- $: << File.join(File.dirname(__FILE__), 'lib')
15
- require 'jeweler'
16
- require 'heroku/kensa'
17
- Jeweler::Tasks.new do |gemspec|
18
- gemspec.name = "kensa"
19
- gemspec.summary = "Tool to help Heroku add-on providers integrating their services"
20
- gemspec.description = "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."
21
- gemspec.email = "pedro@heroku.com"
22
- gemspec.homepage = "http://provider.heroku.com/resources"
23
- gemspec.authors = ["Blake Mizerany", "Pedro Belo", "Adam Wiggins", "Chris Continanza"]
24
-
25
- gemspec.add_development_dependency(%q<turn>, [">= 0"])
26
- gemspec.add_development_dependency(%q<contest>, [">= 0"])
27
- gemspec.add_development_dependency(%q<timecop>, [">= 0.3.5"])
28
- gemspec.add_development_dependency(%q<sinatra>, [">= 0.9"])
29
- gemspec.add_dependency(%q<rest-client>, [">= 1.4.0", "< 1.7.0"])
30
- gemspec.add_dependency(%q<yajl-ruby>, ["~> 0.6"])
31
- gemspec.add_dependency(%q<term-ansicolor>, ["~> 1.0"])
32
- gemspec.add_dependency(%q<launchy>, [">= 0.3.2"])
33
- gemspec.add_dependency(%q<mechanize>, ["~> 1.0.0"])
34
-
35
- gemspec.version = Heroku::Kensa::VERSION
36
- end
37
- rescue LoadError
38
- puts "Jeweler not available. Install it with: gem install jeweler"
39
- end
data/kensa.gemspec CHANGED
@@ -1,104 +1,32 @@
1
- # Generated by jeweler
2
- # DO NOT EDIT THIS FILE DIRECTLY
3
- # Instead, edit Jeweler::Tasks in Rakefile, and run 'rake gemspec'
4
- # -*- encoding: utf-8 -*-
1
+ $:.push File.expand_path("../lib", __FILE__)
2
+ require "heroku/kensa/version"
5
3
 
6
4
  Gem::Specification.new do |s|
7
- s.name = %q{kensa}
8
- s.version = "1.1.4"
5
+ s.name = "kensa"
6
+ s.summary = "Tool to help Heroku add-on providers integrating their services"
7
+ s.description = "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."
8
+ s.email = "glenn@heroku.com"
9
+ s.homepage = "http://provider.heroku.com/resources"
10
+ s.authors = ["Blake Mizerany", "Pedro Belo", "Adam Wiggins", "Chris Continanza", "Glenn Gillen"]
11
+ s.version = Heroku::Kensa::VERSION
9
12
 
10
- s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
11
- s.authors = ["Blake Mizerany", "Pedro Belo", "Adam Wiggins", 'Chris Continanza']
12
- s.date = %q{2011-08-22}
13
- s.default_executable = %q{kensa}
14
- 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.}
15
- s.email = %q{pedro@heroku.com}
16
- s.executables = ["kensa"]
17
- s.extra_rdoc_files = [
18
- "README.md"
19
- ]
20
- s.files = [
21
- "Gemfile",
22
- "Gemfile.lock",
23
- "README.md",
24
- "Rakefile",
25
- "bin/kensa",
26
- "kensa.gemspec",
27
- "lib/heroku/kensa.rb",
28
- "lib/heroku/kensa/check.rb",
29
- "lib/heroku/kensa/client.rb",
30
- "lib/heroku/kensa/http.rb",
31
- "lib/heroku/kensa/manifest.rb",
32
- "lib/heroku/kensa/post_proxy.rb",
33
- "lib/heroku/kensa/sso.rb",
34
- "set-env.sh",
35
- "test/all_check_test.rb",
36
- "test/deprovision_check_test.rb",
37
- "test/helper.rb",
38
- "test/manifest_check_test.rb",
39
- "test/manifest_test.rb",
40
- "test/plan_change_check_test.rb",
41
- "test/provision_check_test.rb",
42
- "test/provision_response_check_test.rb",
43
- "test/resources/runner.rb",
44
- "test/resources/server.rb",
45
- "test/sso_check_test.rb",
46
- "test/sso_test.rb"
47
- ]
48
- s.homepage = %q{http://provider.heroku.com/resources}
49
- s.require_paths = ["lib"]
50
- s.rubygems_version = %q{1.6.2}
51
- s.summary = %q{Tool to help Heroku add-on providers integrating their services}
13
+ s.rubyforge_project = "kensa"
52
14
 
53
- if s.respond_to? :specification_version then
54
- s.specification_version = 3
15
+ s.files = `git ls-files`.split("\n")
16
+ s.test_files = `git ls-files -- {test,spec,features}/*`.split("\n")
17
+ s.executables = `git ls-files -- bin/*`.split("\n").map{ |f| File.basename(f) }
18
+ s.require_paths = ["lib"]
55
19
 
56
- if Gem::Version.new(Gem::VERSION) >= Gem::Version.new('1.2.0') then
57
- s.add_development_dependency(%q<turn>, [">= 0"])
58
- s.add_development_dependency(%q<contest>, [">= 0"])
59
- s.add_development_dependency(%q<timecop>, [">= 0.3.5"])
60
- s.add_development_dependency(%q<sinatra>, [">= 0.9"])
61
- s.add_development_dependency(%q<json>, [">= 0"])
62
- s.add_development_dependency(%q<contest>, [">= 0"])
63
- s.add_development_dependency(%q<haml>, [">= 0"])
64
- s.add_development_dependency(%q<jeweler>, [">= 0"])
65
- s.add_development_dependency(%q<rr>, [">= 0"])
66
- s.add_runtime_dependency(%q<rest-client>, ["< 1.7.0", ">= 1.4.0"])
67
- s.add_runtime_dependency(%q<yajl-ruby>, ["~> 0.6"])
68
- s.add_runtime_dependency(%q<term-ansicolor>, ["~> 1.0"])
69
- s.add_runtime_dependency(%q<launchy>, [">= 0.3.2"])
70
- s.add_runtime_dependency(%q<mechanize>, ["~> 1.0.0"])
71
- else
72
- s.add_dependency(%q<turn>, [">= 0"])
73
- s.add_dependency(%q<contest>, [">= 0"])
74
- s.add_dependency(%q<timecop>, [">= 0.3.5"])
75
- s.add_dependency(%q<sinatra>, [">= 0.9"])
76
- s.add_dependency(%q<json>, [">= 0"])
77
- s.add_dependency(%q<contest>, [">= 0"])
78
- s.add_dependency(%q<haml>, [">= 0"])
79
- s.add_dependency(%q<jeweler>, [">= 0"])
80
- s.add_dependency(%q<rr>, [">= 0"])
81
- s.add_dependency(%q<rest-client>, ["< 1.7.0", ">= 1.4.0"])
82
- s.add_dependency(%q<yajl-ruby>, ["~> 0.6"])
83
- s.add_dependency(%q<term-ansicolor>, ["~> 1.0"])
84
- s.add_dependency(%q<launchy>, [">= 0.3.2"])
85
- s.add_dependency(%q<mechanize>, ["~> 1.0.0"])
86
- end
87
- else
88
- s.add_dependency(%q<turn>, [">= 0"])
89
- s.add_dependency(%q<contest>, [">= 0"])
90
- s.add_dependency(%q<timecop>, [">= 0.3.5"])
91
- s.add_dependency(%q<sinatra>, [">= 0.9"])
92
- s.add_dependency(%q<json>, [">= 0"])
93
- s.add_dependency(%q<contest>, [">= 0"])
94
- s.add_dependency(%q<haml>, [">= 0"])
95
- s.add_dependency(%q<jeweler>, [">= 0"])
96
- s.add_dependency(%q<rr>, [">= 0"])
97
- s.add_dependency(%q<rest-client>, ["< 1.7.0", ">= 1.4.0"])
98
- s.add_dependency(%q<yajl-ruby>, ["~> 0.6"])
99
- s.add_dependency(%q<term-ansicolor>, ["~> 1.0"])
100
- s.add_dependency(%q<launchy>, [">= 0.3.2"])
101
- s.add_dependency(%q<mechanize>, ["~> 1.0.0"])
102
- end
20
+ s.add_development_dependency(%q<json>, [">= 0"])
21
+ s.add_development_dependency(%q<sinatra>, ["~> 1.2.6"])
22
+ s.add_development_dependency(%q<timecop>, ["~> 0.3.5"])
23
+ s.add_development_dependency(%q<rr>, ["~> 1.0.4"])
24
+ s.add_development_dependency(%q<artifice>, ["~> 0.6"])
25
+ s.add_development_dependency(%q<haml>, ["~> 3.1.3"])
26
+ s.add_runtime_dependency(%q<test-unit>, ["~> 1.2.3"])
27
+ s.add_runtime_dependency(%q<rest-client>, ["~> 1.6.7"])
28
+ s.add_runtime_dependency(%q<yajl-ruby>, ["~> 0.8.3"])
29
+ s.add_runtime_dependency(%q<term-ansicolor>, ["~> 1.0.6"])
30
+ s.add_runtime_dependency(%q<launchy>, ["~> 2.0.5"])
31
+ s.add_runtime_dependency(%q<mechanize>, ["~> 1.0.0"])
103
32
  end
104
-
@@ -31,19 +31,39 @@ module Heroku
31
31
  def test
32
32
  case check = @args.shift
33
33
  when "manifest"
34
- run_check ManifestCheck
34
+ require "#{File.dirname(__FILE__)}/../../../test/manifest_test"
35
+ require 'test/unit/ui/console/testrunner'
36
+ $manifest = Yajl::Parser.parse(resolve_manifest)
37
+ Test::Unit.run = true
38
+ Test::Unit::UI::Console::TestRunner.new(ManifestTest.suite).start
35
39
  when "provision"
36
- run_check ManifestCheck, ProvisionCheck
40
+ require "#{File.dirname(__FILE__)}/../../../test/provision_test"
41
+ require 'test/unit/ui/console/testrunner'
42
+ $manifest = Yajl::Parser.parse(resolve_manifest)
43
+ Test::Unit.run = true
44
+ Test::Unit::UI::Console::TestRunner.new(ProvisionTest.suite).start
37
45
  when "deprovision"
38
46
  id = @args.shift || abort("! no id specified; see usage")
39
- run_check ManifestCheck, DeprovisionCheck, :id => id
47
+ require "#{File.dirname(__FILE__)}/../../../test/deprovision_test"
48
+ require 'test/unit/ui/console/testrunner'
49
+ $manifest = Yajl::Parser.parse(resolve_manifest).merge("user_id" => id)
50
+ Test::Unit.run = true
51
+ Test::Unit::UI::Console::TestRunner.new(DeprovisionTest.suite).start
40
52
  when "planchange"
41
53
  id = @args.shift || abort("! no id specified; see usage")
42
54
  plan = @args.shift || abort("! no plan specified; see usage")
43
- run_check ManifestCheck, PlanChangeCheck, :id => id, :plan => plan
55
+ require "#{File.dirname(__FILE__)}/../../../test/plan_change_test"
56
+ require 'test/unit/ui/console/testrunner'
57
+ $manifest = Yajl::Parser.parse(resolve_manifest).merge("user_id" => id)
58
+ Test::Unit.run = true
59
+ Test::Unit::UI::Console::TestRunner.new(PlanChangeTest.suite).start
44
60
  when "sso"
45
61
  id = @args.shift || abort("! no id specified; see usage")
46
- run_check ManifestCheck, SsoCheck, :id => id
62
+ require "#{File.dirname(__FILE__)}/../../../test/sso_test"
63
+ require 'test/unit/ui/console/testrunner'
64
+ $manifest = Yajl::Parser.parse(resolve_manifest).merge("user_id" => id)
65
+ Test::Unit.run = true
66
+ Test::Unit::UI::Console::TestRunner.new(SsoTest.suite).start
47
67
  else
48
68
  abort "! Unknown test '#{check}'; see usage"
49
69
  end
@@ -11,10 +11,16 @@ module Heroku
11
11
  {
12
12
  "id": "myaddon",
13
13
  "api": {
14
- "config_vars": [ "MYADDON_URL" ],
14
+ "config_vars": [ "MYADDON_USER", "MYADDON_URL" ],
15
15
  "password": "#{generate_password(16)}",#{ sso_key }
16
- "production": "https://yourapp.com/",
17
- "test": "http://localhost:4567/"
16
+ "production": {
17
+ "base_url": "https://yourapp.com/heroku/resources",
18
+ "sso_url": "https://yourapp.com/sso/login"
19
+ },
20
+ "test": {
21
+ "base_url": "http://localhost:4567/heroku/resources",
22
+ "sso_url": "http://localhost:4567/sso/login"
23
+ }
18
24
  }
19
25
  }
20
26
  JSON
@@ -3,31 +3,41 @@ require 'restclient'
3
3
  module Heroku
4
4
  module Kensa
5
5
  class Sso
6
- attr_accessor :id, :url, :proxy_port, :timestamp, :token
6
+ attr_accessor :id, :url, :proxy_port, :timestamp, :token, :sso_url
7
7
 
8
8
  def initialize(data)
9
9
  @id = data[:id]
10
10
  @salt = data['api']['sso_salt']
11
11
 
12
12
  env = data.fetch :env, 'test'
13
- @url = data["api"][env].chomp('/')
14
- @use_post = data['api']['sso'].to_s.match(/post/i)
13
+ if data["api"][env].is_a?(Hash)
14
+ @url = data["api"][env]["base_url"].chomp('/')
15
+ @sso_url = data["api"][env]["sso_url"].chomp('/')
16
+ @use_post = true
17
+ else
18
+ @url = data["api"][env].chomp('/')
19
+ @use_post = false
20
+ end
15
21
  @proxy_port = find_available_port
16
22
  @timestamp = Time.now.to_i
17
23
  @token = make_token(@timestamp)
18
24
  end
19
25
 
20
26
  def path
21
- extra = self.POST? ? '/sso' : ''
22
- "/heroku/resources/#{id}#{extra}"
27
+ extra = self.post? ? '/sso' : ''
28
+ if self.post?
29
+ self.sso_url
30
+ else
31
+ "/heroku/resources/#{id}"
32
+ end
23
33
  end
24
34
 
25
- def POST?
35
+ def post?
26
36
  @use_post
27
37
  end
28
38
 
29
39
  def sso_url
30
- if self.POST?
40
+ if self.post?
31
41
  "http://localhost:#{@proxy_port}/"
32
42
  else
33
43
  full_url
@@ -40,13 +50,13 @@ module Heroku
40
50
  alias get_url full_url
41
51
 
42
52
  def post_url
43
- [ url, path ].join
53
+ @sso_url
44
54
  end
45
55
 
46
56
  def timestamp=(other)
47
57
  @timestamp = other
48
58
  @token = make_token(@timestamp)
49
- end
59
+ end
50
60
 
51
61
  def make_token(t)
52
62
  Digest::SHA1.hexdigest([@id, @salt, t].join(':'))
@@ -54,7 +64,7 @@ module Heroku
54
64
 
55
65
  def querystring
56
66
  return '' unless @salt
57
- '?' + query_data
67
+ '?' + query_data
58
68
  end
59
69
 
60
70
  def query_data
@@ -62,7 +72,7 @@ module Heroku
62
72
  end
63
73
 
64
74
  def query_params
65
- { 'token' => @token,
75
+ { 'token' => @token,
66
76
  'timestamp' => @timestamp.to_s,
67
77
  'nav-data' => sample_nav_data,
68
78
  'user' => 'username@example.com' }
@@ -87,7 +97,7 @@ module Heroku
87
97
  end
88
98
 
89
99
  def message
90
- if self.POST?
100
+ if self.post?
91
101
  "POSTing #{query_data} to #{post_url} via proxy on port #{@proxy_port}"
92
102
  else
93
103
  "Opening #{full_url}"
@@ -107,13 +117,13 @@ module Heroku
107
117
  end
108
118
 
109
119
  def run_proxy
110
- return unless self.POST?
120
+ return unless self.post?
111
121
  server = PostProxy.new self
112
122
  @proxy = server
113
123
 
114
124
  trap("INT") { server.stop }
115
125
  pid = fork do
116
- server.start
126
+ server.start
117
127
  end
118
128
  at_exit { server.stop; Process.waitpid pid }
119
129
  end
@@ -0,0 +1,6 @@
1
+ module Heroku
2
+ module Kensa
3
+ VERSION = "1.2.0rc1"
4
+ end
5
+ end
6
+
data/lib/heroku/kensa.rb CHANGED
@@ -1,11 +1,15 @@
1
- require 'heroku/kensa/http'
2
- require 'heroku/kensa/manifest'
3
- require 'heroku/kensa/check'
4
- require 'heroku/kensa/sso'
5
- require 'heroku/kensa/post_proxy'
1
+ require 'yajl'
2
+ require 'mechanize'
3
+ require 'socket'
4
+ require 'timeout'
5
+ require 'uri'
6
+ base_path = File.dirname(__FILE__)
7
+ %w{http manifest sso post_proxy}.each do |lib|
8
+ require "#{base_path}/kensa/#{lib}"
9
+ end
6
10
 
7
11
  module Heroku
8
12
  module Kensa
9
- VERSION = "1.1.4"
13
+ VERSION = "2.0.0rc"
10
14
  end
11
15
  end
@@ -0,0 +1,30 @@
1
+ $:.unshift(File.expand_path("../..",__FILE__))
2
+ require 'test/lib/dependencies'
3
+ class DeprovisionTest < Test::Unit::TestCase
4
+
5
+ def setup
6
+ super
7
+ @params = {}
8
+ end
9
+
10
+ def deprovision(auth = nil)
11
+ delete "/heroku/resources/123", auth
12
+ end
13
+
14
+ def test_working_deprovision_call
15
+ response = deprovision
16
+ assert_equal 200, response.code, "Expects a 200 - OK response/status code when successfully deprovisioned."
17
+ end
18
+
19
+ def test_detects_missing_auth
20
+ response = deprovision(auth = false)
21
+ assert_equal 401, response.code, "Provisioning request should require authentication."
22
+
23
+ response = deprovision(auth = [manifest["id"]+"a", manifest["api"]["password"]])
24
+ assert_equal 401, response.code, "Provisioning request appears to allow any username, should require '#{manifest["id"]}'."
25
+
26
+ response = deprovision(auth = [manifest["id"], manifest["api"]["password"]+"a"])
27
+ assert_equal 401, response.code, "Provisioning request appears to allow any password, should require '#{manifest["api"]["password"]}'."
28
+ end
29
+
30
+ end
data/test/helper.rb CHANGED
@@ -1,54 +1,21 @@
1
- require 'heroku/kensa'
2
- require 'contest'
1
+ require 'rubygems'
2
+ require 'bundler/setup'
3
3
  require 'timecop'
4
4
  require 'rr'
5
+ require 'test/unit'
6
+ require 'lib/heroku/kensa'
7
+ require 'test/resources/provider_server'
5
8
 
6
9
  class Test::Unit::TestCase
7
10
  include RR::Adapters::TestUnit
8
11
 
9
- # in your test, do
10
- # @screen = STDOUTScreen.new
11
- def assert_valid(data=@data, &blk)
12
- check = create_check(data, &blk)
13
- check.screen = @screen if @screen
14
- assert check.call
12
+ def setup
13
+ Timecop.freeze Time.now.utc
14
+ Artifice.activate_with(ProviderServer.new(manifest))
15
15
  end
16
16
 
17
- def assert_invalid(data=@data, &blk)
18
- check = create_check(data, &blk)
19
- check.screen = @screen if @screen
20
- assert !check.call
21
- end
22
-
23
- def create_check(data, &blk)
24
- check = self.check.new(data)
25
- blk.call(check) if blk
26
- check
27
- end
28
-
29
- module Headerize
30
- attr_accessor :headers
31
- end
32
-
33
- def to_json(data, headers={})
34
- body = Yajl::Encoder.encode(data)
35
- add_headers(body, headers)
36
- end
37
-
38
- def add_headers(o, headers={})
39
- o.extend Headerize
40
- o.headers = {}
41
- o.headers["Content-Type"] ||= "application/json"
42
- o.headers.merge!(headers)
43
- o
44
- end
45
-
46
- def kensa_stub(meth, o, returns)
47
- o.instance_eval { @returns = Array(returns) }
48
- eval <<-EVAL
49
- def o.#{meth}(*args)
50
- @returns.shift or fail("Nothing else to return from stub'ed method")
51
- end
52
- EVAL
17
+ def teardown
18
+ Timecop.return
19
+ Artifice.deactivate
53
20
  end
54
21
  end
@@ -0,0 +1,8 @@
1
+ require 'test/unit'
2
+ require 'artifice'
3
+ require 'rest-client'
4
+ require 'yajl'
5
+ require 'lib/heroku/kensa/manifest'
6
+ %w{response test_case formatter}.each do |lib|
7
+ require "test/lib/#{lib}"
8
+ end