frenetic 0.0.2.alpha4 → 0.0.2.alpha5

Sign up to get free protection for your applications and to get access to all the features.
@@ -1,5 +1,4 @@
1
1
  require 'addressable/uri'
2
- require 'patron' # Needed to prevent https://github.com/technoweenie/faraday/issues/140
3
2
  require 'faraday'
4
3
  require 'faraday_middleware'
5
4
  require 'rack-cache'
@@ -12,6 +11,7 @@ require "frenetic/version"
12
11
  class Frenetic
13
12
 
14
13
  class MissingAPIReference < StandardError; end
14
+ class InvalidAPIDescription < StandardError; end
15
15
 
16
16
  extend Forwardable
17
17
  def_delegators :@connection, :get, :put, :post, :delete
@@ -51,6 +51,8 @@ private
51
51
  def load_description
52
52
  if response = get( @root_url ) and response.success?
53
53
  response.body
54
+ else
55
+ raise InvalidAPIDescription, "Status code #{response.status} encountered."
54
56
  end
55
57
  end
56
58
  end
@@ -1,3 +1,3 @@
1
1
  class Frenetic
2
- VERSION = "0.0.2.alpha4"
2
+ VERSION = "0.0.2.alpha5"
3
3
  end
@@ -0,0 +1,36 @@
1
+ ---
2
+ http_interactions:
3
+ - request:
4
+ method: get
5
+ uri: http://example.org:5447/api
6
+ body:
7
+ encoding: US-ASCII
8
+ string: ''
9
+ headers:
10
+ Accept-Encoding:
11
+ - gzip;q=1.0,deflate;q=0.6,identity;q=0.3
12
+ Accept:
13
+ - ! '*/*'
14
+ User-Agent:
15
+ - Ruby
16
+ response:
17
+ status:
18
+ code: 401
19
+ message: ! 'Unauthorized '
20
+ headers:
21
+ Content-Type:
22
+ - application/json
23
+ Content-Length:
24
+ - '32'
25
+ Server:
26
+ - WEBrick/1.3.1 (Ruby/1.9.2/2011-07-09)
27
+ Date:
28
+ - Sun, 08 Apr 2012 02:09:53 GMT
29
+ Connection:
30
+ - Keep-Alive
31
+ body:
32
+ encoding: US-ASCII
33
+ string: ! '{\"error\":\"401 Unauthorized\"}'
34
+ http_version: !!null
35
+ recorded_at: Sun, 08 Apr 2012 02:09:53 GMT
36
+ recorded_with: VCR 2.0.1
@@ -40,13 +40,27 @@ describe Frenetic do
40
40
  end
41
41
 
42
42
  describe "#description" do
43
- subject do
44
- VCR.use_cassette('description_success') do
45
- client.description
43
+ context "for a conforming API" do
44
+ subject do
45
+ VCR.use_cassette('description_success') do
46
+ client.description
47
+ end
46
48
  end
49
+
50
+ it { should be_a( Frenetic::HalJson::ResponseWrapper ) }
47
51
  end
48
52
 
49
- it { should be_a( Frenetic::HalJson::ResponseWrapper ) }
53
+ context "with an unauthorized request" do
54
+ let(:fetch!) do
55
+ VCR.use_cassette('description_error_unauthorized') do
56
+ client.description
57
+ end
58
+ end
59
+
60
+ it "should raise an error" do
61
+ expect{ fetch! }.to raise_error(Frenetic::InvalidAPIDescription)
62
+ end
63
+ end
50
64
  end
51
65
 
52
66
  describe "#reload!" do
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: frenetic
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.2.alpha4
4
+ version: 0.0.2.alpha5
5
5
  prerelease: 6
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-06-15 00:00:00.000000000 Z
12
+ date: 2012-06-29 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: faraday
16
- requirement: &2151913620 !ruby/object:Gem::Requirement
16
+ requirement: &2151913920 !ruby/object:Gem::Requirement
17
17
  none: false
18
18
  requirements:
19
19
  - - ~>
@@ -21,10 +21,10 @@ dependencies:
21
21
  version: 0.8.1
22
22
  type: :runtime
23
23
  prerelease: false
24
- version_requirements: *2151913620
24
+ version_requirements: *2151913920
25
25
  - !ruby/object:Gem::Dependency
26
26
  name: faraday_middleware
27
- requirement: &2151911720 !ruby/object:Gem::Requirement
27
+ requirement: &2151912140 !ruby/object:Gem::Requirement
28
28
  none: false
29
29
  requirements:
30
30
  - - ~>
@@ -32,10 +32,10 @@ dependencies:
32
32
  version: 0.8.7
33
33
  type: :runtime
34
34
  prerelease: false
35
- version_requirements: *2151911720
35
+ version_requirements: *2151912140
36
36
  - !ruby/object:Gem::Dependency
37
37
  name: rack-cache
38
- requirement: &2151926320 !ruby/object:Gem::Requirement
38
+ requirement: &2151926360 !ruby/object:Gem::Requirement
39
39
  none: false
40
40
  requirements:
41
41
  - - ~>
@@ -43,10 +43,10 @@ dependencies:
43
43
  version: '1.1'
44
44
  type: :runtime
45
45
  prerelease: false
46
- version_requirements: *2151926320
46
+ version_requirements: *2151926360
47
47
  - !ruby/object:Gem::Dependency
48
48
  name: addressable
49
- requirement: &2151924940 !ruby/object:Gem::Requirement
49
+ requirement: &2151925080 !ruby/object:Gem::Requirement
50
50
  none: false
51
51
  requirements:
52
52
  - - ~>
@@ -54,10 +54,10 @@ dependencies:
54
54
  version: 2.2.8
55
55
  type: :runtime
56
56
  prerelease: false
57
- version_requirements: *2151924940
57
+ version_requirements: *2151925080
58
58
  - !ruby/object:Gem::Dependency
59
59
  name: patron
60
- requirement: &2151923740 !ruby/object:Gem::Requirement
60
+ requirement: &2151923860 !ruby/object:Gem::Requirement
61
61
  none: false
62
62
  requirements:
63
63
  - - ~>
@@ -65,10 +65,10 @@ dependencies:
65
65
  version: 0.4.18
66
66
  type: :runtime
67
67
  prerelease: false
68
- version_requirements: *2151923740
68
+ version_requirements: *2151923860
69
69
  - !ruby/object:Gem::Dependency
70
70
  name: guard-spork
71
- requirement: &2151922800 !ruby/object:Gem::Requirement
71
+ requirement: &2151922960 !ruby/object:Gem::Requirement
72
72
  none: false
73
73
  requirements:
74
74
  - - ~>
@@ -76,10 +76,10 @@ dependencies:
76
76
  version: 0.7.1
77
77
  type: :development
78
78
  prerelease: false
79
- version_requirements: *2151922800
79
+ version_requirements: *2151922960
80
80
  - !ruby/object:Gem::Dependency
81
81
  name: guard-rspec
82
- requirement: &2151921980 !ruby/object:Gem::Requirement
82
+ requirement: &2151922060 !ruby/object:Gem::Requirement
83
83
  none: false
84
84
  requirements:
85
85
  - - ~>
@@ -87,10 +87,10 @@ dependencies:
87
87
  version: 1.0.1
88
88
  type: :development
89
89
  prerelease: false
90
- version_requirements: *2151921980
90
+ version_requirements: *2151922060
91
91
  - !ruby/object:Gem::Dependency
92
92
  name: rspec
93
- requirement: &2151920600 !ruby/object:Gem::Requirement
93
+ requirement: &2151920740 !ruby/object:Gem::Requirement
94
94
  none: false
95
95
  requirements:
96
96
  - - ~>
@@ -98,10 +98,10 @@ dependencies:
98
98
  version: 2.10.0
99
99
  type: :development
100
100
  prerelease: false
101
- version_requirements: *2151920600
101
+ version_requirements: *2151920740
102
102
  - !ruby/object:Gem::Dependency
103
103
  name: bourne
104
- requirement: &2151935980 !ruby/object:Gem::Requirement
104
+ requirement: &2151936100 !ruby/object:Gem::Requirement
105
105
  none: false
106
106
  requirements:
107
107
  - - ~>
@@ -109,10 +109,10 @@ dependencies:
109
109
  version: 1.1.2
110
110
  type: :development
111
111
  prerelease: false
112
- version_requirements: *2151935980
112
+ version_requirements: *2151936100
113
113
  - !ruby/object:Gem::Dependency
114
114
  name: webmock
115
- requirement: &2151935280 !ruby/object:Gem::Requirement
115
+ requirement: &2151935220 !ruby/object:Gem::Requirement
116
116
  none: false
117
117
  requirements:
118
118
  - - ~>
@@ -120,10 +120,10 @@ dependencies:
120
120
  version: 1.8.7
121
121
  type: :development
122
122
  prerelease: false
123
- version_requirements: *2151935280
123
+ version_requirements: *2151935220
124
124
  - !ruby/object:Gem::Dependency
125
125
  name: vcr
126
- requirement: &2151933560 !ruby/object:Gem::Requirement
126
+ requirement: &2151933480 !ruby/object:Gem::Requirement
127
127
  none: false
128
128
  requirements:
129
129
  - - ~>
@@ -131,7 +131,7 @@ dependencies:
131
131
  version: 2.2.2
132
132
  type: :development
133
133
  prerelease: false
134
- version_requirements: *2151933560
134
+ version_requirements: *2151933480
135
135
  description: An opinionated Ruby-based Hypermedia API client.
136
136
  email:
137
137
  - dlindahl@customink.com
@@ -155,6 +155,7 @@ files:
155
155
  - lib/frenetic/resource.rb
156
156
  - lib/frenetic/version.rb
157
157
  - lib/recursive_open_struct.rb
158
+ - spec/fixtures/vcr_cassettes/description_error_unauthorized.yml
158
159
  - spec/fixtures/vcr_cassettes/description_success.yml
159
160
  - spec/lib/frenetic/configuration_spec.rb
160
161
  - spec/lib/frenetic/hal_json/response_wrapper_spec.rb
@@ -188,6 +189,7 @@ specification_version: 3
188
189
  summary: Here lies a Ruby-based Hypermedia API client that expects HAL+JSON and makes
189
190
  a lot of assumptions about your API.
190
191
  test_files:
192
+ - spec/fixtures/vcr_cassettes/description_error_unauthorized.yml
191
193
  - spec/fixtures/vcr_cassettes/description_success.yml
192
194
  - spec/lib/frenetic/configuration_spec.rb
193
195
  - spec/lib/frenetic/hal_json/response_wrapper_spec.rb