pact_broker-client 0.0.1 → 0.0.2

Sign up to get free protection for your applications and to get access to all the features.
data/Gemfile.lock CHANGED
@@ -1,7 +1,7 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- pact_broker-client (0.0.1)
4
+ pact_broker-client (0.0.2)
5
5
  httparty
6
6
  json
7
7
  pact
@@ -29,7 +29,7 @@ GEM
29
29
  json (1.8.1)
30
30
  method_source (0.8.2)
31
31
  multi_xml (0.5.5)
32
- pact (1.0.15)
32
+ pact (1.0.20)
33
33
  awesome_print (~> 1.1.0)
34
34
  find_a_port (~> 1.0.1)
35
35
  json
@@ -51,17 +51,17 @@ GEM
51
51
  rspec-core (~> 2.14.0)
52
52
  rspec-expectations (~> 2.14.0)
53
53
  rspec-mocks (~> 2.14.0)
54
- rspec-core (2.14.6)
54
+ rspec-core (2.14.7)
55
55
  rspec-expectations (2.14.3)
56
56
  diff-lcs (>= 1.1.3, < 2.0)
57
57
  rspec-fire (1.2.0)
58
58
  rspec (~> 2.11)
59
59
  rspec-mocks (2.14.4)
60
60
  slop (3.4.6)
61
- thin (1.6.0)
61
+ thin (1.6.1)
62
62
  daemons (>= 1.0.9)
63
63
  eventmachine (>= 1.0.0)
64
- rack (>= 1.5.0)
64
+ rack (>= 1.0.0)
65
65
  thor (0.18.1)
66
66
 
67
67
  PLATFORMS
data/README.md CHANGED
@@ -1,94 +1,3 @@
1
- # PactBrokerClient
1
+ # Pact Broker Client
2
2
 
3
- Add a detailed description of the new service here before your first commit.
4
-
5
- Information here will be consumed by the Treasure Map (via the Rumour Mill). Therefore, please retain the existing formatting on this page, importantly:
6
-
7
- * The service name at the top of the page
8
- * The location of this description text (between service name and Custodian(s)
9
- * Component Custodian(s)
10
-
11
- Other headings can be deleted if they are not relevant.
12
-
13
- **NOTE: The following is provided for convenience. Please check it carefully before your first commit.**
14
-
15
- ## Component Custodian(s)
16
-
17
- Enter Custodian(s) here
18
-
19
- ## Development
20
-
21
- Enter any developer instructions here.
22
-
23
- ### Database setup
24
-
25
- Instructions to set up the database for local testing.
26
-
27
- Then run migrations:
28
-
29
- $ bundle exec rake db:migrate
30
-
31
- ### Testing
32
-
33
- $ bundle exec rake
34
-
35
- ### Running
36
-
37
- Instructions to run the service locally.
38
-
39
- ### Debugging
40
-
41
- Any specific debugging tools built in to the service (health check is assumed so don't include that).
42
-
43
- ### Build
44
-
45
- **edit the below and add the correct endpoint**
46
-
47
- [Standalone (Bamboo)](http://master.cd.vpc.realestate.com.au/browse/YOUR_NEW_SERVICE_BUILD)
48
-
49
- ## Deployment
50
-
51
- Deployment scripts have been generated using [biq-deploy](https://git.realestate.com.au/business-systems/biq-deploy).
52
-
53
- #### EC2 environments
54
-
55
- Before deploying to EC2 environments, you may wish to check that the build you wish to deploy has been indexed.
56
-
57
- 1. Log in into the agent unix box:
58
-
59
- $ rea-ec2-ssh agent-01.biq
60
-
61
- 2. See the list of versions indexed and verify the expected version in the list:
62
-
63
- $ yum list --showduplicates --enablerepo=rea-el6-dev pact_broker_client
64
-
65
- You can get up an running with these scripts like so (from within the pact_broker_client project on your local machine):
66
-
67
- $ cd deploy
68
- $ bundle
69
- $ bundle exec bin/pact-broker-client-deploy-ec2 --help
70
-
71
- When deploying to an EC2 environment for the first time, you must create a node for the app:
72
-
73
- $ bundle exec bin/pact-broker-client-deploy-ec2 -t create -s $YOUR_SUBDOMAIN -p dev
74
-
75
- The first time the service is deployed, a database must be created. After adding the [required config values](https://git.realestate.com.au/business-systems/pact_broker_client/blob/master/lib/environment_variables.rb) to the
76
- environment's config-svc, you can run the db provision task:
77
-
78
- $ bundle exec bin/pact-broker-client-deploy-ec2 -t db_provision -s $YOUR_SUBDOMAIN
79
-
80
- Then you are free to migrate the db from then on:
81
-
82
- $ bundle exec bin/pact-broker-client-deploy-ec2 -t db_migrate -s $YOUR_SUBDOMAIN
83
-
84
- To deploy to a test environment (eg biq-qa1):
85
-
86
- $ bundle exec bin/pact-broker-client-deploy-ec2 -t deploy -s biq-qa1 -p dev -y
87
-
88
- #### Production
89
-
90
- Refer to the [production deployment readme](https://git.realestate.com.au/business-systems/pact_broker_client/blob/master/README-ProdDeploy.md).
91
-
92
- ### Architecture
93
-
94
- Any important architectural information.
3
+ A client for the Pact Broker. Publishes pacts to, and retrieves pacts from, the pact broker.
data/Rakefile CHANGED
@@ -20,8 +20,8 @@ Bundler::GemHelper.install_tasks
20
20
  require 'rspec/core/rake_task'
21
21
  #require 'geminabox-client'
22
22
 
23
- Dir.glob('lib/tasks/**/*.rake').each { |task| load task }
24
- Dir.glob('tasks/**/*.rake').each { |task| load task }
23
+ Dir.glob('lib/tasks/**/*.rake').each { |task| load "#{Dir.pwd}/#{task}" }
24
+ Dir.glob('tasks/**/*.rake').each { |task| load "#{Dir.pwd}/#{task}" }
25
25
  RSpec::Core::RakeTask.new(:spec)
26
26
 
27
27
  task :default => [:spec]
@@ -16,6 +16,20 @@ module PactBroker
16
16
  end
17
17
  end
18
18
 
19
+ def get1 options
20
+ response = get(pacticipant_base_url(options), headers: default_get_headers)
21
+ handle_response(response) do
22
+ response.to_hash
23
+ end
24
+ end
25
+
26
+ def list
27
+ response = get("/pacticipants", headers: default_get_headers)
28
+ handle_response(response) do
29
+ response.to_hash
30
+ end
31
+ end
32
+
19
33
  def repository_url options
20
34
  response = get("#{pacticipant_base_url(options)}/repository_url", headers: default_get_headers.merge('Accept' => 'text/plain'))
21
35
  handle_response(response) do
@@ -26,7 +40,7 @@ module PactBroker
26
40
  private
27
41
 
28
42
  def pacticipant_base_url options
29
- "/pacticipant/#{encode_param(options[:pacticipant])}"
43
+ "/pacticipants/#{encode_param(options[:pacticipant])}"
30
44
  end
31
45
 
32
46
  end
@@ -8,7 +8,7 @@ module PactBroker
8
8
 
9
9
  def publish options
10
10
  consumer_version = options[:consumer_version]
11
- pact_string = options[:pact]
11
+ pact_string = options[:pact_json]
12
12
  consumer_contract = ::Pact::ConsumerContract.from_json pact_string
13
13
  url = save_consumer_contract_url consumer_contract, consumer_version
14
14
  response = self.class.put(url, body: pact_string, headers: default_put_headers)
@@ -31,14 +31,14 @@ module PactBroker
31
31
  def find_last_consumer_contract_url options
32
32
  consumer_name = encode_param(options[:consumer])
33
33
  provider_name = encode_param(options[:provider])
34
- "/pacticipant/#{consumer_name}/versions/last/pacts/#{provider_name}"
34
+ "/pacticipants/#{consumer_name}/versions/last/pacts/#{provider_name}"
35
35
  end
36
36
 
37
37
  def save_consumer_contract_url consumer_contract, consumer_version
38
38
  consumer_name = encode_param(consumer_contract.consumer.name)
39
39
  provider_name = encode_param(consumer_contract.provider.name)
40
40
  version = encode_param(consumer_version)
41
- "/pacticipant/#{consumer_name}/versions/#{version}/pacts/#{provider_name}"
41
+ "/pacticipants/#{consumer_name}/versions/#{version}/pacts/#{provider_name}"
42
42
  end
43
43
  end
44
44
  end
@@ -25,6 +25,7 @@ module PactBroker
25
25
 
26
26
  def publish_pact pact_file
27
27
  begin
28
+ puts "Publishing #{pact_file} to pact broker at #{pact_broker_base_url}"
28
29
  pact_broker_client.pacticipants.versions.pacts.publish(pact_json: File.read(pact_file), consumer_version: consumer_version)
29
30
  true
30
31
  rescue => e
@@ -29,6 +29,7 @@ module PactBroker
29
29
 
30
30
  def rake_task
31
31
  namespace :pact do
32
+ desc "Publish pacts to pact broker"
32
33
  task task_name do
33
34
  require 'pact_broker/client/publish_pacts'
34
35
  success = PactBroker::Client::PublishPacts.new(pact_broker_base_url, FileList[@pattern], consumer_version).call
@@ -1,5 +1,5 @@
1
1
  module PactBroker
2
2
  module Client
3
- VERSION = '0.0.1'
3
+ VERSION = '0.0.2'
4
4
  end
5
5
  end
@@ -31,7 +31,7 @@ module PactBroker
31
31
  private
32
32
  def version_base_url options
33
33
  pacticipant = encode_param(options[:pacticipant])
34
- "/pacticipant/#{pacticipant}/versions"
34
+ "/pacticipants/#{pacticipant}/versions"
35
35
  end
36
36
  end
37
37
  end
@@ -6,12 +6,115 @@
6
6
  "name": "Pact Broker Client"
7
7
  },
8
8
  "interactions": [
9
+ {
10
+ "description": "a request to list pacticipants",
11
+ "provider_state": "'Condor' exists in the pact-broker",
12
+ "request": {
13
+ "method": "get",
14
+ "path": "/pacticipants",
15
+ "headers": {
16
+ }
17
+ },
18
+ "response": {
19
+ "headers": {
20
+ "Content-Type": "application/json+hal;charset=utf-8"
21
+ },
22
+ "status": 200,
23
+ "body": {
24
+ "_links": {
25
+ "self": {
26
+ "href": "http://localhost:1234/pacticipants"
27
+ },
28
+ "pacticipants": [
29
+ {
30
+ "href": "http://localhost:1234/pacticipants/Condor",
31
+ "name": "Condor"
32
+ }
33
+ ]
34
+ },
35
+ "pacticipants": [
36
+ {
37
+ "_links": {
38
+ "self": {
39
+ "href": "http://localhost:1234/pacticipants/Condor"
40
+ }
41
+ },
42
+ "name": "Condor",
43
+ "_embedded": {
44
+ "last_version": {
45
+ "_links": {
46
+ "self": {
47
+ "href": "http://localhost:1234/pacticipants/Condor/versions/1.3.0"
48
+ }
49
+ },
50
+ "number": "1.3.0"
51
+ }
52
+ }
53
+ }
54
+ ]
55
+ }
56
+ }
57
+ },
58
+ {
59
+ "description": "a request to get the Pricing Service",
60
+ "provider_state": "the 'Pricing Service' already exists in the pact-broker",
61
+ "request": {
62
+ "method": "get",
63
+ "path": "/pacticipants/Pricing%20Service",
64
+ "headers": {
65
+ }
66
+ },
67
+ "response": {
68
+ "headers": {
69
+ "Content-Type": "application/json+hal;charset=utf-8"
70
+ },
71
+ "status": 200,
72
+ "body": {
73
+ "_links": {
74
+ "self": {
75
+ "href": "http://localhost:1234/pacticipants/Pricing%20Service"
76
+ },
77
+ "versions": {
78
+ "href": "http://localhost:1234/pacticipants/Pricing%20Service/versions"
79
+ },
80
+ "last_version": {
81
+ "href": "http://localhost:1234/pacticipants/Pricing%20Service/versions/last"
82
+ }
83
+ },
84
+ "name": "Pricing Service",
85
+ "repository_url": "git@git.realestate.com.au:business-systems/pricing-service",
86
+ "_embedded": {
87
+ "last_version": {
88
+ "_links": {
89
+ "self": {
90
+ "href": "http://localhost:1234/pacticipants/Pricing%20Service/versions/1.3.0"
91
+ }
92
+ },
93
+ "number": "1.3.0"
94
+ }
95
+ }
96
+ }
97
+ }
98
+ },
99
+ {
100
+ "description": "a request to get the Pricing Service",
101
+ "provider_state": "the 'Pricing Service' does not exist in the pact-broker",
102
+ "request": {
103
+ "method": "get",
104
+ "path": "/pacticipants/Pricing%20Service",
105
+ "headers": {
106
+ }
107
+ },
108
+ "response": {
109
+ "status": 404
110
+ }
111
+ },
9
112
  {
10
113
  "description": "a request to publish a pact",
11
114
  "provider_state": "the 'Pricing Service' already exists in the pact-broker",
12
115
  "request": {
13
116
  "method": "put",
14
- "path": "/pacticipant/Condor/versions/1.3.0/pacts/Pricing%20Service",
117
+ "path": "/pacticipants/Condor/versions/1.3.0/pacts/Pricing%20Service",
15
118
  "body": {
16
119
  "consumer": {
17
120
  "name": "Condor"
@@ -38,7 +141,7 @@
38
141
  "provider_state": "the 'Pricing Service' and 'Condor' already exist in the pact-broker, and Condor already has a pact published for version 1.3.0",
39
142
  "request": {
40
143
  "method": "put",
41
- "path": "/pacticipant/Condor/versions/1.3.0/pacts/Pricing%20Service",
144
+ "path": "/pacticipants/Condor/versions/1.3.0/pacts/Pricing%20Service",
42
145
  "body": {
43
146
  "consumer": {
44
147
  "name": "Condor"
@@ -65,7 +168,7 @@
65
168
  "provider_state": "'Condor' already exist in the pact-broker, but the 'Pricing Service' does not",
66
169
  "request": {
67
170
  "method": "put",
68
- "path": "/pacticipant/Condor/versions/1.3.0/pacts/Pricing%20Service",
171
+ "path": "/pacticipants/Condor/versions/1.3.0/pacts/Pricing%20Service",
69
172
  "body": {
70
173
  "consumer": {
71
174
  "name": "Condor"
@@ -92,7 +195,7 @@
92
195
  "provider_state": "an error occurs while publishing a pact",
93
196
  "request": {
94
197
  "method": "put",
95
- "path": "/pacticipant/Condor/versions/1.3.0/pacts/Pricing%20Service",
198
+ "path": "/pacticipants/Condor/versions/1.3.0/pacts/Pricing%20Service",
96
199
  "body": {
97
200
  "consumer": {
98
201
  "name": "Condor"
@@ -128,9 +231,9 @@
128
231
  "provider_state": "the 'Pricing Service' does not exist in the pact-broker",
129
232
  "request": {
130
233
  "method": "patch",
131
- "path": "/pacticipant/Pricing%20Service",
234
+ "path": "/pacticipants/Pricing%20Service",
132
235
  "body": {
133
- "repository_url": "git@git.realestate.com.au:business-systems/condor.git"
236
+ "repository_url": "git@git.realestate.com.au:business-systems/pricing-service"
134
237
  },
135
238
  "headers": {
136
239
  "Content-Type": "application/json+patch"
@@ -147,9 +250,9 @@
147
250
  "provider_state": "the 'Pricing Service' already exists in the pact-broker",
148
251
  "request": {
149
252
  "method": "patch",
150
- "path": "/pacticipant/Pricing%20Service",
253
+ "path": "/pacticipants/Pricing%20Service",
151
254
  "body": {
152
- "repository_url": "git@git.realestate.com.au:business-systems/condor.git"
255
+ "repository_url": "git@git.realestate.com.au:business-systems/pricing-service"
153
256
  },
154
257
  "headers": {
155
258
  "Content-Type": "application/json+patch"
@@ -166,7 +269,7 @@
166
269
  "provider_state": "the 'Pricing Service' does not exist in the pact-broker",
167
270
  "request": {
168
271
  "method": "get",
169
- "path": "/pacticipant/Pricing%20Service/repository_url",
272
+ "path": "/pacticipants/Pricing%20Service/repository_url",
170
273
  "headers": {
171
274
  "Accept": "text/plain"
172
275
  }
@@ -182,7 +285,7 @@
182
285
  "provider_state": "the 'Pricing Service' already exists in the pact-broker",
183
286
  "request": {
184
287
  "method": "get",
185
- "path": "/pacticipant/Pricing%20Service/repository_url",
288
+ "path": "/pacticipants/Pricing%20Service/repository_url",
186
289
  "headers": {
187
290
  "Accept": "text/plain"
188
291
  }
@@ -192,7 +295,7 @@
192
295
  "headers": {
193
296
  "Content-Type": "text/plain;charset=utf-8"
194
297
  },
195
- "body": "git@git.realestate.com.au:business-systems/condor.git"
298
+ "body": "git@git.realestate.com.au:business-systems/pricing-service"
196
299
  }
197
300
  },
198
301
  {
@@ -200,13 +303,12 @@
200
303
  "provider_state": "'Condor' exists in the pact-broker",
201
304
  "request": {
202
305
  "method": "patch",
203
- "path": "/pacticipant/Condor/versions/1.3.0",
306
+ "path": "/pacticipants/Condor/versions/1.3.0",
204
307
  "body": {
205
308
  "tags": [
206
309
  "prod"
207
310
  ],
208
- "repository_ref": "packages/condor-1.3.0",
209
- "repository_url": "git@git.realestate.com.au:business-systems/condor.git"
311
+ "repository_ref": "packages/condor-1.3.0"
210
312
  },
211
313
  "headers": {
212
314
  "Content-Type": "application/json+patch"
@@ -223,13 +325,12 @@
223
325
  "provider_state": "'Condor' does not exist in the pact-broker",
224
326
  "request": {
225
327
  "method": "patch",
226
- "path": "/pacticipant/Condor/versions/1.3.0",
328
+ "path": "/pacticipants/Condor/versions/1.3.0",
227
329
  "body": {
228
330
  "tags": [
229
331
  "prod"
230
332
  ],
231
- "repository_ref": "packages/condor-1.3.0",
232
- "repository_url": "git@git.realestate.com.au:business-systems/condor.git"
333
+ "repository_ref": "packages/condor-1.3.0"
233
334
  },
234
335
  "headers": {
235
336
  "Content-Type": "application/json+patch"
@@ -246,9 +347,8 @@
246
347
  "provider_state": "a pact between Condor and the Pricing Service exists",
247
348
  "request": {
248
349
  "method": "get",
249
- "path": "/pacticipant/Condor/versions/last/pacts/Pricing%20Service",
350
+ "path": "/pacticipants/Condor/versions/last/pacts/Pricing%20Service",
250
351
  "headers": {
251
- "Accept": "application/json"
252
352
  }
253
353
  },
254
354
  "response": {
@@ -275,9 +375,8 @@
275
375
  "provider_state": "no pact between Condor and the Pricing Service exists",
276
376
  "request": {
277
377
  "method": "get",
278
- "path": "/pacticipant/Condor/versions/last/pacts/Pricing%20Service",
378
+ "path": "/pacticipants/Condor/versions/last/pacts/Pricing%20Service",
279
379
  "headers": {
280
- "Accept": "application/json"
281
380
  }
282
381
  },
283
382
  "response": {
@@ -291,7 +390,7 @@
291
390
  "provider_state": "a pact between Condor and the Pricing Service exists for the production version of Condor",
292
391
  "request": {
293
392
  "method": "get",
294
- "path": "/pacticipant/Condor/versions/last/pacts/Pricing%20Service",
393
+ "path": "/pacticipants/Condor/versions/last/pacts/Pricing%20Service",
295
394
  "headers": {
296
395
  "Accept": "application/json"
297
396
  },
@@ -319,7 +418,7 @@
319
418
  "provider_state": "a version with production details exists for the Pricing Service",
320
419
  "request": {
321
420
  "method": "get",
322
- "path": "/pacticipant/Pricing%20Service/versions/last",
421
+ "path": "/pacticipants/Pricing%20Service/versions/last",
323
422
  "headers": {
324
423
  "Accept": "application/json"
325
424
  },
@@ -332,7 +431,6 @@
332
431
  },
333
432
  "body": {
334
433
  "number": "1.2.3",
335
- "repository_url": "git@git.realestate.com.au:business-systems/pricing-service.git",
336
434
  "repository_ref": "package/pricing-service-1.2.3",
337
435
  "tags": [
338
436
  "prod"
@@ -345,7 +443,7 @@
345
443
  "provider_state": "no version exists for the Pricing Service",
346
444
  "request": {
347
445
  "method": "get",
348
- "path": "/pacticipant/Pricing%20Service/versions/last",
446
+ "path": "/pacticipants/Pricing%20Service/versions/last",
349
447
  "headers": {
350
448
  "Accept": "application/json"
351
449
  }
@@ -359,7 +457,7 @@
359
457
  ],
360
458
  "metadata": {
361
459
  "pact_gem": {
362
- "version": "1.0.15"
460
+ "version": "1.0.20"
363
461
  }
364
462
  }
365
463
  }
@@ -0,0 +1,71 @@
1
+ require 'spec_helper'
2
+ require_relative 'pact_helper'
3
+
4
+
5
+ module PactBroker::Client
6
+ describe PactBrokerClient, :pact => true do
7
+
8
+ let(:pact_broker_client) { PactBrokerClient.new(base_url: 'http://localhost:1234') }
9
+
10
+ describe "listing pacticipants" do
11
+ context "when a pacticipant exists" do
12
+ let(:response_body) { JSON.parse(File.read("./spec/support/pacticipants_list.json"))}
13
+ before do
14
+ pact_broker.
15
+ given("'Condor' exists in the pact-broker").
16
+ upon_receiving("a request to list pacticipants").
17
+ with(
18
+ method: :get,
19
+ path: '/pacticipants',
20
+ headers: {} ).
21
+ will_respond_with( headers: {'Content-Type' => 'application/json+hal;charset=utf-8'},
22
+ status: 200,
23
+ body: response_body
24
+ )
25
+ end
26
+ it "returns the response body" do
27
+ expect(pact_broker_client.pacticipants.list).to eq response_body
28
+ end
29
+ end
30
+ end
31
+
32
+ describe "get pacticipant" do
33
+ context "when the pacticipant exists" do
34
+ let(:response_body) { JSON.parse(File.read("./spec/support/pacticipant_get.json"))}
35
+ let(:options) { {pacticipant: 'Pricing Service'}}
36
+ before do
37
+ pact_broker.
38
+ given("the 'Pricing Service' already exists in the pact-broker").
39
+ upon_receiving("a request to get the Pricing Service").
40
+ with(
41
+ method: :get,
42
+ path: '/pacticipants/Pricing%20Service',
43
+ headers: {} ).
44
+ will_respond_with( headers: {'Content-Type' => 'application/json+hal;charset=utf-8'},
45
+ status: 200,
46
+ body: response_body
47
+ )
48
+ end
49
+ it "returns the response body" do
50
+ expect(pact_broker_client.pacticipants.get1(options)).to eq response_body
51
+ end
52
+ end
53
+ context "when the pacticipant does not exist" do
54
+ let(:options) { {pacticipant: 'Pricing Service'}}
55
+ before do
56
+ pact_broker.
57
+ given("the 'Pricing Service' does not exist in the pact-broker").
58
+ upon_receiving("a request to get the Pricing Service").
59
+ with(
60
+ method: :get,
61
+ path: '/pacticipants/Pricing%20Service',
62
+ headers: {} ).
63
+ will_respond_with( status: 404 )
64
+ end
65
+ it "returns nil" do
66
+ expect(pact_broker_client.pacticipants.get1(options)).to be_nil
67
+ end
68
+ end
69
+ end
70
+ end
71
+ end
@@ -1,13 +1,6 @@
1
1
  require_relative 'pact_helper'
2
2
  require 'pact_broker/client'
3
3
 
4
- def silence_warnings
5
- old_verbose, $VERBOSE = $VERBOSE, nil
6
- yield
7
- ensure
8
- $VERBOSE = old_verbose
9
- end
10
-
11
4
  module PactBroker::Client
12
5
  describe PactBrokerClient, :pact => true do
13
6
 
@@ -38,7 +31,7 @@ module PactBroker::Client
38
31
 
39
32
  describe "publishing a pact" do
40
33
 
41
- let(:options) { { pact: pact_json, consumer_version: consumer_version }}
34
+ let(:options) { { pact_json: pact_json, consumer_version: consumer_version }}
42
35
 
43
36
  context "when the provider already exists in the pact-broker" do
44
37
  before do
@@ -47,7 +40,7 @@ module PactBroker::Client
47
40
  upon_receiving("a request to publish a pact").
48
41
  with({
49
42
  method: :put,
50
- path: '/pacticipant/Condor/versions/1.3.0/pacts/Pricing%20Service',
43
+ path: '/pacticipants/Condor/versions/1.3.0/pacts/Pricing%20Service',
51
44
  headers: default_request_headers,
52
45
  body: pact_hash }).
53
46
  will_respond_with( headers: pact_broker_response_headers,
@@ -66,7 +59,7 @@ module PactBroker::Client
66
59
  upon_receiving("a request to publish a pact").
67
60
  with({
68
61
  method: :put,
69
- path: '/pacticipant/Condor/versions/1.3.0/pacts/Pricing%20Service',
62
+ path: '/pacticipants/Condor/versions/1.3.0/pacts/Pricing%20Service',
70
63
  headers: default_request_headers,
71
64
  body: pact_hash }).
72
65
  will_respond_with( headers: pact_broker_response_headers,
@@ -85,7 +78,7 @@ module PactBroker::Client
85
78
  upon_receiving("a request to publish a pact").
86
79
  with({
87
80
  method: :put,
88
- path: '/pacticipant/Condor/versions/1.3.0/pacts/Pricing%20Service',
81
+ path: '/pacticipants/Condor/versions/1.3.0/pacts/Pricing%20Service',
89
82
  headers: default_request_headers,
90
83
  body: pact_hash }).
91
84
  will_respond_with( headers: pact_broker_response_headers,
@@ -104,7 +97,7 @@ module PactBroker::Client
104
97
  upon_receiving("a request to publish a pact").
105
98
  with({
106
99
  method: :put,
107
- path: '/pacticipant/Condor/versions/1.3.0/pacts/Pricing%20Service',
100
+ path: '/pacticipants/Condor/versions/1.3.0/pacts/Pricing%20Service',
108
101
  headers: default_request_headers,
109
102
  body: pact_hash }).
110
103
  will_respond_with({
@@ -122,7 +115,7 @@ module PactBroker::Client
122
115
 
123
116
  end
124
117
 
125
- let(:repository_url ) { "git@git.realestate.com.au:business-systems/condor.git" }
118
+ let(:repository_url ) { "git@git.realestate.com.au:business-systems/pricing-service" }
126
119
 
127
120
  describe "registering a repository url" do
128
121
  context "where the pacticipant does not already exist in the pact-broker" do
@@ -132,7 +125,7 @@ module PactBroker::Client
132
125
  upon_receiving("a request to register the repository URL of a pacticipant").
133
126
  with(
134
127
  method: :patch,
135
- path: '/pacticipant/Pricing%20Service',
128
+ path: '/pacticipants/Pricing%20Service',
136
129
  headers: patch_request_headers,
137
130
  body: {repository_url: repository_url} ).
138
131
  will_respond_with(
@@ -151,7 +144,7 @@ module PactBroker::Client
151
144
  upon_receiving("a request to register the repository URL of a pacticipant").
152
145
  with(
153
146
  method: :patch,
154
- path: '/pacticipant/Pricing%20Service',
147
+ path: '/pacticipants/Pricing%20Service',
155
148
  headers: patch_request_headers,
156
149
  body: {repository_url: repository_url} ).
157
150
  will_respond_with(
@@ -173,7 +166,7 @@ module PactBroker::Client
173
166
  upon_receiving("a request to retrieve the repository URL of the 'Pricing Service'").
174
167
  with(
175
168
  method: :get,
176
- path: '/pacticipant/Pricing%20Service/repository_url',
169
+ path: '/pacticipants/Pricing%20Service/repository_url',
177
170
  headers: get_request_headers.merge({'Accept' => 'text/plain'})).
178
171
  will_respond_with(
179
172
  status: 404,
@@ -191,7 +184,7 @@ module PactBroker::Client
191
184
  upon_receiving("a request to retrieve the repository URL of the 'Pricing Service'").
192
185
  with(
193
186
  method: :get,
194
- path: '/pacticipant/Pricing%20Service/repository_url',
187
+ path: '/pacticipants/Pricing%20Service/repository_url',
195
188
  headers: get_request_headers.merge({'Accept' => 'text/plain'})).
196
189
  will_respond_with(
197
190
  status: 200,
@@ -208,7 +201,7 @@ module PactBroker::Client
208
201
  describe "tagging a version with prod details" do
209
202
  let(:repository_ref) { "packages/condor-#{version}" }
210
203
 
211
- let(:tag_options) { {pacticipant: 'Condor', version: version, repository_ref: repository_ref, repository_url: repository_url, :tag => 'prod'} }
204
+ let(:tag_options) { {pacticipant: 'Condor', version: version, repository_ref: repository_ref, :tag => 'prod'} }
212
205
  context "when the component exists" do
213
206
  before do
214
207
  pact_broker.
@@ -216,9 +209,9 @@ module PactBroker::Client
216
209
  upon_receiving("a request to tag the production version of Condor").
217
210
  with(
218
211
  method: :patch,
219
- path: '/pacticipant/Condor/versions/1.3.0',
212
+ path: '/pacticipants/Condor/versions/1.3.0',
220
213
  headers: patch_request_headers,
221
- body: {:tags => ['prod'], :repository_ref => repository_ref, :repository_url => repository_url} ).
214
+ body: {:tags => ['prod'], :repository_ref => repository_ref } ).
222
215
  will_respond_with(
223
216
  status: 200,
224
217
  headers: pact_broker_response_headers
@@ -235,9 +228,9 @@ module PactBroker::Client
235
228
  upon_receiving("a request to tag the production version of Condor").
236
229
  with(
237
230
  method: :patch,
238
- path: '/pacticipant/Condor/versions/1.3.0',
231
+ path: '/pacticipants/Condor/versions/1.3.0',
239
232
  headers: patch_request_headers,
240
- body: {:tags => ['prod'], :repository_ref => repository_ref, :repository_url => repository_url} ).
233
+ body: {:tags => ['prod'], :repository_ref => repository_ref } ).
241
234
  will_respond_with(
242
235
  status: 201,
243
236
  headers: pact_broker_response_headers
@@ -260,8 +253,8 @@ module PactBroker::Client
260
253
  upon_receiving("a request to retrieve the latest pact between Condor and the Pricing Service").
261
254
  with({
262
255
  method: :get,
263
- path: '/pacticipant/Condor/versions/last/pacts/Pricing%20Service',
264
- headers: get_request_headers
256
+ path: '/pacticipants/Condor/versions/last/pacts/Pricing%20Service',
257
+ headers: {}
265
258
  }).
266
259
  will_respond_with({
267
260
  status: 200,
@@ -283,8 +276,8 @@ module PactBroker::Client
283
276
  upon_receiving("a request to retrieve the latest pact between Condor and the Pricing Service").
284
277
  with({
285
278
  method: :get,
286
- path: '/pacticipant/Condor/versions/last/pacts/Pricing%20Service',
287
- headers: get_request_headers
279
+ path: '/pacticipants/Condor/versions/last/pacts/Pricing%20Service',
280
+ headers: {}
288
281
  }).
289
282
  will_respond_with({
290
283
  status: 404,
@@ -305,7 +298,7 @@ module PactBroker::Client
305
298
  upon_receiving("a request to retrieve the pact between the production verison of Condor and the Pricing Service").
306
299
  with({
307
300
  method: :get,
308
- path: '/pacticipant/Condor/versions/last/pacts/Pricing%20Service',
301
+ path: '/pacticipants/Condor/versions/last/pacts/Pricing%20Service',
309
302
  query: 'tag=prod',
310
303
  headers: get_request_headers
311
304
  }).
@@ -328,15 +321,14 @@ module PactBroker::Client
328
321
  describe "retriving versions" do
329
322
  context "when retrieving the production details of a version" do
330
323
  context "when a version is found" do
331
- let(:repository_url) { "git@git.realestate.com.au:business-systems/pricing-service.git" }
332
324
  let(:repository_ref) { "package/pricing-service-1.2.3"}
333
325
  let(:tags) { ['prod']}
334
- let(:body) { { number: '1.2.3', repository_url: repository_url, repository_ref: repository_ref, tags: tags } }
326
+ let(:body) { { number: '1.2.3', repository_ref: repository_ref, tags: tags } }
335
327
  before do
336
328
  pact_broker.
337
329
  given("a version with production details exists for the Pricing Service").
338
330
  upon_receiving("a request for the latest version tagged with 'prod'").
339
- with(method: :get, path: '/pacticipant/Pricing%20Service/versions/last', query: 'tag=prod', headers: get_request_headers).
331
+ with(method: :get, path: '/pacticipants/Pricing%20Service/versions/last', query: 'tag=prod', headers: get_request_headers).
340
332
  will_respond_with( status: 200,
341
333
  headers: pact_broker_response_headers.merge({'Content-Type' => 'application/json;charset=utf-8'}),
342
334
  body: body )
@@ -351,7 +343,7 @@ module PactBroker::Client
351
343
  pact_broker.
352
344
  given("no version exists for the Pricing Service").
353
345
  upon_receiving("a request for the latest version").
354
- with(method: :get, path: '/pacticipant/Pricing%20Service/versions/last', headers: get_request_headers).
346
+ with(method: :get, path: '/pacticipants/Pricing%20Service/versions/last', headers: get_request_headers).
355
347
  will_respond_with( status: 404, headers: pact_broker_response_headers )
356
348
  end
357
349
  it 'returns nil' do
data/spec/spec_helper.rb CHANGED
@@ -2,4 +2,11 @@ require 'rspec/fire'
2
2
 
3
3
  RSpec.configure do | config |
4
4
  config.include RSpec::Fire
5
+ end
6
+
7
+ def silence_warnings
8
+ old_verbose, $VERBOSE = $VERBOSE, nil
9
+ yield
10
+ ensure
11
+ $VERBOSE = old_verbose
5
12
  end
@@ -0,0 +1,19 @@
1
+ {
2
+ "_links": {
3
+ "self": { "href": "http://localhost:1234/pacticipants/Pricing%20Service" },
4
+ "versions": { "href": "http://localhost:1234/pacticipants/Pricing%20Service/versions" },
5
+ "last_version": { "href": "http://localhost:1234/pacticipants/Pricing%20Service/versions/last" }
6
+ },
7
+ "name" : "Pricing Service",
8
+ "repository_url": "git@git.realestate.com.au:business-systems/pricing-service",
9
+ "_embedded" : {
10
+ "last_version" : {
11
+ "_links" : {
12
+ "self": {
13
+ "href": "http://localhost:1234/pacticipants/Pricing%20Service/versions/1.3.0"
14
+ }
15
+ },
16
+ "number" : "1.3.0"
17
+ }
18
+ }
19
+ }
@@ -0,0 +1,26 @@
1
+ {
2
+ "_links": {
3
+ "self": { "href": "http://localhost:1234/pacticipants" },
4
+ "pacticipants": [
5
+ { "href": "http://localhost:1234/pacticipants/Condor", "name": "Condor" }
6
+ ]
7
+ },
8
+ "pacticipants" : [{
9
+ "_links": {
10
+ "self" : {
11
+ "href" : "http://localhost:1234/pacticipants/Condor"
12
+ }
13
+ },
14
+ "name" : "Condor",
15
+ "_embedded" : {
16
+ "last_version" : {
17
+ "_links" : {
18
+ "self": {
19
+ "href": "http://localhost:1234/pacticipants/Condor/versions/1.3.0"
20
+ }
21
+ },
22
+ "number" : "1.3.0"
23
+ }
24
+ }
25
+ }]
26
+ }
data/tasks/pact.rake ADDED
@@ -0,0 +1,7 @@
1
+ require 'pact_broker/client/tasks'
2
+
3
+ PactBroker::Client::PublicationTask.new do | task |
4
+ require 'pact_broker/client/version'
5
+ task.consumer_version = PactBroker::Client::VERSION
6
+ task.pact_broker_base_url = "http://localhost:9292"
7
+ end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: pact_broker-client
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.1
4
+ version: 0.0.2
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -9,7 +9,7 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2013-11-03 00:00:00.000000000 Z
12
+ date: 2013-11-05 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: pact
@@ -169,9 +169,13 @@ files:
169
169
  - spec/lib/pact_broker/client/publish_pacts_spec.rb
170
170
  - spec/lib/pact_broker/client/tasks/publication_task_spec.rb
171
171
  - spec/pacts/pact_broker_client-pact_broker.json
172
+ - spec/service_providers/extra_goodies_spec.rb
172
173
  - spec/service_providers/pact_broker_client_spec.rb
173
174
  - spec/service_providers/pact_helper.rb
174
175
  - spec/spec_helper.rb
176
+ - spec/support/pacticipant_get.json
177
+ - spec/support/pacticipants_list.json
178
+ - tasks/pact.rake
175
179
  homepage: https://github.com/bethesque/pact_broker-client.git
176
180
  licenses:
177
181
  - MIT
@@ -187,7 +191,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
187
191
  version: '0'
188
192
  segments:
189
193
  - 0
190
- hash: 26826033088449580
194
+ hash: -1865173993885174069
191
195
  required_rubygems_version: !ruby/object:Gem::Requirement
192
196
  none: false
193
197
  requirements:
@@ -196,7 +200,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
196
200
  version: '0'
197
201
  segments:
198
202
  - 0
199
- hash: 26826033088449580
203
+ hash: -1865173993885174069
200
204
  requirements: []
201
205
  rubyforge_project:
202
206
  rubygems_version: 1.8.23
@@ -208,6 +212,9 @@ test_files:
208
212
  - spec/lib/pact_broker/client/publish_pacts_spec.rb
209
213
  - spec/lib/pact_broker/client/tasks/publication_task_spec.rb
210
214
  - spec/pacts/pact_broker_client-pact_broker.json
215
+ - spec/service_providers/extra_goodies_spec.rb
211
216
  - spec/service_providers/pact_broker_client_spec.rb
212
217
  - spec/service_providers/pact_helper.rb
213
218
  - spec/spec_helper.rb
219
+ - spec/support/pacticipant_get.json
220
+ - spec/support/pacticipants_list.json