pact_broker-client 1.25.0 → 1.25.1

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.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: c23dc5746d9c229a4e357c8fe96273902ba48eb009a23feba13ec82e176bbb30
4
- data.tar.gz: 482f212c6ed800809fe09ac51cc42b4bddf726fc0a1d37d9ad271cdbb12378d4
3
+ metadata.gz: 7c78c1aac0ad2d50892f581f5bf0bb77b4b73e32b1ae359ae94a62eb4d62855b
4
+ data.tar.gz: 509cc602635703e5ff07520ef5b0163ff47ed4cbaadebca33de0ebced3d34bdd
5
5
  SHA512:
6
- metadata.gz: b5dc6e9ffc7ee3d88711cc0a606d2616e00c826e6681bc84a652e37f18a944f8e402b7265a828a4ddbd16a7d5591fd9e40f8938761112411f58a08c2cc1cc3c6
7
- data.tar.gz: c28296e8fc790b329061809abaa58af206765061fdb5d07bf2c1d60861408184b304f20c725faf2b3a4ebb59ca3e8cf23f8d8d992f9069da63b55ba60826b13d
6
+ metadata.gz: 38988ea9692c16df96c3ba1c18cbd2509286efede5b7e72d2561540ffeb78e0d5e442a83aacd26f2ca61f4939a2e4458130bcdc0f605e1711c304590f281e9e0
7
+ data.tar.gz: 2efd70539e123a3b2b7ffbe7f2c691f497ba4dc1034fb25d4fd5800faa4cae50bbd2960ba3a87a149decb5127bdc7621873f51d60ab48dc988f5059bad3a6125
@@ -1,3 +1,19 @@
1
+ <a name="v1.25.1"></a>
2
+ ### v1.25.1 (2020-04-02)
3
+
4
+
5
+ #### Features
6
+
7
+ * **create-or-update-webhook**
8
+ * print 'created' or 'updated' based on response status ([0c34090](/../../commit/0c34090))
9
+
10
+
11
+ #### Bug Fixes
12
+
13
+ * incorrect require path for hal entity ([64f3b7b](/../../commit/64f3b7b))
14
+ * correctly handle multiple parameters specified in the format --name=value ([946001b](/../../commit/946001b))
15
+
16
+
1
17
  <a name="v1.25.0"></a>
2
18
  ### v1.25.0 (2020-02-18)
3
19
 
@@ -92,6 +92,8 @@
92
92
 
93
93
  * [A request to tag the production version of Condor](#a_request_to_tag_the_production_version_of_Condor_given_&#39;Condor&#39;_exists_in_the_pact-broker) given 'Condor' exists in the pact-broker
94
94
 
95
+ * [A request to update a webhook](#a_request_to_update_a_webhook_given_a_webhook_with_the_uuid_696c5f93-1b7f-44bc-8d03-59440fcaa9a0_exists) given a webhook with the uuid 696c5f93-1b7f-44bc-8d03-59440fcaa9a0 exists
96
+
95
97
  * [An invalid request to create a webhook for a consumer and provider](#an_invalid_request_to_create_a_webhook_for_a_consumer_and_provider_given_the_&#39;Pricing_Service&#39;_and_&#39;Condor&#39;_already_exist_in_the_pact-broker) given the 'Pricing Service' and 'Condor' already exist in the pact-broker
96
98
 
97
99
  #### Interactions
@@ -766,6 +768,7 @@ Pact Broker will respond with:
766
768
  "Content-Type": "application/hal+json;charset=utf-8"
767
769
  },
768
770
  "body": {
771
+ "description": "a webhook",
769
772
  "_links": {
770
773
  "self": {
771
774
  "href": "http://localhost:1234/some-url",
@@ -864,6 +867,7 @@ Pact Broker will respond with:
864
867
  "Content-Type": "application/hal+json;charset=utf-8"
865
868
  },
866
869
  "body": {
870
+ "description": "a webhook",
867
871
  "_links": {
868
872
  "self": {
869
873
  "href": "http://localhost:1234/some-url",
@@ -917,6 +921,7 @@ Pact Broker will respond with:
917
921
  "Content-Type": "application/hal+json;charset=utf-8"
918
922
  },
919
923
  "body": {
924
+ "description": "a webhook",
920
925
  "_links": {
921
926
  "self": {
922
927
  "href": "http://localhost:1234/some-url",
@@ -967,6 +972,7 @@ Pact Broker will respond with:
967
972
  "Content-Type": "application/hal+json;charset=utf-8"
968
973
  },
969
974
  "body": {
975
+ "description": "a webhook",
970
976
  "_links": {
971
977
  "self": {
972
978
  "href": "http://localhost:1234/some-url",
@@ -1072,6 +1078,7 @@ Pact Broker will respond with:
1072
1078
  "Content-Type": "application/hal+json;charset=utf-8"
1073
1079
  },
1074
1080
  "body": {
1081
+ "description": "a webhook",
1075
1082
  "_links": {
1076
1083
  "self": {
1077
1084
  "href": "http://localhost:1234/some-url",
@@ -1120,6 +1127,7 @@ Pact Broker will respond with:
1120
1127
  "Content-Type": "application/hal+json;charset=utf-8"
1121
1128
  },
1122
1129
  "body": {
1130
+ "description": "a webhook",
1123
1131
  "_links": {
1124
1132
  "self": {
1125
1133
  "href": "http://localhost:1234/some-url",
@@ -1182,6 +1190,7 @@ Pact Broker will respond with:
1182
1190
  "Content-Type": "application/hal+json;charset=utf-8"
1183
1191
  },
1184
1192
  "body": {
1193
+ "description": "a webhook",
1185
1194
  "_links": {
1186
1195
  "self": {
1187
1196
  "href": "http://localhost:1234/some-url",
@@ -1800,6 +1809,63 @@ Pact Broker will respond with:
1800
1809
  }
1801
1810
  }
1802
1811
  ```
1812
+ <a name="a_request_to_update_a_webhook_given_a_webhook_with_the_uuid_696c5f93-1b7f-44bc-8d03-59440fcaa9a0_exists"></a>
1813
+ Given **a webhook with the uuid 696c5f93-1b7f-44bc-8d03-59440fcaa9a0 exists**, upon receiving **a request to update a webhook** from Pact Broker Client, with
1814
+ ```json
1815
+ {
1816
+ "method": "put",
1817
+ "path": "/webhooks/696c5f93-1b7f-44bc-8d03-59440fcaa9a0",
1818
+ "headers": {
1819
+ "Content-Type": "application/json",
1820
+ "Accept": "application/hal+json"
1821
+ },
1822
+ "body": {
1823
+ "description": "a webhook",
1824
+ "events": [
1825
+ {
1826
+ "name": "contract_content_changed"
1827
+ }
1828
+ ],
1829
+ "request": {
1830
+ "url": "https://webhook",
1831
+ "method": "POST",
1832
+ "headers": {
1833
+ "Foo": "bar",
1834
+ "Bar": "foo"
1835
+ },
1836
+ "body": {
1837
+ "some": "body"
1838
+ },
1839
+ "username": "username",
1840
+ "password": "password"
1841
+ },
1842
+ "provider": {
1843
+ "name": "Pricing Service"
1844
+ },
1845
+ "consumer": {
1846
+ "name": "Condor"
1847
+ }
1848
+ }
1849
+ }
1850
+ ```
1851
+ Pact Broker will respond with:
1852
+ ```json
1853
+ {
1854
+ "status": 200,
1855
+ "headers": {
1856
+ "Content-Type": "application/hal+json;charset=utf-8"
1857
+ },
1858
+ "body": {
1859
+ "description": "a webhook",
1860
+ "_links": {
1861
+ "self": {
1862
+ "href": "http://localhost:1234/some-url",
1863
+ "title": "A title"
1864
+ }
1865
+ }
1866
+ }
1867
+ }
1868
+ ```
1803
1869
  <a name="an_invalid_request_to_create_a_webhook_for_a_consumer_and_provider_given_the_&#39;Pricing_Service&#39;_and_&#39;Condor&#39;_already_exist_in_the_pact-broker"></a>
1804
1870
  Given **the 'Pricing Service' and 'Condor' already exist in the pact-broker**, upon receiving **an invalid request to create a webhook for a consumer and provider** from Pact Broker Client, with
1805
1871
  ```json
@@ -249,6 +249,7 @@ module PactBroker
249
249
 
250
250
  {
251
251
  uuid: options.uuid,
252
+ description: options.description,
252
253
  http_method: options.request,
253
254
  url: webhook_url,
254
255
  headers: headers,
@@ -45,20 +45,31 @@ module PactBroker
45
45
  def self.turn_muliple_tag_options_into_array argv
46
46
  new_argv = []
47
47
  opt_name = nil
48
- argv.each_with_index do | arg, i |
49
- if arg.start_with?('-')
50
- opt_name = arg
51
- existing = new_argv.find { | a | a.first == opt_name }
52
- if !existing
53
- new_argv << [arg]
48
+ argv.each_with_index do | word, i |
49
+ if word.start_with?('-')
50
+ if word.include?('=')
51
+ opt_name, opt_value = word.split('=', 2)
52
+
53
+ existing = new_argv.find { | a | a.first == opt_name }
54
+ if existing
55
+ existing << opt_value
56
+ else
57
+ new_argv << [opt_name, opt_value]
58
+ end
59
+ else
60
+ opt_name = word
61
+ existing = new_argv.find { | a | a.first == opt_name }
62
+ if !existing
63
+ new_argv << [word]
64
+ end
54
65
  end
55
66
  else
56
67
  if opt_name
57
68
  existing = new_argv.find { | a | a.first == opt_name }
58
- existing << arg
69
+ existing << word
59
70
  opt_name = nil
60
71
  else
61
- new_argv << [arg]
72
+ new_argv << [word]
62
73
  end
63
74
  end
64
75
  end
@@ -76,17 +87,17 @@ module PactBroker
76
87
  end
77
88
 
78
89
  def self.shared_options_for_webhook_commands
79
- method_option :request, banner: "METHOD", aliases: "-X", desc: "HTTP method", required: true
80
- method_option :header, aliases: "-H", type: :array, desc: "Header"
81
- method_option :data, aliases: "-d", desc: "Data"
82
- method_option :user, aliases: "-u", desc: "Basic auth username and password eg. username:password"
90
+ method_option :request, banner: "METHOD", aliases: "-X", desc: "Webhook HTTP method", required: true
91
+ method_option :header, aliases: "-H", type: :array, desc: "Webhook Header"
92
+ method_option :data, aliases: "-d", desc: "Webhook payload (file or string)"
93
+ method_option :user, aliases: "-u", desc: "Webhook basic auth username and password eg. username:password"
83
94
  method_option :consumer, desc: "Consumer name"
84
95
  method_option :provider, desc: "Provider name"
85
96
  method_option :broker_base_url, required: true, aliases: "-b", desc: "The base URL of the Pact Broker"
86
97
  method_option :broker_username, desc: "Pact Broker basic auth username"
87
98
  method_option :broker_password, aliases: "-p", desc: "Pact Broker basic auth password"
88
99
  method_option :broker_token, aliases: "-k", desc: "Pact Broker bearer token"
89
- method_option :description, desc: "The description of the webhook"
100
+ method_option :description, desc: "Wwebhook description"
90
101
  method_option :contract_content_changed, type: :boolean, desc: "Trigger this webhook when the pact content changes"
91
102
  method_option :contract_published, type: :boolean, desc: "Trigger this webhook when a pact is published"
92
103
  method_option :provider_verification_published, type: :boolean, desc: "Trigger this webhook when a provider verification result is published"
@@ -6,11 +6,9 @@ module PactBroker
6
6
  module Client
7
7
  module Hal
8
8
  class RelationNotFoundError < ::PactBroker::Client::Error; end
9
-
10
9
  class ErrorResponseReturned < ::PactBroker::Client::Error; end
11
10
 
12
11
  class Entity
13
-
14
12
  def initialize(href, data, http_client, response = nil)
15
13
  @href = href
16
14
  @data = data
@@ -71,7 +69,7 @@ module PactBroker
71
69
  elsif @links.key?(method_name)
72
70
  Link.new(@links[method_name], @client).run(*args)
73
71
  else
74
- super
72
+ nil
75
73
  end
76
74
  end
77
75
 
@@ -62,7 +62,7 @@ module PactBroker
62
62
  private
63
63
 
64
64
  def wrap_response(href, http_response)
65
- require 'pact/hal/entity' # avoid circular reference
65
+ require 'pact_broker/client/hal/entity' # avoid circular reference
66
66
  if http_response.success?
67
67
  Entity.new(href, http_response.body, @http_client, http_response)
68
68
  else
@@ -1,5 +1,5 @@
1
1
  module PactBroker
2
2
  module Client
3
- VERSION = '1.25.0'
3
+ VERSION = '1.25.1'
4
4
  end
5
5
  end
@@ -101,7 +101,13 @@ module PactBroker
101
101
  end
102
102
 
103
103
  def success_result(webhook_entity)
104
- CommandResult.new(true, "Webhook #{webhook_entity._link('self').title_or_name.inspect} created")
104
+ action = webhook_entity.response.status == 201 ? "created" : "updated"
105
+ name = if webhook_entity.description && webhook_entity.description.size > 0
106
+ webhook_entity.description
107
+ else
108
+ webhook_entity._link('self').title_or_name
109
+ end
110
+ CommandResult.new(true, "Webhook #{name.inspect} #{action}")
105
111
  end
106
112
 
107
113
  def error_result(message)
@@ -22,6 +22,7 @@ module PactBroker
22
22
  let(:options_hash) do
23
23
  {
24
24
  uuid: '9999',
25
+ description: "some webhook",
25
26
  request: "POST",
26
27
  header: header,
27
28
  data: data,
@@ -39,6 +40,7 @@ module PactBroker
39
40
  let(:expected_params) do
40
41
  {
41
42
  uuid: '9999',
43
+ description: "some webhook",
42
44
  http_method: "POST",
43
45
  url: "http://webhook",
44
46
  headers: { "Foo" => "bar", "Bar" => "foo"},
@@ -109,6 +109,12 @@ module PactBroker::Client::CLI
109
109
  expect(TestThor.turn_muliple_tag_options_into_array(input)).to eq output
110
110
  end
111
111
 
112
+ it "turns '--tag=foo --tag=bar' into '--tag foo bar'" do
113
+ input = %w{--ignore this --tag=foo --tag=bar --wiffle --that}
114
+ output = %w{--ignore this --tag foo bar --wiffle --that }
115
+ expect(TestThor.turn_muliple_tag_options_into_array(input)).to eq output
116
+ end
117
+
112
118
  it "doesn't change anything when there are no duplicate options" do
113
119
  input = %w{--ignore this --taggy foo --blah bar --wiffle --that}
114
120
  expect(TestThor.turn_muliple_tag_options_into_array(input)).to eq input
@@ -17,6 +17,7 @@ module PactBroker::Client
17
17
  "name" => "Provider"
18
18
  }
19
19
  end
20
+
20
21
  let(:pact_hash) do
21
22
  {
22
23
  "name" => "a name",
@@ -70,6 +70,28 @@ module PactBroker
70
70
  expect(subject.message).to match /"some":"error"/
71
71
  end
72
72
  end
73
+
74
+ context "when there is an empty description returned" do
75
+ let!(:webhook_request) do
76
+ stub_request(:post, "http://broker/webhooks").to_return(status: 200, body: response_body.to_json, headers: { "Content-Type" => "application/hal+json" })
77
+ end
78
+
79
+ let(:response_body) do
80
+ {
81
+ description: "",
82
+ _links: {
83
+ self: {
84
+ href: "href",
85
+ title: "the title"
86
+ }
87
+ }
88
+ }
89
+ end
90
+
91
+ it "uses the self title in the message instead" do
92
+ expect(subject.message).to include "the title"
93
+ end
94
+ end
73
95
  end
74
96
  end
75
97
  end
@@ -1287,6 +1287,7 @@
1287
1287
  "Content-Type": "application/hal+json;charset=utf-8"
1288
1288
  },
1289
1289
  "body": {
1290
+ "description": "a webhook",
1290
1291
  "_links": {
1291
1292
  "self": {
1292
1293
  "href": "http://localhost:1234/some-url",
@@ -1295,6 +1296,9 @@
1295
1296
  }
1296
1297
  },
1297
1298
  "matchingRules": {
1299
+ "$.body.description": {
1300
+ "match": "type"
1301
+ },
1298
1302
  "$.body._links.self.href": {
1299
1303
  "match": "regex",
1300
1304
  "regex": "http:\\/\\/.*"
@@ -1355,6 +1359,7 @@
1355
1359
  "Content-Type": "application/hal+json;charset=utf-8"
1356
1360
  },
1357
1361
  "body": {
1362
+ "description": "a webhook",
1358
1363
  "_links": {
1359
1364
  "self": {
1360
1365
  "href": "http://localhost:1234/some-url",
@@ -1363,6 +1368,9 @@
1363
1368
  }
1364
1369
  },
1365
1370
  "matchingRules": {
1371
+ "$.body.description": {
1372
+ "match": "type"
1373
+ },
1366
1374
  "$.body._links.self.href": {
1367
1375
  "match": "regex",
1368
1376
  "regex": "http:\\/\\/.*"
@@ -1409,6 +1417,7 @@
1409
1417
  "Content-Type": "application/hal+json;charset=utf-8"
1410
1418
  },
1411
1419
  "body": {
1420
+ "description": "a webhook",
1412
1421
  "_links": {
1413
1422
  "self": {
1414
1423
  "href": "http://localhost:1234/some-url",
@@ -1417,6 +1426,9 @@
1417
1426
  }
1418
1427
  },
1419
1428
  "matchingRules": {
1429
+ "$.body.description": {
1430
+ "match": "type"
1431
+ },
1420
1432
  "$.body._links.self.href": {
1421
1433
  "match": "regex",
1422
1434
  "regex": "http:\\/\\/.*"
@@ -1590,6 +1602,7 @@
1590
1602
  "Content-Type": "application/hal+json;charset=utf-8"
1591
1603
  },
1592
1604
  "body": {
1605
+ "description": "a webhook",
1593
1606
  "_links": {
1594
1607
  "self": {
1595
1608
  "href": "http://localhost:1234/some-url",
@@ -1598,6 +1611,9 @@
1598
1611
  }
1599
1612
  },
1600
1613
  "matchingRules": {
1614
+ "$.body.description": {
1615
+ "match": "type"
1616
+ },
1601
1617
  "$.body._links.self.href": {
1602
1618
  "match": "regex",
1603
1619
  "regex": "http:\\/\\/.*"
@@ -1705,6 +1721,7 @@
1705
1721
  "Content-Type": "application/hal+json;charset=utf-8"
1706
1722
  },
1707
1723
  "body": {
1724
+ "description": "a webhook",
1708
1725
  "_links": {
1709
1726
  "self": {
1710
1727
  "href": "http://localhost:1234/some-url",
@@ -1713,6 +1730,9 @@
1713
1730
  }
1714
1731
  },
1715
1732
  "matchingRules": {
1733
+ "$.body.description": {
1734
+ "match": "type"
1735
+ },
1716
1736
  "$.body._links.self.href": {
1717
1737
  "match": "regex",
1718
1738
  "regex": "http:\\/\\/.*"
@@ -1760,6 +1780,7 @@
1760
1780
  "Content-Type": "application/hal+json;charset=utf-8"
1761
1781
  },
1762
1782
  "body": {
1783
+ "description": "a webhook",
1763
1784
  "_links": {
1764
1785
  "self": {
1765
1786
  "href": "http://localhost:1234/some-url",
@@ -1768,6 +1789,9 @@
1768
1789
  }
1769
1790
  },
1770
1791
  "matchingRules": {
1792
+ "$.body.description": {
1793
+ "match": "type"
1794
+ },
1771
1795
  "$.body._links.self.href": {
1772
1796
  "match": "regex",
1773
1797
  "regex": "http:\\/\\/.*"
@@ -1852,6 +1876,73 @@
1852
1876
  "Content-Type": "application/hal+json;charset=utf-8"
1853
1877
  },
1854
1878
  "body": {
1879
+ "description": "a webhook",
1880
+ "_links": {
1881
+ "self": {
1882
+ "href": "http://localhost:1234/some-url",
1883
+ "title": "A title"
1884
+ }
1885
+ }
1886
+ },
1887
+ "matchingRules": {
1888
+ "$.body.description": {
1889
+ "match": "type"
1890
+ },
1891
+ "$.body._links.self.href": {
1892
+ "match": "regex",
1893
+ "regex": "http:\\/\\/.*"
1894
+ },
1895
+ "$.body._links.self.title": {
1896
+ "match": "type"
1897
+ }
1898
+ }
1899
+ }
1900
+ },
1901
+ {
1902
+ "description": "a request to update a webhook",
1903
+ "providerState": "a webhook with the uuid 696c5f93-1b7f-44bc-8d03-59440fcaa9a0 exists",
1904
+ "request": {
1905
+ "method": "put",
1906
+ "path": "/webhooks/696c5f93-1b7f-44bc-8d03-59440fcaa9a0",
1907
+ "headers": {
1908
+ "Content-Type": "application/json",
1909
+ "Accept": "application/hal+json"
1910
+ },
1911
+ "body": {
1912
+ "description": "a webhook",
1913
+ "events": [
1914
+ {
1915
+ "name": "contract_content_changed"
1916
+ }
1917
+ ],
1918
+ "request": {
1919
+ "url": "https://webhook",
1920
+ "method": "POST",
1921
+ "headers": {
1922
+ "Foo": "bar",
1923
+ "Bar": "foo"
1924
+ },
1925
+ "body": {
1926
+ "some": "body"
1927
+ },
1928
+ "username": "username",
1929
+ "password": "password"
1930
+ },
1931
+ "provider": {
1932
+ "name": "Pricing Service"
1933
+ },
1934
+ "consumer": {
1935
+ "name": "Condor"
1936
+ }
1937
+ }
1938
+ },
1939
+ "response": {
1940
+ "status": 200,
1941
+ "headers": {
1942
+ "Content-Type": "application/hal+json;charset=utf-8"
1943
+ },
1944
+ "body": {
1945
+ "description": "a webhook",
1855
1946
  "_links": {
1856
1947
  "self": {
1857
1948
  "href": "http://localhost:1234/some-url",
@@ -1860,6 +1951,9 @@
1860
1951
  }
1861
1952
  },
1862
1953
  "matchingRules": {
1954
+ "$.body.description": {
1955
+ "match": "type"
1956
+ },
1863
1957
  "$.body._links.self.href": {
1864
1958
  "match": "regex",
1865
1959
  "regex": "http:\\/\\/.*"
@@ -47,11 +47,13 @@ RSpec.describe "creating a webhook", pact: true do
47
47
  }
48
48
  end
49
49
 
50
+ let(:response_status) { 201 }
50
51
  let(:success_response) do
51
52
  {
52
- status: 201,
53
+ status: response_status,
53
54
  headers: pact_broker_response_headers,
54
55
  body: {
56
+ description: Pact.like("a webhook"),
55
57
  _links: {
56
58
  self: {
57
59
  href: Pact.term('http://localhost:1234/some-url', %r{http://.*}),
@@ -82,7 +84,7 @@ RSpec.describe "creating a webhook", pact: true do
82
84
  it "returns a CommandResult with success = true" do
83
85
  expect(subject).to be_a PactBroker::Client::CommandResult
84
86
  expect(subject.success).to be true
85
- expect(subject.message).to eq "Webhook \"A title\" created"
87
+ expect(subject.message).to eq "Webhook \"a webhook\" created"
86
88
  end
87
89
  end
88
90
 
@@ -201,7 +203,7 @@ RSpec.describe "creating a webhook", pact: true do
201
203
 
202
204
  it "returns a CommandResult with success = true" do
203
205
  expect(subject.success).to be true
204
- expect(subject.message).to eq "Webhook \"A title\" created"
206
+ expect(subject.message).to eq "Webhook \"a webhook\" created"
205
207
  end
206
208
  end
207
209
 
@@ -282,23 +284,50 @@ RSpec.describe "creating a webhook", pact: true do
282
284
  request_body["provider"] = { "name" => "Pricing Service" }
283
285
  request_body["consumer"] = { "name" => "Condor" }
284
286
  mock_pact_broker_index_with_webhook_relation(self)
285
-
286
- pact_broker
287
- .upon_receiving("a request to create a webhook with a JSON body and a uuid")
288
- .given("the 'Pricing Service' and 'Condor' already exist in the pact-broker")
289
- .with(
290
- method: :put,
291
- path: "/webhooks/#{uuid}",
292
- headers: put_request_headers,
293
- body: request_body)
294
- .will_respond_with(success_response)
295
287
  end
288
+
296
289
  let(:uuid) { '696c5f93-1b7f-44bc-8d03-59440fcaa9a0' }
297
290
 
298
- it "returns a CommandResult with success = true" do
299
- expect(subject).to be_a PactBroker::Client::CommandResult
300
- expect(subject.success).to be true
301
- expect(subject.message).to eq "Webhook \"A title\" created"
291
+ context "when the webhook does not already exist" do
292
+ before do
293
+ pact_broker
294
+ .upon_receiving("a request to create a webhook with a JSON body and a uuid")
295
+ .given("the 'Pricing Service' and 'Condor' already exist in the pact-broker")
296
+ .with(
297
+ method: :put,
298
+ path: "/webhooks/#{uuid}",
299
+ headers: put_request_headers,
300
+ body: request_body)
301
+ .will_respond_with(success_response)
302
+ end
303
+
304
+ it "returns a CommandResult with success = true" do
305
+ expect(subject).to be_a PactBroker::Client::CommandResult
306
+ expect(subject.success).to be true
307
+ expect(subject.message).to eq "Webhook \"a webhook\" created"
308
+ end
309
+ end
310
+
311
+ context "when the webhook does exist" do
312
+ before do
313
+ pact_broker
314
+ .upon_receiving("a request to update a webhook")
315
+ .given("a webhook with the uuid #{uuid} exists")
316
+ .with(
317
+ method: :put,
318
+ path: "/webhooks/#{uuid}",
319
+ headers: put_request_headers,
320
+ body: request_body)
321
+ .will_respond_with(success_response)
322
+ end
323
+
324
+ let(:response_status) { 200 }
325
+
326
+ it "returns a CommandResult with success = true" do
327
+ expect(subject).to be_a PactBroker::Client::CommandResult
328
+ expect(subject.success).to be true
329
+ expect(subject.message).to eq "Webhook \"a webhook\" updated"
330
+ end
302
331
  end
303
332
  end
304
333
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: pact_broker-client
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.25.0
4
+ version: 1.25.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Beth Skurrie
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2020-02-17 00:00:00.000000000 Z
11
+ date: 2020-04-02 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: httparty