Class: PactBroker::Test::TestDataBuilder
- Inherits:
-
Object
- Object
- PactBroker::Test::TestDataBuilder
show all
- Includes:
- Repositories, Services
- Defined in:
- lib/pact_broker/test/test_data_builder.rb
Constant Summary
Constants included
from Services
Services::FACTORIES
Instance Attribute Summary collapse
Instance Method Summary
collapse
-
#add_day ⇒ Object
-
#add_days(days = 1) ⇒ Object
-
#add_five_minutes ⇒ Object
-
#add_minute ⇒ Object
-
#and_return(instance_variable_name) ⇒ Object
-
#comment(*_args) ⇒ Object
-
#create_certificate(options = {path: "spec/fixtures/single-certificate.pem"}) ⇒ Object
-
#create_condor ⇒ Object
-
#create_consumer(consumer_name = "Consumer #{model_counter}", params = {}) ⇒ Object
-
#create_consumer_version(version_number = "1.0.#{model_counter}", params = {}) ⇒ Object
-
#create_consumer_version_tag(tag_name, params = {}) ⇒ Object
-
#create_consumer_webhook(parameters = {}) ⇒ Object
-
#create_contract_email_service ⇒ Object
-
#create_contract_proposal_service ⇒ Object
-
#create_deployed_version_for_consumer_version(uuid: SecureRandom.uuid, currently_deployed: true, environment_name: environment&.name, target: nil, created_at: nil) ⇒ Object
-
#create_deployed_version_for_provider_version(uuid: SecureRandom.uuid, currently_deployed: true, environment_name: environment&.name, target: nil, created_at: nil) ⇒ Object
-
#create_environment(name, params = {}) ⇒ Object
-
#create_everything_for_an_integration ⇒ Object
-
#create_global_contract_content_changed_webhook(parameters = {}) ⇒ Object
-
#create_global_contract_published_webhook(parameters = {}) ⇒ Object
-
#create_global_verification_failed_webhook(parameters = {}) ⇒ Object
-
#create_global_verification_succeeded_webhook(parameters = {}) ⇒ Object
-
#create_global_verification_webhook(parameters = {}) ⇒ Object
-
#create_global_webhook(parameters = {}) ⇒ Object
-
#create_integration ⇒ Object
-
#create_label(label_name) ⇒ Object
-
#create_pact(params = {}) ⇒ Object
-
#create_pact_version_without_publication(json_content = nil) ⇒ Object
-
#create_pact_with_consumer_version_tag(consumer_name, consumer_version_number, consumer_version_tag_name, provider_name) ⇒ Object
-
#create_pact_with_different_content(params = {}) ⇒ Object
-
#create_pact_with_hierarchy(consumer_name = "Consumer", consumer_version_number = "1.2.3", provider_name = "Provider", json_content = nil) ⇒ Object
-
#create_pact_with_verification(consumer_name = "Consumer", consumer_version = "1.0.#{model_counter}", provider_name = "Provider", provider_version = "1.0.#{model_counter}", success = true) ⇒ Object
-
#create_pact_with_verification_and_tags(consumer_name = "Consumer", consumer_version = "1.0.#{model_counter}", consumer_version_tags = [], provider_name = "Provider", provider_version = "1.0.#{model_counter}", provider_version_tags = []) ⇒ Object
-
#create_pacticipant(pacticipant_name, params = {}) ⇒ Object
-
#create_pricing_service ⇒ Object
-
#create_provider(provider_name = "Provider #{model_counter}", params = {}) ⇒ Object
-
#create_provider_version(version_number = "1.0.#{model_counter}", params = {}) ⇒ Object
-
#create_provider_version_tag(tag_name, params = {}) ⇒ Object
-
#create_provider_webhook(parameters = {}) ⇒ Object
-
#create_released_version_for_consumer_version(uuid: SecureRandom.uuid, currently_supported: true, environment_name: environment&.name, created_at: nil) ⇒ Object
-
#create_released_version_for_provider_version(uuid: SecureRandom.uuid, currently_supported: true, environment_name: environment&.name, created_at: nil) ⇒ Object
-
#create_tag(tag_name, params = {}) ⇒ Object
-
#create_tag_with_hierarchy(pacticipant_name, pacticipant_version, tag_name) ⇒ Object
-
#create_triggered_webhook(params = {}) ⇒ Object
-
#create_verification(parameters = {}) ⇒ Object
-
#create_verification_webhook(parameters = {}) ⇒ Object
rubocop: enable Metrics/CyclomaticComplexity.
-
#create_version(version_number = "1.0.#{model_counter}", params = {}) ⇒ Object
-
#create_version_with_hierarchy(pacticipant_name, pacticipant_version) ⇒ Object
-
#create_webhook(parameters = {}) ⇒ Object
-
#create_webhook_execution(params = {}) ⇒ Object
-
#find_environment(environment_name) ⇒ Object
-
#find_pact(consumer_name, consumer_version_number, provider_name) ⇒ Object
-
#find_pact_publication(consumer_name, consumer_version_number, provider_name) ⇒ Object
-
#find_pacticipant(name) ⇒ Object
-
#find_version(pacticipant_name, version_number) ⇒ Object
-
#in_utc ⇒ Object
-
#initialize(_params = {}) ⇒ TestDataBuilder
constructor
A new instance of TestDataBuilder.
-
#model_counter ⇒ Object
-
#publish_pact(consumer_name:, provider_name:, consumer_version_number:, tags: nil, branch: nil, build_url: nil, json_content: nil) ⇒ Object
-
#random_json_content(consumer_name, provider_name) ⇒ Object
-
#republish_same_pact(params = {}) ⇒ Object
-
#revise_pact(json_content = nil) ⇒ Object
-
#set_now(date) ⇒ Object
-
#set_now_date_time(date_time) ⇒ Object
-
#subtract_day ⇒ Object
-
#subtract_days(days = 1) ⇒ Object
-
#use_consumer(consumer_name, params = {}) ⇒ Object
-
#use_consumer_version(version_number) ⇒ Object
-
#use_provider(provider_name) ⇒ Object
-
#use_provider_version(version_number) ⇒ Object
Methods included from Services
#badge_service, #branch_service, #certificate_service, #contract_service, #deployed_version_service, #environment_service, #get, #group_service, #index_service, #integration_service, #label_service, #matrix_service, #metrics_service, #pact_service, #pacticipant_service, #register_default_services, #register_service, #released_version_service, #tag_service, #verification_service, #version_service, #webhook_service, #webhook_trigger_service
#branch_version_repository, #integration_repository, #label_repository, #matrix_repository, #pact_repository, #pacticipant_repository, #tag_repository, #verification_repository, #version_repository, #webhook_repository
Constructor Details
Returns a new instance of TestDataBuilder.
62
63
64
|
# File 'lib/pact_broker/test/test_data_builder.rb', line 62
def initialize(_params = {})
@now = DateTime.now
end
|
Instance Attribute Details
#consumer ⇒ Object
Returns the value of attribute consumer.
47
48
49
|
# File 'lib/pact_broker/test/test_data_builder.rb', line 47
def consumer
@consumer
end
|
#consumer_version ⇒ Object
Returns the value of attribute consumer_version.
49
50
51
|
# File 'lib/pact_broker/test/test_data_builder.rb', line 49
def consumer_version
@consumer_version
end
|
#deployed_version ⇒ Object
Returns the value of attribute deployed_version.
59
60
61
|
# File 'lib/pact_broker/test/test_data_builder.rb', line 59
def deployed_version
@deployed_version
end
|
#environment ⇒ Object
Returns the value of attribute environment.
58
59
60
|
# File 'lib/pact_broker/test/test_data_builder.rb', line 58
def environment
@environment
end
|
#pact ⇒ Object
Returns the value of attribute pact.
52
53
54
|
# File 'lib/pact_broker/test/test_data_builder.rb', line 52
def pact
@pact
end
|
#pact_version ⇒ Object
Returns the value of attribute pact_version.
53
54
55
|
# File 'lib/pact_broker/test/test_data_builder.rb', line 53
def pact_version
@pact_version
end
|
#pacticipant ⇒ Object
Returns the value of attribute pacticipant.
46
47
48
|
# File 'lib/pact_broker/test/test_data_builder.rb', line 46
def pacticipant
@pacticipant
end
|
#provider ⇒ Object
Returns the value of attribute provider.
48
49
50
|
# File 'lib/pact_broker/test/test_data_builder.rb', line 48
def provider
@provider
end
|
#provider_version ⇒ Object
Returns the value of attribute provider_version.
50
51
52
|
# File 'lib/pact_broker/test/test_data_builder.rb', line 50
def provider_version
@provider_version
end
|
#released_version ⇒ Object
Returns the value of attribute released_version.
60
61
62
|
# File 'lib/pact_broker/test/test_data_builder.rb', line 60
def released_version
@released_version
end
|
#triggered_webhook ⇒ Object
Returns the value of attribute triggered_webhook.
57
58
59
|
# File 'lib/pact_broker/test/test_data_builder.rb', line 57
def triggered_webhook
@triggered_webhook
end
|
#verification ⇒ Object
Returns the value of attribute verification.
54
55
56
|
# File 'lib/pact_broker/test/test_data_builder.rb', line 54
def verification
@verification
end
|
#version ⇒ Object
Returns the value of attribute version.
51
52
53
|
# File 'lib/pact_broker/test/test_data_builder.rb', line 51
def version
@version
end
|
#webhook ⇒ Object
Returns the value of attribute webhook.
55
56
57
|
# File 'lib/pact_broker/test/test_data_builder.rb', line 55
def webhook
@webhook
end
|
#webhook_execution ⇒ Object
Returns the value of attribute webhook_execution.
56
57
58
|
# File 'lib/pact_broker/test/test_data_builder.rb', line 56
def webhook_execution
@webhook_execution
end
|
Instance Method Details
#add_day ⇒ Object
514
515
516
517
|
# File 'lib/pact_broker/test/test_data_builder.rb', line 514
def add_day
@now = @now + 1
self
end
|
#add_days(days = 1) ⇒ Object
519
520
521
522
|
# File 'lib/pact_broker/test/test_data_builder.rb', line 519
def add_days(days = 1)
@now = @now + days
self
end
|
#add_five_minutes ⇒ Object
539
540
541
542
|
# File 'lib/pact_broker/test/test_data_builder.rb', line 539
def add_five_minutes
@now = @now + (1.0/(24*60)*5)
self
end
|
#add_minute ⇒ Object
534
535
536
537
|
# File 'lib/pact_broker/test/test_data_builder.rb', line 534
def add_minute
@now = @now + (1.0/(24*60))
self
end
|
#and_return(instance_variable_name) ⇒ Object
500
501
502
|
# File 'lib/pact_broker/test/test_data_builder.rb', line 500
def and_return instance_variable_name
instance_variable_get("@#{instance_variable_name}")
end
|
66
67
68
|
# File 'lib/pact_broker/test/test_data_builder.rb', line 66
def *_args
self
end
|
#create_certificate(options = {path: "spec/fixtures/single-certificate.pem"}) ⇒ Object
420
421
422
423
424
|
# File 'lib/pact_broker/test/test_data_builder.rb', line 420
def create_certificate options = {path: "spec/fixtures/single-certificate.pem"}
options.delete(:comment)
PactBroker::Certificates::Certificate.create(uuid: SecureRandom.urlsafe_base64, content: File.read(options[:path]))
self
end
|
#create_condor ⇒ Object
85
86
87
88
|
# File 'lib/pact_broker/test/test_data_builder.rb', line 85
def create_condor
create_consumer("Condor")
self
end
|
#create_consumer(consumer_name = "Consumer #{model_counter}", params = {}) ⇒ Object
143
144
145
146
147
148
|
# File 'lib/pact_broker/test/test_data_builder.rb', line 143
def create_consumer consumer_name = "Consumer #{model_counter}", params = {}
params.delete(:comment)
create_pacticipant consumer_name, params
@consumer = @pacticipant
self
end
|
#create_consumer_version(version_number = "1.0.#{model_counter}", params = {}) ⇒ Object
178
179
180
181
|
# File 'lib/pact_broker/test/test_data_builder.rb', line 178
def create_consumer_version version_number = "1.0.#{model_counter}", params = {}
@consumer_version = create_pacticipant_version(version_number, consumer, params)
self
end
|
#create_consumer_version_tag(tag_name, params = {}) ⇒ Object
205
206
207
208
209
210
|
# File 'lib/pact_broker/test/test_data_builder.rb', line 205
def create_consumer_version_tag tag_name, params = {}
params.delete(:comment)
@tag = PactBroker::Domain::Tag.create(name: tag_name, version: @consumer_version)
set_created_at_if_set params[:created_at], :tags, { name: @tag.name, version_id: @tag.version_id }
self
end
|
#create_consumer_webhook(parameters = {}) ⇒ Object
361
362
363
|
# File 'lib/pact_broker/test/test_data_builder.rb', line 361
def create_consumer_webhook parameters = {}
create_webhook(parameters.merge(provider: nil))
end
|
#create_contract_email_service ⇒ Object
80
81
82
83
|
# File 'lib/pact_broker/test/test_data_builder.rb', line 80
def create_contract_email_service
create_consumer("Contract Email Service", :repository_url => "[email protected]:business-systems/contract-email-service")
self
end
|
#create_contract_proposal_service ⇒ Object
75
76
77
78
|
# File 'lib/pact_broker/test/test_data_builder.rb', line 75
def create_contract_proposal_service
create_provider("Contract Proposal Service", :repository_url => "[email protected]:business-systems/contract-proposal-service")
self
end
|
#create_deployed_version_for_consumer_version(uuid: SecureRandom.uuid, currently_deployed: true, environment_name: environment&.name, target: nil, created_at: nil) ⇒ Object
436
437
438
439
|
# File 'lib/pact_broker/test/test_data_builder.rb', line 436
def create_deployed_version_for_consumer_version(uuid: SecureRandom.uuid, currently_deployed: true, environment_name: environment&.name, target: nil, created_at: nil)
create_deployed_version(uuid: uuid, currently_deployed: currently_deployed, version: consumer_version, environment_name: environment_name, target: target, created_at: created_at)
self
end
|
#create_deployed_version_for_provider_version(uuid: SecureRandom.uuid, currently_deployed: true, environment_name: environment&.name, target: nil, created_at: nil) ⇒ Object
441
442
443
444
|
# File 'lib/pact_broker/test/test_data_builder.rb', line 441
def create_deployed_version_for_provider_version(uuid: SecureRandom.uuid, currently_deployed: true, environment_name: environment&.name, target: nil, created_at: nil)
create_deployed_version(uuid: uuid, currently_deployed: currently_deployed, version: provider_version, environment_name: environment_name, target: target, created_at: created_at)
self
end
|
#create_environment(name, params = {}) ⇒ Object
#create_everything_for_an_integration ⇒ Object
457
458
459
460
461
462
463
464
465
466
467
468
|
# File 'lib/pact_broker/test/test_data_builder.rb', line 457
def create_everything_for_an_integration
create_pact_with_verification("Foo", "1", "Bar", "2")
.create_label("label")
.create_consumer_version_tag("master")
.create_provider_version_tag("master")
.create_webhook
.create_triggered_webhook
.create_webhook_execution
.create_environment("test")
.create_deployed_version_for_consumer_version
.create_released_version_for_consumer_version
end
|
#create_global_contract_content_changed_webhook(parameters = {}) ⇒ Object
341
342
343
|
# File 'lib/pact_broker/test/test_data_builder.rb', line 341
def create_global_contract_content_changed_webhook parameters = {}
create_webhook(parameters.merge(consumer: nil, provider: nil, event_names: [PactBroker::Webhooks::WebhookEvent::CONTRACT_CONTENT_CHANGED]))
end
|
#create_global_contract_published_webhook(parameters = {}) ⇒ Object
337
338
339
|
# File 'lib/pact_broker/test/test_data_builder.rb', line 337
def create_global_contract_published_webhook parameters = {}
create_webhook(parameters.merge(consumer: nil, provider: nil, event_names: [PactBroker::Webhooks::WebhookEvent::CONTRACT_PUBLISHED]))
end
|
#create_global_verification_failed_webhook(parameters = {}) ⇒ Object
353
354
355
|
# File 'lib/pact_broker/test/test_data_builder.rb', line 353
def create_global_verification_failed_webhook parameters = {}
create_webhook(parameters.merge(consumer: nil, provider: nil, event_names: [PactBroker::Webhooks::WebhookEvent::VERIFICATION_FAILED]))
end
|
#create_global_verification_succeeded_webhook(parameters = {}) ⇒ Object
349
350
351
|
# File 'lib/pact_broker/test/test_data_builder.rb', line 349
def create_global_verification_succeeded_webhook parameters = {}
create_webhook(parameters.merge(consumer: nil, provider: nil, event_names: [PactBroker::Webhooks::WebhookEvent::VERIFICATION_SUCCEEDED]))
end
|
#create_global_verification_webhook(parameters = {}) ⇒ Object
345
346
347
|
# File 'lib/pact_broker/test/test_data_builder.rb', line 345
def create_global_verification_webhook parameters = {}
create_webhook(parameters.merge(consumer: nil, provider: nil, event_names: [PactBroker::Webhooks::WebhookEvent::VERIFICATION_PUBLISHED]))
end
|
#create_global_webhook(parameters = {}) ⇒ Object
333
334
335
|
# File 'lib/pact_broker/test/test_data_builder.rb', line 333
def create_global_webhook parameters = {}
create_webhook(parameters.merge(consumer: nil, provider: nil))
end
|
#create_integration ⇒ Object
#create_label(label_name) ⇒ Object
219
220
221
222
|
# File 'lib/pact_broker/test/test_data_builder.rb', line 219
def create_label label_name
@label = PactBroker::Domain::Label.create(name: label_name, pacticipant: @pacticipant)
self
end
|
#create_pact(params = {}) ⇒ Object
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
|
# File 'lib/pact_broker/test/test_data_builder.rb', line 245
def create_pact params = {}
params.delete(:comment)
json_content = params[:json_content] || default_json_content
pact_version_sha = params[:pact_version_sha] || generate_pact_version_sha(json_content)
pact_versions_count_before = PactBroker::Pacts::PactVersion.count
@pact = PactBroker::Pacts::Repository.new.create(
version_id: @consumer_version.id,
consumer_id: @consumer.id,
provider_id: @provider.id,
pact_version_sha: pact_version_sha,
json_content: prepare_json_content(json_content),
version: @consumer_version
)
pact_versions_count_after = PactBroker::Pacts::PactVersion.count
set_created_at_if_set(params[:created_at], :pact_publications, id: @pact.id)
set_created_at_if_set(params[:created_at], :pact_versions, sha: @pact.pact_version_sha) if pact_versions_count_after > pact_versions_count_before
set_created_at_if_set(params[:created_at], :latest_pact_publication_ids_for_consumer_versions, consumer_version_id: @consumer_version.id)
@pact = PactBroker::Pacts::PactPublication.find(id: @pact.id).to_domain
self
end
|
#create_pact_version_without_publication(json_content = nil) ⇒ Object
287
288
289
290
291
292
293
294
295
296
297
298
299
|
# File 'lib/pact_broker/test/test_data_builder.rb', line 287
def create_pact_version_without_publication(json_content = nil )
json_content = json_content ? json_content : {random: rand}.to_json
pact_version_sha = generate_pact_version_sha(json_content)
@pact_version = PactBroker::Pacts::PactVersion.new(
consumer_id: consumer.id,
provider_id: provider.id,
sha: pact_version_sha,
content: json_content,
created_at: Sequel.datetime_class.now
).save
self
end
|
#create_pact_with_consumer_version_tag(consumer_name, consumer_version_number, consumer_version_tag_name, provider_name) ⇒ Object
101
102
103
104
105
|
# File 'lib/pact_broker/test/test_data_builder.rb', line 101
def create_pact_with_consumer_version_tag consumer_name, consumer_version_number, consumer_version_tag_name, provider_name
create_pact_with_hierarchy(consumer_name, consumer_version_number, provider_name)
create_consumer_version_tag(consumer_version_tag_name)
self
end
|
#create_pact_with_different_content(params = {}) ⇒ Object
266
267
268
|
# File 'lib/pact_broker/test/test_data_builder.rb', line 266
def create_pact_with_different_content params = {}
create_pact(params.merge(json_content: random_json_content(consumer.name, provider.name)))
end
|
#create_pact_with_hierarchy(consumer_name = "Consumer", consumer_version_number = "1.2.3", provider_name = "Provider", json_content = nil) ⇒ Object
90
91
92
93
94
95
96
97
98
99
|
# File 'lib/pact_broker/test/test_data_builder.rb', line 90
def create_pact_with_hierarchy consumer_name = "Consumer", consumer_version_number = "1.2.3", provider_name = "Provider", json_content = nil
use_consumer(consumer_name)
create_consumer(consumer_name) if !consumer
use_provider(provider_name)
create_provider provider_name if !provider
use_consumer_version(consumer_version_number)
create_consumer_version(consumer_version_number) if !consumer_version
create_pact json_content: json_content || default_json_content
self
end
|
#create_pact_with_verification(consumer_name = "Consumer", consumer_version = "1.0.#{model_counter}", provider_name = "Provider", provider_version = "1.0.#{model_counter}", success = true) ⇒ Object
107
108
109
110
111
|
# File 'lib/pact_broker/test/test_data_builder.rb', line 107
def create_pact_with_verification consumer_name = "Consumer", consumer_version = "1.0.#{model_counter}", provider_name = "Provider", provider_version = "1.0.#{model_counter}", success = true
create_pact_with_hierarchy(consumer_name, consumer_version, provider_name)
create_verification(number: model_counter, provider_version: provider_version, success: success)
self
end
|
113
114
115
116
117
118
119
120
|
# File 'lib/pact_broker/test/test_data_builder.rb', line 113
def create_pact_with_verification_and_tags consumer_name = "Consumer", consumer_version = "1.0.#{model_counter}", consumer_version_tags = [], provider_name = "Provider", provider_version = "1.0.#{model_counter}", provider_version_tags = []
create_pact_with_hierarchy(consumer_name, consumer_version, provider_name)
consumer_version_tags.each do | tag |
create_consumer_version_tag(tag)
end
create_verification(number: model_counter, provider_version: provider_version, tag_names: provider_version_tags)
self
end
|
#create_pacticipant(pacticipant_name, params = {}) ⇒ Object
135
136
137
138
139
140
141
|
# File 'lib/pact_broker/test/test_data_builder.rb', line 135
def create_pacticipant pacticipant_name, params = {}
params.delete(:comment)
repository_url = "https://github.com/#{params[:repository_namespace] || "example-organization"}/#{params[:repository_name] || pacticipant_name}"
merged_params = { name: pacticipant_name, repository_url: repository_url }.merge(params)
@pacticipant = PactBroker::Domain::Pacticipant.create(merged_params)
self
end
|
#create_pricing_service ⇒ Object
70
71
72
73
|
# File 'lib/pact_broker/test/test_data_builder.rb', line 70
def create_pricing_service
create_provider("Pricing Service", :repository_url => "[email protected]:business-systems/pricing-service")
self
end
|
#create_provider(provider_name = "Provider #{model_counter}", params = {}) ⇒ Object
156
157
158
159
160
161
|
# File 'lib/pact_broker/test/test_data_builder.rb', line 156
def create_provider provider_name = "Provider #{model_counter}", params = {}
params.delete(:comment)
create_pacticipant provider_name, params
@provider = @pacticipant
self
end
|
#create_provider_version(version_number = "1.0.#{model_counter}", params = {}) ⇒ Object
183
184
185
186
|
# File 'lib/pact_broker/test/test_data_builder.rb', line 183
def create_provider_version version_number = "1.0.#{model_counter}", params = {}
@provider_version = create_pacticipant_version(version_number, provider, params)
self
end
|
#create_provider_version_tag(tag_name, params = {}) ⇒ Object
212
213
214
215
216
217
|
# File 'lib/pact_broker/test/test_data_builder.rb', line 212
def create_provider_version_tag tag_name, params = {}
params.delete(:comment)
@tag = PactBroker::Domain::Tag.create(name: tag_name, version: @provider_version)
set_created_at_if_set params[:created_at], :tags, { name: @tag.name, version_id: @tag.version_id }
self
end
|
#create_provider_webhook(parameters = {}) ⇒ Object
357
358
359
|
# File 'lib/pact_broker/test/test_data_builder.rb', line 357
def create_provider_webhook parameters = {}
create_webhook(parameters.merge(consumer: nil))
end
|
#create_released_version_for_consumer_version(uuid: SecureRandom.uuid, currently_supported: true, environment_name: environment&.name, created_at: nil) ⇒ Object
446
447
448
449
|
# File 'lib/pact_broker/test/test_data_builder.rb', line 446
def create_released_version_for_consumer_version(uuid: SecureRandom.uuid, currently_supported: true, environment_name: environment&.name, created_at: nil)
create_released_version(uuid: uuid, currently_supported: currently_supported, version: consumer_version, environment_name: environment_name, created_at: created_at)
self
end
|
#create_released_version_for_provider_version(uuid: SecureRandom.uuid, currently_supported: true, environment_name: environment&.name, created_at: nil) ⇒ Object
451
452
453
454
|
# File 'lib/pact_broker/test/test_data_builder.rb', line 451
def create_released_version_for_provider_version(uuid: SecureRandom.uuid, currently_supported: true, environment_name: environment&.name, created_at: nil)
create_released_version(uuid: uuid, currently_supported: currently_supported, version: provider_version, environment_name: environment_name, created_at: created_at)
self
end
|
#create_tag(tag_name, params = {}) ⇒ Object
198
199
200
201
202
203
|
# File 'lib/pact_broker/test/test_data_builder.rb', line 198
def create_tag tag_name, params = {}
params.delete(:comment)
@tag = PactBroker::Domain::Tag.create(name: tag_name, version: @version, version_order: @version.order, pacticipant_id: @version.pacticipant_id)
set_created_at_if_set params[:created_at], :tags, { name: @tag.name, version_id: @tag.version_id }
self
end
|
#create_tag_with_hierarchy(pacticipant_name, pacticipant_version, tag_name) ⇒ Object
129
130
131
132
133
|
# File 'lib/pact_broker/test/test_data_builder.rb', line 129
def create_tag_with_hierarchy pacticipant_name, pacticipant_version, tag_name
create_version_with_hierarchy pacticipant_name, pacticipant_version
PactBroker::Domain::Tag.create(name: tag_name, version: @version)
self
end
|
#create_triggered_webhook(params = {}) ⇒ Object
365
366
367
368
369
370
371
372
373
374
375
|
# File 'lib/pact_broker/test/test_data_builder.rb', line 365
def create_triggered_webhook params = {}
params.delete(:comment)
uuid = params[:uuid] || webhook_service.next_uuid
event_name = params.key?(:event_name) ? params[:event_name] : @webhook.events.first.name verification = @webhook.trigger_on_provider_verification_published? ? @verification : nil
event_context = params[:event_context]
@triggered_webhook = webhook_repository.create_triggered_webhook(uuid, @webhook, @pact, verification, PactBroker::Webhooks::TriggerService::RESOURCE_CREATION, event_name, event_context)
@triggered_webhook.update(status: params[:status]) if params[:status]
set_created_at_if_set params[:created_at], :triggered_webhooks, { id: @triggered_webhook.id }
self
end
|
#create_verification(parameters = {}) ⇒ Object
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
|
# File 'lib/pact_broker/test/test_data_builder.rb', line 388
def create_verification parameters = {}
parameters.delete(:comment)
branch = parameters.delete(:branch)
tag_names = [parameters.delete(:tag_names), parameters.delete(:tag_name)].flatten.compact
provider_version_number = parameters[:provider_version] || "4.5.6"
default_parameters = { success: true, number: 1, test_results: { some: "results" }, wip: false }
default_parameters[:execution_date] = @now if @now
parameters = default_parameters.merge(parameters)
parameters.delete(:provider_version)
verification = PactBroker::Domain::Verification.new(parameters)
pact_version = PactBroker::Pacts::Repository.new.find_pact_version(@consumer, @provider, pact.pact_version_sha)
@provider_version = version_repository.find_by_pacticipant_id_and_number_or_create(provider.id, provider_version_number)
PactBroker::Versions::BranchVersionRepository.new.add_branch(@provider_version, branch) if branch
if tag_names.any?
tag_names.each do | tag_name |
PactBroker::Domain::Tag.new(name: tag_name, version: @provider_version, version_order: @provider_version.order).insert_ignore
set_created_at_if_set(parameters[:created_at], :tags, version_id: @provider_version.id, name: tag_name)
end
end
@verification = PactBroker::Verifications::Repository.new.create(verification, provider_version_number, pact_version)
set_created_at_if_set(parameters[:created_at], :verifications, id: @verification.id)
set_created_at_if_set(parameters[:created_at], :versions, id: @provider_version.id)
set_created_at_if_set(parameters[:created_at], :latest_verification_id_for_pact_version_and_provider_version, pact_version_id: pact_version_id, provider_version_id: @provider_version.id)
set_created_at_if_set(parameters[:created_at], :pact_version_provider_tag_successful_verifications, { verification_id: @verification.id }, :execution_date)
self
end
|
#create_verification_webhook(parameters = {}) ⇒ Object
rubocop: enable Metrics/CyclomaticComplexity
#create_version(version_number = "1.0.#{model_counter}", params = {}) ⇒ Object
173
174
175
176
|
# File 'lib/pact_broker/test/test_data_builder.rb', line 173
def create_version version_number = "1.0.#{model_counter}", params = {}
@version = create_pacticipant_version(version_number, pacticipant, params)
self
end
|
#create_version_with_hierarchy(pacticipant_name, pacticipant_version) ⇒ Object
122
123
124
125
126
127
|
# File 'lib/pact_broker/test/test_data_builder.rb', line 122
def create_version_with_hierarchy pacticipant_name, pacticipant_version
pacticipant = pacticipant_service.create(:name => pacticipant_name)
version = PactBroker::Domain::Version.create(:number => pacticipant_version, :pacticipant => pacticipant)
@version = PactBroker::Domain::Version.find(id: version.id) self
end
|
#create_webhook(parameters = {}) ⇒ Object
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
|
# File 'lib/pact_broker/test/test_data_builder.rb', line 301
def create_webhook parameters = {}
params = parameters.dup
consumer, webhook_consumer = webhook_pacticipant(:consumer, params)
provider, webhook_provider = webhook_pacticipant(:provider, params)
uuid = params[:uuid] || PactBroker::Webhooks::Service.next_uuid
enabled = params.key?(:enabled) ? params.delete(:enabled) : true
event_params = if params[:event_names]
params[:event_names].collect{ |event_name| {name: event_name} }
else
params[:events] || [{ name: PactBroker::Webhooks::WebhookEvent::DEFAULT_EVENT_NAME }]
end
events = event_params.collect{ |e| PactBroker::Webhooks::WebhookEvent.new(e) }
template_params = { method: "POST", url: "http://example.org", headers: {"Content-Type" => "application/json"}, username: params[:username], password: params[:password] }
request = PactBroker::Webhooks::WebhookRequestTemplate.new(template_params.merge(params))
new_webhook = PactBroker::Domain::Webhook.new(
request: request,
events: events,
description: params[:description],
enabled: enabled,
consumer: webhook_consumer,
provider: webhook_provider
)
@webhook = PactBroker::Webhooks::Repository.new.create uuid, new_webhook, consumer, provider
set_created_at_if_set(params[:created_at], :webhooks, uuid: @webhook.uuid)
self
end
|
#create_webhook_execution(params = {}) ⇒ Object
377
378
379
380
381
382
383
384
385
386
|
# File 'lib/pact_broker/test/test_data_builder.rb', line 377
def create_webhook_execution params = {}
params.delete(:comment)
logs = params[:logs] || "logs"
webhook_execution_result = PactBroker::Webhooks::WebhookExecutionResult.new(nil, OpenStruct.new(code: "200"), true, logs, nil)
@webhook_execution = PactBroker::Webhooks::Repository.new.create_execution @triggered_webhook, webhook_execution_result
created_at = params[:created_at] || @pact.created_at + Rational(1, 86400)
set_created_at_if_set created_at, :webhook_executions, {id: @webhook_execution.id}
@webhook_execution = PactBroker::Webhooks::Execution.find(id: @webhook_execution.id)
self
end
|
#find_environment(environment_name) ⇒ Object
#find_pact(consumer_name, consumer_version_number, provider_name) ⇒ Object
478
479
480
|
# File 'lib/pact_broker/test/test_data_builder.rb', line 478
def find_pact(consumer_name, consumer_version_number, provider_name)
pact_repository.find_pact(consumer_name, consumer_version_number, provider_name)
end
|
#find_pact_publication(consumer_name, consumer_version_number, provider_name) ⇒ Object
482
483
484
485
486
487
488
|
# File 'lib/pact_broker/test/test_data_builder.rb', line 482
def find_pact_publication(consumer_name, consumer_version_number, provider_name)
PactBroker::Pacts::PactPublication
.remove_overridden_revisions
.where(provider: find_pacticipant(provider_name))
.where(consumer_version: find_version(consumer_name, consumer_version_number))
.single_record
end
|
#find_pacticipant(name) ⇒ Object
470
471
472
|
# File 'lib/pact_broker/test/test_data_builder.rb', line 470
def find_pacticipant(name)
PactBroker::Domain::Pacticipant.where(name: name).single_record
end
|
#find_version(pacticipant_name, version_number) ⇒ Object
474
475
476
|
# File 'lib/pact_broker/test/test_data_builder.rb', line 474
def find_version(pacticipant_name, version_number)
PactBroker::Domain::Version.for(pacticipant_name, version_number)
end
|
#in_utc ⇒ Object
544
545
546
547
548
549
550
551
552
|
# File 'lib/pact_broker/test/test_data_builder.rb', line 544
def in_utc
original_tz = ENV["TZ"]
begin
ENV["TZ"] = "UTC"
yield
ensure
ENV["TZ"] = original_tz
end
end
|
#model_counter ⇒ Object
494
495
496
497
498
|
# File 'lib/pact_broker/test/test_data_builder.rb', line 494
def model_counter
@@model_counter ||= 0
@@model_counter += 1
@@model_counter
end
|
#publish_pact(consumer_name:, provider_name:, consumer_version_number:, tags: nil, branch: nil, build_url: nil, json_content: nil) ⇒ Object
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
|
# File 'lib/pact_broker/test/test_data_builder.rb', line 224
def publish_pact(consumer_name:, provider_name:, consumer_version_number: , tags: nil, branch: nil, build_url: nil, json_content: nil)
json_content = json_content || random_json_content(consumer_name, provider_name)
contracts = [
PactBroker::Contracts::ContractToPublish.from_hash(consumer_name: consumer_name, provider_name: provider_name, decoded_content: json_content, content_type: "application/json", specification: "pact")
]
contracts_to_publish = PactBroker::Contracts::ContractsToPublish.from_hash(
pacticipant_name: consumer_name,
pacticipant_version_number: consumer_version_number,
tags: tags,
branch: branch,
build_url: build_url,
contracts: contracts
)
PactBroker::Contracts::Service.publish(contracts_to_publish, base_url: "http://example.org")
@consumer = find_pacticipant(consumer_name)
@consumer_version = find_version(consumer_name, consumer_version_number)
@provider = find_pacticipant(provider_name)
@pact = PactBroker::Pacts::PactPublication.last.to_domain
self
end
|
#random_json_content(consumer_name, provider_name) ⇒ Object
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
|
# File 'lib/pact_broker/test/test_data_builder.rb', line 554
def random_json_content(consumer_name, provider_name)
{
"consumer" => {
"name" => consumer_name
},
"provider" => {
"name" => provider_name
},
"interactions" => [{
"request" => {
"method" => "GET",
"path" => "/things/#{rand}"
},
"response" => {
"status" => 200
}
}],
}.to_json
end
|
#republish_same_pact(params = {}) ⇒ Object
270
271
272
273
274
275
|
# File 'lib/pact_broker/test/test_data_builder.rb', line 270
def republish_same_pact params = {}
params.delete(:comment)
last_pact_version = PactBroker::Pacts::PactVersion.order(:id).last
create_pact pact_version_sha: last_pact_version.sha, json_content: last_pact_version.content, created_at: params[:created_at]
self
end
|
#revise_pact(json_content = nil) ⇒ Object
277
278
279
280
281
282
283
284
285
|
# File 'lib/pact_broker/test/test_data_builder.rb', line 277
def revise_pact json_content = nil
json_content = json_content ? json_content : {random: rand}.to_json
pact_version_sha = generate_pact_version_sha(json_content)
@pact = PactBroker::Pacts::Repository.new.update(@pact.id,
json_content: prepare_json_content(json_content),
pact_version_sha: pact_version_sha
)
self
end
|
#set_now(date) ⇒ Object
504
505
506
507
|
# File 'lib/pact_broker/test/test_data_builder.rb', line 504
def set_now date
@now = date.to_date
self
end
|
#set_now_date_time(date_time) ⇒ Object
509
510
511
512
|
# File 'lib/pact_broker/test/test_data_builder.rb', line 509
def set_now_date_time date_time
@now = date_time
self
end
|
#subtract_day ⇒ Object
524
525
526
527
|
# File 'lib/pact_broker/test/test_data_builder.rb', line 524
def subtract_day
@now = @now - 1
self
end
|
#subtract_days(days = 1) ⇒ Object
529
530
531
532
|
# File 'lib/pact_broker/test/test_data_builder.rb', line 529
def subtract_days(days = 1)
@now = @now - days
self
end
|
#use_consumer(consumer_name, params = {}) ⇒ Object
150
151
152
153
154
|
# File 'lib/pact_broker/test/test_data_builder.rb', line 150
def use_consumer consumer_name, params = {}
params.delete(:comment)
@consumer = PactBroker::Domain::Pacticipant.find(:name => consumer_name)
self
end
|
#use_consumer_version(version_number) ⇒ Object
188
189
190
191
|
# File 'lib/pact_broker/test/test_data_builder.rb', line 188
def use_consumer_version version_number
@consumer_version = PactBroker::Domain::Version.where(pacticipant_id: @consumer.id, number: version_number).single_record
self
end
|
#use_provider(provider_name) ⇒ Object
168
169
170
171
|
# File 'lib/pact_broker/test/test_data_builder.rb', line 168
def use_provider provider_name
@provider = PactBroker::Domain::Pacticipant.find(:name => provider_name)
self
end
|
#use_provider_version(version_number) ⇒ Object
193
194
195
196
|
# File 'lib/pact_broker/test/test_data_builder.rb', line 193
def use_provider_version version_number
@provider_version = PactBroker::Domain::Version.where(pacticipant_id: @provider.id, number: version_number).single_record
self
end
|