gds-api-adapters 0.2.3 → 1.0.0

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/lib/gds_api/base.rb CHANGED
@@ -18,7 +18,8 @@ class GdsApi::Base
18
18
  end
19
19
 
20
20
  def_delegators :client, :get_json, :post_json, :post_json!,
21
- :put_json, :put_json!, :get_raw
21
+ :put_json, :put_json!, :delete_json!,
22
+ :get_raw
22
23
 
23
24
  attr_reader :options
24
25
 
@@ -1,6 +1,7 @@
1
1
  require_relative 'response'
2
2
  require_relative 'exceptions'
3
3
  require_relative 'version'
4
+ require 'net/http'
4
5
  require 'lrucache'
5
6
 
6
7
  module GdsApi
@@ -67,6 +68,10 @@ module GdsApi
67
68
  do_json_request(Net::HTTP::Put, url, params)
68
69
  end
69
70
 
71
+ def delete_json!(url, params = nil)
72
+ do_request(Net::HTTP::Delete, url, params)
73
+ end
74
+
70
75
  private
71
76
  def do_raw_request(method_class, url, params = nil)
72
77
  response, loggable = do_request(method_class, url, params)
@@ -0,0 +1,23 @@
1
+ require_relative "base"
2
+
3
+ class GdsApi::LicenceApplication < GdsApi::Base
4
+ def details_for_licence(id, snac_code = nil)
5
+ return nil if id.nil?
6
+
7
+ if response = get_json(build_url(id, snac_code))
8
+ response.to_hash
9
+ else
10
+ nil
11
+ end
12
+ end
13
+
14
+ private
15
+
16
+ def build_url(id, snac_code)
17
+ if snac_code
18
+ "#{@endpoint}/api/#{id}/#{snac_code}"
19
+ else
20
+ "#{@endpoint}/api/#{id}"
21
+ end
22
+ end
23
+ end
@@ -12,7 +12,6 @@ module GdsApi
12
12
  @kind = options[:kind] || 'custom-application'
13
13
  @panopticon = options[:panopticon]
14
14
  @platform = options[:platform] || Plek.current.environment
15
- @timeout = options[:timeout] || 10
16
15
  end
17
16
 
18
17
  def record_to_artefact(record)
@@ -22,7 +21,7 @@ module GdsApi
22
21
  kind: kind,
23
22
  name: record.title,
24
23
  description: record.description,
25
- live: record.live
24
+ state: record.state
26
25
  }
27
26
  if rendering_app
28
27
  hash[:rendering_app] = rendering_app
@@ -60,7 +59,7 @@ module GdsApi
60
59
 
61
60
  def panopticon
62
61
  options = {
63
- timeout: @timeout
62
+ timeout: 5
64
63
  }
65
64
  @panopticon ||= GdsApi::Panopticon.new(@platform, options.merge(panopticon_api_credentials))
66
65
  end
@@ -45,6 +45,10 @@ class GdsApi::Panopticon < GdsApi::Base
45
45
  put_artefact(id_or_slug, artefact)
46
46
  end
47
47
 
48
+ def delete_artefact!(id_or_slug)
49
+ delete_json!("#{base_url}/#{id_or_slug}.json")
50
+ end
51
+
48
52
  def curated_lists
49
53
  get_json("#{@endpoint}/curated_lists.json").to_hash
50
54
  end
@@ -5,13 +5,12 @@ module GdsApi
5
5
  module Imminence
6
6
  def imminence_has_places(latitude, longitude, details)
7
7
  response = JSON.dump(details['details'])
8
- stub_request(:get, "http://imminence.test.alphagov.co.uk/places/#{details['slug']}.json").
9
- with(:query => {"lat" => latitude, "lng" => longitude, "limit" => "5"}).
10
- to_return(:status => 200, :body => response, :headers => {})
11
8
 
12
- stub_request(:get, "https://imminence.test.alphagov.co.uk/places/#{details['slug']}.json").
9
+ ["http", "https"].each do |protocol|
10
+ stub_request(:get, "#{protocol}://imminence.test.alphagov.co.uk/places/#{details['slug']}.json").
13
11
  with(:query => {"lat" => latitude, "lng" => longitude, "limit" => "5"}).
14
- to_return(:status => 200, :body => response, :headers => {})
12
+ to_return(:status => 200, :body => response, :headers => {})
13
+ end
15
14
  end
16
15
  end
17
16
  end
@@ -1,3 +1,3 @@
1
1
  module GdsApi
2
- VERSION = '0.2.3'
2
+ VERSION = '1.0.0'
3
3
  end
@@ -0,0 +1,77 @@
1
+ require "test_helper"
2
+ require "gds_api/licence_application"
3
+
4
+ class LicenceApplicationApiTest < MiniTest::Unit::TestCase
5
+
6
+ def api
7
+ GdsApi::LicenceApplication.new "test"
8
+ end
9
+
10
+ def test_should_not_be_nil
11
+ assert_equal false, api.nil?
12
+ end
13
+
14
+ def test_should_return_nil_if_id_nil
15
+ assert_equal nil, api.details_for_licence(nil)
16
+ end
17
+
18
+ def test_should_return_an_error_message_if_licence_is_unrecognised
19
+ stub_request(:get, "https://licenceapplication.test.alphagov.co.uk/api/bloop").
20
+ with(headers: GdsApi::JsonClient::REQUEST_HEADERS).
21
+ to_return(status: 404, body: "{\"error\": [\"Unrecognised Licence Id: bloop\"]}")
22
+
23
+ assert_equal nil, api.details_for_licence("bloop")
24
+ end
25
+
26
+ def test_should_provide_full_licence_details_for_canonical_id
27
+ stub_request(:get, "https://licenceapplication.test.alphagov.co.uk/api/590001").
28
+ with(headers: GdsApi::JsonClient::REQUEST_HEADERS).
29
+ to_return(status: 200, body: "{\"issuingAuthorityType\":\"non-geographical\",\"geographicalAvailability\":\"England\",\"issuingAuthorities\":[{\"authorityName\":\"Authority Name\",\"interactions\":{\"apply\":{\"url\":\"www.gov.uk\",\"usesLicensify\":true,\"description\":\"Custom description\",\"payment\":\"none\",\"paymentAmount\":0}}}]}")
30
+
31
+ expected = {
32
+ "issuingAuthorityType" => "non-geographical",
33
+ "geographicalAvailability" => "England",
34
+ "issuingAuthorities" => [{"authorityName" => "Authority Name",
35
+ "interactions" => {
36
+ "apply" => {
37
+ "url" => "www.gov.uk",
38
+ "usesLicensify" => true,
39
+ "description" => "Custom description",
40
+ "payment" => "none",
41
+ "paymentAmount" => 0}
42
+ }
43
+ }]
44
+ }
45
+
46
+ assert_equal expected, api.details_for_licence("590001")
47
+ end
48
+
49
+ def test_should_return_an_error_message_for_bad_snac_code_entry
50
+ stub_request(:get, "https://licenceapplication.test.alphagov.co.uk/api/590001/bleep").
51
+ with(headers: GdsApi::JsonClient::REQUEST_HEADERS).
52
+ to_return(status: 404, body: "{\"error\": [\"Unrecognised SNAC: bleep\"]}")
53
+
54
+ assert_equal nil, api.details_for_licence("590001", "bleep")
55
+ end
56
+
57
+ def test_should_return_error_messages_for_bad_licence_id_and_snac_code
58
+ stub_request(:get, "https://licenceapplication.test.alphagov.co.uk/api/bloop/bleep").
59
+ with(headers: GdsApi::JsonClient::REQUEST_HEADERS).
60
+ to_return(status: 404, body: "{\"error\": [\"Unrecognised Licence Id: bloop\", \"Unrecognised SNAC: bleep\"]}")
61
+
62
+ assert_equal nil, api.details_for_licence("bloop", "bleep")
63
+ end
64
+
65
+ def test_should_return_error_message_to_pick_a_relevant_snac_code_for_the_provided_licence_id
66
+ stub_request(:get, "https://licenceapplication.test.alphagov.co.uk/api/590001/sw10").
67
+ with(headers: GdsApi::JsonClient::REQUEST_HEADERS).
68
+ to_return(status: 200, body: "{\"error\": [\"Licence not available in the provided snac area\"], \"geographicalAvailability\": [\"Scotland\", \"NI\"]}")
69
+
70
+ expected = {
71
+ "error" => ["Licence not available in the provided snac area"],
72
+ "geographicalAvailability" => ["Scotland", "NI"]
73
+ }
74
+
75
+ assert_equal expected, api.details_for_licence("590001", "sw10")
76
+ end
77
+ end
@@ -30,7 +30,7 @@ class PanopticonApiTest < MiniTest::Unit::TestCase
30
30
  kind: 'custom-application',
31
31
  name: 'MyFoo',
32
32
  description: 'A custom foo of great customness.',
33
- live: true
33
+ state: 'live'
34
34
  }
35
35
  end
36
36
 
@@ -95,6 +95,15 @@ class PanopticonApiTest < MiniTest::Unit::TestCase
95
95
  api.update_artefact(1, basic_artefact)
96
96
  end
97
97
 
98
+ def test_can_delete_an_artefact
99
+ url = "#{PANOPTICON_ENDPOINT}/artefacts/1.json"
100
+ stub_request(:delete, url)
101
+ .with(body: "")
102
+ .to_return(status: 200, body: '{}')
103
+
104
+ api.delete_artefact!(1)
105
+ end
106
+
98
107
  def test_can_use_basic_auth
99
108
  credentials = {user: 'fred', password: 'secret'}
100
109
  api = GdsApi::Panopticon.new('test', endpoint_url: 'http://some.url', basic_auth: credentials)
metadata CHANGED
@@ -2,7 +2,7 @@
2
2
  name: gds-api-adapters
3
3
  version: !ruby/object:Gem::Version
4
4
  prerelease:
5
- version: 0.2.3
5
+ version: 1.0.0
6
6
  platform: ruby
7
7
  authors:
8
8
  - James Stewart
@@ -10,7 +10,7 @@ autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
12
 
13
- date: 2012-08-31 00:00:00 Z
13
+ date: 2012-08-15 00:00:00 Z
14
14
  dependencies:
15
15
  - !ruby/object:Gem::Dependency
16
16
  name: plek
@@ -143,36 +143,37 @@ extensions: []
143
143
  extra_rdoc_files: []
144
144
 
145
145
  files:
146
- - lib/gds_api/test_helpers/contactotron.rb
147
- - lib/gds_api/test_helpers/json_client_helper.rb
146
+ - lib/gds_api/version.rb
147
+ - lib/gds_api/publisher.rb
148
+ - lib/gds_api/panopticon/registerer.rb
149
+ - lib/gds_api/typhoeus_client.rb
150
+ - lib/gds_api/imminence.rb
151
+ - lib/gds_api/contactotron.rb
148
152
  - lib/gds_api/test_helpers/publisher.rb
149
- - lib/gds_api/test_helpers/panopticon.rb
150
153
  - lib/gds_api/test_helpers/imminence.rb
151
- - lib/gds_api/part_methods.rb
152
- - lib/gds_api/needotron.rb
153
- - lib/gds_api/typhoeus_client.rb
154
+ - lib/gds_api/test_helpers/contactotron.rb
155
+ - lib/gds_api/test_helpers/panopticon.rb
156
+ - lib/gds_api/test_helpers/json_client_helper.rb
157
+ - lib/gds_api/licence_application.rb
158
+ - lib/gds_api/base.rb
154
159
  - lib/gds_api/json_client.rb
155
- - lib/gds_api/contactotron.rb
156
- - lib/gds_api/oauth2_client.rb
157
160
  - lib/gds_api/response.rb
158
- - lib/gds_api/panopticon/registerer.rb
159
- - lib/gds_api/publisher.rb
160
- - lib/gds_api/exceptions.rb
161
- - lib/gds_api/version.rb
162
- - lib/gds_api/helpers.rb
163
- - lib/gds_api/base.rb
164
161
  - lib/gds_api/panopticon.rb
165
162
  - lib/gds_api/core-ext/openstruct.rb
166
- - lib/gds_api/imminence.rb
163
+ - lib/gds_api/oauth2_client.rb
164
+ - lib/gds_api/part_methods.rb
165
+ - lib/gds_api/needotron.rb
166
+ - lib/gds_api/exceptions.rb
167
+ - lib/gds_api/helpers.rb
167
168
  - README.md
168
169
  - Rakefile
169
170
  - test/contactotron_api_test.rb
170
- - test/json_client_test.rb
171
- - test/publisher_api_test.rb
172
- - test/panopticon_registerer_test.rb
173
171
  - test/panopticon_api_test.rb
174
- - test/test_helper.rb
172
+ - test/publisher_api_test.rb
173
+ - test/json_client_test.rb
175
174
  - test/gds_api_base_test.rb
175
+ - test/licence_application_api_test.rb
176
+ - test/test_helper.rb
176
177
  homepage: http://github.com/alphagov/gds-api-adapters
177
178
  licenses: []
178
179
 
@@ -186,7 +187,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
186
187
  requirements:
187
188
  - - ">="
188
189
  - !ruby/object:Gem::Version
189
- hash: 694492284820059124
190
+ hash: -2151341373007717106
190
191
  segments:
191
192
  - 0
192
193
  version: "0"
@@ -195,7 +196,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
195
196
  requirements:
196
197
  - - ">="
197
198
  - !ruby/object:Gem::Version
198
- hash: 694492284820059124
199
+ hash: -2151341373007717106
199
200
  segments:
200
201
  - 0
201
202
  version: "0"
@@ -208,9 +209,9 @@ specification_version: 3
208
209
  summary: Adapters to work with GDS APIs
209
210
  test_files:
210
211
  - test/contactotron_api_test.rb
211
- - test/json_client_test.rb
212
- - test/publisher_api_test.rb
213
- - test/panopticon_registerer_test.rb
214
212
  - test/panopticon_api_test.rb
215
- - test/test_helper.rb
213
+ - test/publisher_api_test.rb
214
+ - test/json_client_test.rb
216
215
  - test/gds_api_base_test.rb
216
+ - test/licence_application_api_test.rb
217
+ - test/test_helper.rb
@@ -1,55 +0,0 @@
1
- require_relative 'test_helper'
2
- require 'gds_api/panopticon'
3
-
4
- describe GdsApi::Panopticon::Registerer do
5
-
6
-
7
- describe "creating an instance of the panopticon client" do
8
- describe "setting the platform" do
9
- it "should create an instance using the current Plek environment as the platform by default" do
10
- Plek.stubs(:current).returns(stub(environment: "Something"))
11
-
12
- GdsApi::Panopticon.expects(:new).with("Something", anything()).returns(:panopticon_instance)
13
- r = GdsApi::Panopticon::Registerer.new({})
14
- assert_equal :panopticon_instance, r.send(:panopticon)
15
- end
16
-
17
- it "should allow overriding the platform" do
18
- Plek.stubs(:current).returns(stub(environment: "Something"))
19
-
20
- GdsApi::Panopticon.expects(:new).with("Something_else", anything()).returns(:panopticon_instance)
21
- r = GdsApi::Panopticon::Registerer.new({platform: "Something_else"})
22
- assert_equal :panopticon_instance, r.send(:panopticon)
23
- end
24
- end
25
-
26
- describe "setting other options" do
27
- it "should create an instance with a default timeout of 10 seconds" do
28
- GdsApi::Panopticon.expects(:new).with(anything(), {timeout: 10}).returns(:panopticon_instance)
29
- r = GdsApi::Panopticon::Registerer.new({})
30
- assert_equal :panopticon_instance, r.send(:panopticon)
31
- end
32
-
33
- it "should allow overriding the timeout" do
34
- GdsApi::Panopticon.expects(:new).with(anything(), {timeout: 15}).returns(:panopticon_instance)
35
- r = GdsApi::Panopticon::Registerer.new({timeout: 15})
36
- assert_equal :panopticon_instance, r.send(:panopticon)
37
- end
38
-
39
- it "shoule merge in the api credentials" do
40
- GdsApi::Panopticon::Registerer.any_instance.stubs(:panopticon_api_credentials).returns({foo: "Bar", baz: "kablooie"})
41
- GdsApi::Panopticon.expects(:new).with(anything(), {timeout: 10, foo: "Bar", baz: "kablooie"}).returns(:panopticon_instance)
42
- r = GdsApi::Panopticon::Registerer.new({})
43
- assert_equal :panopticon_instance, r.send(:panopticon)
44
- end
45
- end
46
-
47
- it "should memoize the panopticon instance" do
48
- GdsApi::Panopticon.expects(:new).once.returns(:panopticon_instance)
49
- r = GdsApi::Panopticon::Registerer.new({})
50
-
51
- assert_equal :panopticon_instance, r.send(:panopticon)
52
- assert_equal :panopticon_instance, r.send(:panopticon)
53
- end
54
- end
55
- end