kensa 1.1.4 → 1.2.0rc1

Sign up to get free protection for your applications and to get access to all the features.
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