@@ -40,28 +40,28 @@ def delete params
40
40
pact_repository . delete ( params )
41
41
end
42
42
43
- def create_or_update_pact params
43
+ def create_or_update_pact params , webhook_options
44
44
provider = pacticipant_repository . find_by_name_or_create params [ :provider_name ]
45
45
consumer = pacticipant_repository . find_by_name_or_create params [ :consumer_name ]
46
46
consumer_version = version_repository . find_by_pacticipant_id_and_number_or_create consumer . id , params [ :consumer_version_number ]
47
47
existing_pact = pact_repository . find_by_version_and_provider ( consumer_version . id , provider . id )
48
48
49
49
if existing_pact
50
- update_pact params , existing_pact
50
+ update_pact params , existing_pact , webhook_options
51
51
else
52
- create_pact params , consumer_version , provider
52
+ create_pact params , consumer_version , provider , webhook_options
53
53
end
54
54
end
55
55
56
- def merge_pact params
56
+ def merge_pact params , webhook_options
57
57
provider = pacticipant_repository . find_by_name_or_create params [ :provider_name ]
58
58
consumer = pacticipant_repository . find_by_name_or_create params [ :consumer_name ]
59
59
consumer_version = version_repository . find_by_pacticipant_id_and_number_or_create consumer . id , params [ :consumer_version_number ]
60
60
existing_pact = pact_repository . find_by_version_and_provider ( consumer_version . id , provider . id )
61
61
62
62
params . merge! ( json_content : Merger . merge_pacts ( existing_pact . json_content , params [ :json_content ] ) )
63
63
64
- update_pact params , existing_pact
64
+ update_pact params , existing_pact , webhook_options
65
65
end
66
66
67
67
def find_all_pact_versions_between consumer , options
@@ -113,21 +113,21 @@ def find_distinct_pacts_between consumer, options
113
113
private
114
114
115
115
# Overwriting an existing pact with the same consumer/provider/consumer version number
116
- def update_pact params , existing_pact
116
+ def update_pact params , existing_pact , webhook_options
117
117
logger . info "Updating existing pact publication with params #{ params . reject { |k , v | k == :json_content } } "
118
118
logger . debug "Content #{ params [ :json_content ] } "
119
119
pact_version_sha = generate_sha ( params [ :json_content ] )
120
120
json_content = add_interaction_ids ( params [ :json_content ] )
121
121
update_params = { pact_version_sha : pact_version_sha , json_content : json_content }
122
122
updated_pact = pact_repository . update ( existing_pact . id , update_params )
123
123
124
- webhook_trigger_service . trigger_webhooks_for_updated_pact ( existing_pact , updated_pact )
124
+ webhook_trigger_service . trigger_webhooks_for_updated_pact ( existing_pact , updated_pact , merge_consumer_version_info ( webhook_options , updated_pact ) )
125
125
126
126
updated_pact
127
127
end
128
128
129
129
# When no publication for the given consumer/provider/consumer version number exists
130
- def create_pact params , version , provider
130
+ def create_pact params , version , provider , webhook_options
131
131
logger . info "Creating new pact publication with params #{ params . reject { |k , v | k == :json_content } } "
132
132
logger . debug "Content #{ params [ :json_content ] } "
133
133
pact_version_sha = generate_sha ( params [ :json_content ] )
@@ -139,7 +139,7 @@ def create_pact params, version, provider
139
139
pact_version_sha : pact_version_sha ,
140
140
json_content : json_content
141
141
)
142
- webhook_trigger_service . trigger_webhooks_for_new_pact pact
142
+ webhook_trigger_service . trigger_webhooks_for_new_pact ( pact , merge_consumer_version_info ( webhook_options , pact ) )
143
143
pact
144
144
end
145
145
@@ -150,6 +150,13 @@ def generate_sha(json_content)
150
150
def add_interaction_ids ( json_content )
151
151
Content . from_json ( json_content ) . with_ids . to_json
152
152
end
153
+
154
+ def merge_consumer_version_info ( webhook_options , pact )
155
+ webhook_context = webhook_options . fetch ( :webhook_context , { } ) . merge (
156
+ consumer_version_tags : pact . consumer_version_tag_names
157
+ )
158
+ webhook_options . merge ( webhook_context : webhook_context )
159
+ end
153
160
end
154
161
end
155
162
end
0 commit comments