heroku-api 0.3.4 → 0.3.5

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.
@@ -1,9 +1,15 @@
1
- 0.3.4 09/15/2012
1
+ 0.3.5 09/11/2012
2
+ ================
3
+
4
+ add get_attachments and mocks
5
+ update enable features usage and mocks to use 200/201 based on update/create
6
+
7
+ 0.3.4 08/15/2012
2
8
  ================
3
9
 
4
10
  update excon to get SSLv3 fix
5
11
 
6
- 0.3.3 09/15/2012
12
+ 0.3.3 08/15/2012
7
13
  ================
8
14
 
9
15
  update to more realistic self signed cert in tests
@@ -17,6 +17,7 @@ require "heroku/api/version"
17
17
 
18
18
  require "heroku/api/addons"
19
19
  require "heroku/api/apps"
20
+ require "heroku/api/attachments"
20
21
  require "heroku/api/collaborators"
21
22
  require "heroku/api/config_vars"
22
23
  require "heroku/api/domains"
@@ -0,0 +1,14 @@
1
+ module Heroku
2
+ class API
3
+
4
+ # GET /apps/:app/attachments
5
+ def get_attachments(app)
6
+ request(
7
+ :expects => 200,
8
+ :method => :get,
9
+ :path => "/apps/#{app}/attachments"
10
+ )
11
+ end
12
+
13
+ end
14
+ end
@@ -34,7 +34,7 @@ module Heroku
34
34
  # POST /features/:feature
35
35
  def post_feature(feature, app = nil)
36
36
  request(
37
- :expects => 200,
37
+ :expects => [200, 201],
38
38
  :method => :post,
39
39
  :path => "/features/#{feature}",
40
40
  :query => { 'app' => app }
@@ -1,5 +1,6 @@
1
1
  require 'heroku/api/mock/addons'
2
2
  require 'heroku/api/mock/apps'
3
+ require 'heroku/api/mock/attachments'
3
4
  require 'heroku/api/mock/collaborators'
4
5
  require 'heroku/api/mock/config_vars'
5
6
  require 'heroku/api/mock/domains'
@@ -23,6 +24,7 @@ module Heroku
23
24
  hash[key] = {
24
25
  :addons => {},
25
26
  :apps => [],
27
+ :attachments => {},
26
28
  :collaborators => {},
27
29
  :config_vars => {},
28
30
  :domains => {},
@@ -9,6 +9,7 @@ module Heroku
9
9
  with_mock_app(mock_data, app) do |app_data|
10
10
  mock_data[:addons].delete(app)
11
11
  mock_data[:apps].delete(app_data)
12
+ mock_data[:attachments].delete(app)
12
13
  mock_data[:collaborators].delete(app)
13
14
  mock_data[:config_vars].delete(app)
14
15
  mock_data[:domains].delete(app)
@@ -88,6 +89,7 @@ module Heroku
88
89
 
89
90
  mock_data[:addons][app] = []
90
91
  mock_data[:apps] << app_data
92
+ mock_data[:attachments][app] = []
91
93
  mock_data[:collaborators][app] = [{
92
94
  'access' => 'edit',
93
95
  'email' => 'email@example.com',
@@ -0,0 +1,19 @@
1
+ module Heroku
2
+ class API
3
+ module Mock
4
+
5
+ # stub GET /apps/:app/attachments
6
+ Excon.stub(:expects => 200, :method => :get, :path => %r{^/apps/([^/]+)/attachments}) do |params|
7
+ request_params, mock_data = parse_stub_params(params)
8
+ app, _ = request_params[:captures][:path]
9
+ with_mock_app(mock_data, app) do
10
+ {
11
+ :body => Heroku::API::OkJson.encode(mock_data[:attachments][app]),
12
+ :status => 200
13
+ }
14
+ end
15
+ end
16
+
17
+ end
18
+ end
19
+ end
@@ -69,7 +69,7 @@ module Heroku
69
69
  end
70
70
 
71
71
  # stub POST /features/:feature
72
- Excon.stub(:expects => 200, :method => :post, :path => %r{^/features/([^/]+)$}) do |params|
72
+ Excon.stub(:expects => [200, 201], :method => :post, :path => %r{^/features/([^/]+)$}) do |params|
73
73
  request_params, mock_data = parse_stub_params(params)
74
74
  app = request_params[:query].has_key?('app') && request_params[:query]['app']
75
75
  feature, _ = request_params[:captures][:path]
@@ -80,16 +80,26 @@ module Heroku
80
80
  # feature exists
81
81
  case feature_data['kind']
82
82
  when 'app'
83
- mock_data[:features][:app][app] << feature_data
83
+ status = if mock_data[:features][:app][app].include?(feature_data)
84
+ 200
85
+ else
86
+ mock_data[:features][:app][app] << feature_data
87
+ 201
88
+ end
84
89
  {
85
90
  :body => Heroku::API::OkJson.encode(feature_data),
86
- :status => 200
91
+ :status => status
87
92
  }
88
93
  when 'user'
89
- mock_data[:features][:user] << feature_data
94
+ status = if mock_data[:features][:user].include(feature_data)
95
+ 200
96
+ else
97
+ mock_data[:features][:user] << feature_data
98
+ 201
99
+ end
90
100
  {
91
101
  :body => '',
92
- :status => 200
102
+ :status => status
93
103
  }
94
104
  end
95
105
  else
@@ -1,5 +1,5 @@
1
1
  module Heroku
2
2
  class API
3
- VERSION = "0.3.4"
3
+ VERSION = "0.3.5"
4
4
  end
5
5
  end
@@ -0,0 +1,23 @@
1
+ require File.expand_path("#{File.dirname(__FILE__)}/test_helper")
2
+
3
+ class TestAttachments < MiniTest::Unit::TestCase
4
+
5
+ def test_get_attachments
6
+ with_app do |app_data|
7
+ response = heroku.get_attachments(app_data['name'])
8
+
9
+ assert_equal(200, response.status)
10
+ assert_equal(
11
+ [],
12
+ response.body
13
+ )
14
+ end
15
+ end
16
+
17
+ def test_get_attachments_app_not_found
18
+ assert_raises(Heroku::API::Errors::NotFound) do
19
+ heroku.get_attachments(random_name)
20
+ end
21
+ end
22
+
23
+ end
@@ -65,7 +65,7 @@ class TestFeatures < MiniTest::Unit::TestCase
65
65
  with_app do |app_data|
66
66
  response = heroku.post_feature('user_env_compile', app_data['name'])
67
67
 
68
- assert_equal(200, response.status)
68
+ assert_equal(201, response.status)
69
69
  assert_equal(@feature_data.merge('enabled' => true), response.body)
70
70
  end
71
71
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: heroku-api
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.3.4
4
+ version: 0.3.5
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -9,11 +9,11 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2012-08-15 00:00:00.000000000 Z
12
+ date: 2012-09-11 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: excon
16
- requirement: &70161190372300 !ruby/object:Gem::Requirement
16
+ requirement: &70278785472920 !ruby/object:Gem::Requirement
17
17
  none: false
18
18
  requirements:
19
19
  - - ~>
@@ -21,10 +21,10 @@ dependencies:
21
21
  version: 0.16.1
22
22
  type: :runtime
23
23
  prerelease: false
24
- version_requirements: *70161190372300
24
+ version_requirements: *70278785472920
25
25
  - !ruby/object:Gem::Dependency
26
26
  name: minitest
27
- requirement: &70161190370940 !ruby/object:Gem::Requirement
27
+ requirement: &70278785471860 !ruby/object:Gem::Requirement
28
28
  none: false
29
29
  requirements:
30
30
  - - ! '>='
@@ -32,10 +32,10 @@ dependencies:
32
32
  version: '0'
33
33
  type: :development
34
34
  prerelease: false
35
- version_requirements: *70161190370940
35
+ version_requirements: *70278785471860
36
36
  - !ruby/object:Gem::Dependency
37
37
  name: rake
38
- requirement: &70161190369520 !ruby/object:Gem::Requirement
38
+ requirement: &70278785471240 !ruby/object:Gem::Requirement
39
39
  none: false
40
40
  requirements:
41
41
  - - ! '>='
@@ -43,7 +43,7 @@ dependencies:
43
43
  version: '0'
44
44
  type: :development
45
45
  prerelease: false
46
- version_requirements: *70161190369520
46
+ version_requirements: *70278785471240
47
47
  description: Ruby Client for the Heroku API
48
48
  email:
49
49
  - wesley@heroku.com
@@ -62,6 +62,7 @@ files:
62
62
  - lib/heroku/api.rb
63
63
  - lib/heroku/api/addons.rb
64
64
  - lib/heroku/api/apps.rb
65
+ - lib/heroku/api/attachments.rb
65
66
  - lib/heroku/api/collaborators.rb
66
67
  - lib/heroku/api/config_vars.rb
67
68
  - lib/heroku/api/domains.rb
@@ -73,6 +74,7 @@ files:
73
74
  - lib/heroku/api/mock.rb
74
75
  - lib/heroku/api/mock/addons.rb
75
76
  - lib/heroku/api/mock/apps.rb
77
+ - lib/heroku/api/mock/attachments.rb
76
78
  - lib/heroku/api/mock/cache/get_addons.json
77
79
  - lib/heroku/api/mock/cache/get_features.json
78
80
  - lib/heroku/api/mock/cache/get_user.json
@@ -98,6 +100,7 @@ files:
98
100
  - test/data/site.key
99
101
  - test/test_addons.rb
100
102
  - test/test_apps.rb
103
+ - test/test_attachments.rb
101
104
  - test/test_collaborators.rb
102
105
  - test/test_config_vars.rb
103
106
  - test/test_domains.rb
@@ -125,7 +128,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
125
128
  version: '0'
126
129
  segments:
127
130
  - 0
128
- hash: 1107176326086611894
131
+ hash: 3188437513510408421
129
132
  required_rubygems_version: !ruby/object:Gem::Requirement
130
133
  none: false
131
134
  requirements:
@@ -134,7 +137,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
134
137
  version: '0'
135
138
  segments:
136
139
  - 0
137
- hash: 1107176326086611894
140
+ hash: 3188437513510408421
138
141
  requirements: []
139
142
  rubyforge_project:
140
143
  rubygems_version: 1.8.15
@@ -146,6 +149,7 @@ test_files:
146
149
  - test/data/site.key
147
150
  - test/test_addons.rb
148
151
  - test/test_apps.rb
152
+ - test/test_attachments.rb
149
153
  - test/test_collaborators.rb
150
154
  - test/test_config_vars.rb
151
155
  - test/test_domains.rb