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::SERVICE_FACTORIES
Repositories::REPOSITORY_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
-
#clear_now ⇒ 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
Creates a consumer, consumer version with tag, provider and pact Does NOT rely on previous state.
-
#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
Creates a consumer, consumer version, provider and pact with the specified JSON content Does NOT rely on previous state.
-
#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
Creates a consumer, consumer version, provider, pact and verification Does NOT rely on previous state.
-
#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
Creates a consumer, consumer version, provider, pact and verification Does NOT rely on previous state.
-
#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 a pacticipant and version Does NOT rely on previous state.
-
#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
-
#fixed_json_content(consumer_name, provider_name, differentiator) ⇒ 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_service, #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_repository, #branch_version_repository, #get_repository, #integration_repository, #label_repository, #matrix_repository, #pact_repository, #pacticipant_repository, #register_default_repositories, #register_repository, #tag_repository, #verification_repository, #version_repository, #webhook_repository
Constructor Details
Returns a new instance of TestDataBuilder.
63
64
65
|
# File 'lib/pact_broker/test/test_data_builder.rb', line 63
def initialize(_params = {})
@now = DateTime.now
end
|
Instance Attribute Details
#consumer ⇒ Object
Returns the value of attribute consumer.
48
49
50
|
# File 'lib/pact_broker/test/test_data_builder.rb', line 48
def consumer
@consumer
end
|
#consumer_version ⇒ Object
Returns the value of attribute consumer_version.
50
51
52
|
# File 'lib/pact_broker/test/test_data_builder.rb', line 50
def consumer_version
@consumer_version
end
|
#deployed_version ⇒ Object
Returns the value of attribute deployed_version.
60
61
62
|
# File 'lib/pact_broker/test/test_data_builder.rb', line 60
def deployed_version
@deployed_version
end
|
#environment ⇒ Object
Returns the value of attribute environment.
59
60
61
|
# File 'lib/pact_broker/test/test_data_builder.rb', line 59
def environment
@environment
end
|
#pact ⇒ Object
Returns the value of attribute pact.
53
54
55
|
# File 'lib/pact_broker/test/test_data_builder.rb', line 53
def pact
@pact
end
|
#pact_version ⇒ Object
Returns the value of attribute pact_version.
54
55
56
|
# File 'lib/pact_broker/test/test_data_builder.rb', line 54
def pact_version
@pact_version
end
|
#pacticipant ⇒ Object
Returns the value of attribute pacticipant.
47
48
49
|
# File 'lib/pact_broker/test/test_data_builder.rb', line 47
def pacticipant
@pacticipant
end
|
#provider ⇒ Object
Returns the value of attribute provider.
49
50
51
|
# File 'lib/pact_broker/test/test_data_builder.rb', line 49
def provider
@provider
end
|
#provider_version ⇒ Object
Returns the value of attribute provider_version.
51
52
53
|
# File 'lib/pact_broker/test/test_data_builder.rb', line 51
def provider_version
@provider_version
end
|
#released_version ⇒ Object
Returns the value of attribute released_version.
61
62
63
|
# File 'lib/pact_broker/test/test_data_builder.rb', line 61
def released_version
@released_version
end
|
#triggered_webhook ⇒ Object
Returns the value of attribute triggered_webhook.
58
59
60
|
# File 'lib/pact_broker/test/test_data_builder.rb', line 58
def triggered_webhook
@triggered_webhook
end
|
#verification ⇒ Object
Returns the value of attribute verification.
55
56
57
|
# File 'lib/pact_broker/test/test_data_builder.rb', line 55
def verification
@verification
end
|
#version ⇒ Object
Returns the value of attribute version.
52
53
54
|
# File 'lib/pact_broker/test/test_data_builder.rb', line 52
def version
@version
end
|
#webhook ⇒ Object
Returns the value of attribute webhook.
56
57
58
|
# File 'lib/pact_broker/test/test_data_builder.rb', line 56
def webhook
@webhook
end
|
#webhook_execution ⇒ Object
Returns the value of attribute webhook_execution.
57
58
59
|
# File 'lib/pact_broker/test/test_data_builder.rb', line 57
def webhook_execution
@webhook_execution
end
|
Instance Method Details
#add_day ⇒ Object
557
558
559
560
|
# File 'lib/pact_broker/test/test_data_builder.rb', line 557
def add_day
@now = @now + 1
self
end
|
#add_days(days = 1) ⇒ Object
562
563
564
565
|
# File 'lib/pact_broker/test/test_data_builder.rb', line 562
def add_days(days = 1)
@now = @now + days
self
end
|
#add_five_minutes ⇒ Object
582
583
584
585
|
# File 'lib/pact_broker/test/test_data_builder.rb', line 582
def add_five_minutes
@now = @now + (1.0/(24*60)*5)
self
end
|
#add_minute ⇒ Object
577
578
579
580
|
# File 'lib/pact_broker/test/test_data_builder.rb', line 577
def add_minute
@now = @now + (1.0/(24*60))
self
end
|
#and_return(instance_variable_name) ⇒ Object
539
540
541
|
# File 'lib/pact_broker/test/test_data_builder.rb', line 539
def and_return instance_variable_name
instance_variable_get("@#{instance_variable_name}")
end
|
#clear_now ⇒ Object
543
544
545
|
# File 'lib/pact_broker/test/test_data_builder.rb', line 543
def clear_now
@now = nil
end
|
67
68
69
|
# File 'lib/pact_broker/test/test_data_builder.rb', line 67
def *_args
self
end
|
#create_certificate(options = {path: "spec/fixtures/single-certificate.pem"}) ⇒ Object
459
460
461
462
463
|
# File 'lib/pact_broker/test/test_data_builder.rb', line 459
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
86
87
88
89
|
# File 'lib/pact_broker/test/test_data_builder.rb', line 86
def create_condor
create_consumer("Condor")
self
end
|
#create_consumer(consumer_name = "Consumer #{model_counter}", params = {}) ⇒ Object
175
176
177
178
179
180
|
# File 'lib/pact_broker/test/test_data_builder.rb', line 175
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
210
211
212
213
|
# File 'lib/pact_broker/test/test_data_builder.rb', line 210
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
237
238
239
240
241
242
|
# File 'lib/pact_broker/test/test_data_builder.rb', line 237
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
401
402
403
|
# File 'lib/pact_broker/test/test_data_builder.rb', line 401
def create_consumer_webhook parameters = {}
create_webhook(parameters.merge(provider: nil))
end
|
#create_contract_email_service ⇒ Object
81
82
83
84
|
# File 'lib/pact_broker/test/test_data_builder.rb', line 81
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
76
77
78
79
|
# File 'lib/pact_broker/test/test_data_builder.rb', line 76
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
475
476
477
478
|
# File 'lib/pact_broker/test/test_data_builder.rb', line 475
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
480
481
482
483
|
# File 'lib/pact_broker/test/test_data_builder.rb', line 480
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
496
497
498
499
500
501
502
503
504
505
506
507
|
# File 'lib/pact_broker/test/test_data_builder.rb', line 496
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
381
382
383
|
# File 'lib/pact_broker/test/test_data_builder.rb', line 381
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
377
378
379
|
# File 'lib/pact_broker/test/test_data_builder.rb', line 377
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
393
394
395
|
# File 'lib/pact_broker/test/test_data_builder.rb', line 393
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
389
390
391
|
# File 'lib/pact_broker/test/test_data_builder.rb', line 389
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
385
386
387
|
# File 'lib/pact_broker/test/test_data_builder.rb', line 385
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
373
374
375
|
# File 'lib/pact_broker/test/test_data_builder.rb', line 373
def create_global_webhook parameters = {}
create_webhook(parameters.merge(consumer: nil, provider: nil))
end
|
#create_integration ⇒ Object
#create_label(label_name) ⇒ Object
251
252
253
254
|
# File 'lib/pact_broker/test/test_data_builder.rb', line 251
def create_label label_name
@label = PactBroker::Domain::Label.create(name: label_name, pacticipant: @pacticipant)
self
end
|
#create_pact(params = {}) ⇒ Object
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
|
# File 'lib/pact_broker/test/test_data_builder.rb', line 283
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
consumer_version.reload
consumer_version.pact_publications.each{ | pp | pp.allow_lazy_load if pp.respond_to?(:allow_lazy_load) }
self
end
|
#create_pact_version_without_publication(json_content = nil) ⇒ Object
327
328
329
330
331
332
333
334
335
336
337
338
339
|
# File 'lib/pact_broker/test/test_data_builder.rb', line 327
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
Creates a consumer, consumer version with tag, provider and pact Does NOT rely on previous state.
114
115
116
117
118
|
# File 'lib/pact_broker/test/test_data_builder.rb', line 114
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
306
307
308
|
# File 'lib/pact_broker/test/test_data_builder.rb', line 306
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
Creates a consumer, consumer version, provider and pact with the specified JSON content Does NOT rely on previous state.
97
98
99
100
101
102
103
104
105
106
|
# File 'lib/pact_broker/test/test_data_builder.rb', line 97
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
Creates a consumer, consumer version, provider, pact and verification Does NOT rely on previous state.
127
128
129
130
131
|
# File 'lib/pact_broker/test/test_data_builder.rb', line 127
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
|
Creates a consumer, consumer version, provider, pact and verification Does NOT rely on previous state.
141
142
143
144
145
146
147
148
|
# File 'lib/pact_broker/test/test_data_builder.rb', line 141
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
167
168
169
170
171
172
173
|
# File 'lib/pact_broker/test/test_data_builder.rb', line 167
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
71
72
73
74
|
# File 'lib/pact_broker/test/test_data_builder.rb', line 71
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
188
189
190
191
192
193
|
# File 'lib/pact_broker/test/test_data_builder.rb', line 188
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
215
216
217
218
|
# File 'lib/pact_broker/test/test_data_builder.rb', line 215
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
244
245
246
247
248
249
|
# File 'lib/pact_broker/test/test_data_builder.rb', line 244
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
397
398
399
|
# File 'lib/pact_broker/test/test_data_builder.rb', line 397
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
485
486
487
488
|
# File 'lib/pact_broker/test/test_data_builder.rb', line 485
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
490
491
492
493
|
# File 'lib/pact_broker/test/test_data_builder.rb', line 490
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
230
231
232
233
234
235
|
# File 'lib/pact_broker/test/test_data_builder.rb', line 230
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
161
162
163
164
165
|
# File 'lib/pact_broker/test/test_data_builder.rb', line 161
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
405
406
407
408
409
410
411
412
413
414
415
|
# File 'lib/pact_broker/test/test_data_builder.rb', line 405
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
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
|
# File 'lib/pact_broker/test/test_data_builder.rb', line 436
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)
branch_version = PactBroker::Versions::BranchVersionRepository.new.add_branch(@provider_version, branch) if branch
set_created_at_for_provider_tags(parameters, tag_names)
@verification = PactBroker::Verifications::Repository.new.create(verification, provider_version_number, pact_version)
set_created_at_for_verification_resources(parameters, pact_version.id, branch, branch_version)
self
end
|
#create_verification_webhook(parameters = {}) ⇒ Object
rubocop: enable Metrics/CyclomaticComplexity
#create_version(version_number = "1.0.#{model_counter}", params = {}) ⇒ Object
205
206
207
208
|
# File 'lib/pact_broker/test/test_data_builder.rb', line 205
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
Create a pacticipant and version Does NOT rely on previous state
154
155
156
157
158
159
|
# File 'lib/pact_broker/test/test_data_builder.rb', line 154
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
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
|
# File 'lib/pact_broker/test/test_data_builder.rb', line 341
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
417
418
419
420
421
422
423
424
425
426
|
# File 'lib/pact_broker/test/test_data_builder.rb', line 417
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
517
518
519
|
# File 'lib/pact_broker/test/test_data_builder.rb', line 517
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
521
522
523
524
525
526
527
|
# File 'lib/pact_broker/test/test_data_builder.rb', line 521
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
509
510
511
|
# File 'lib/pact_broker/test/test_data_builder.rb', line 509
def find_pacticipant(name)
PactBroker::Domain::Pacticipant.where(name: name).single_record
end
|
#find_version(pacticipant_name, version_number) ⇒ Object
513
514
515
|
# File 'lib/pact_broker/test/test_data_builder.rb', line 513
def find_version(pacticipant_name, version_number)
PactBroker::Domain::Version.for(pacticipant_name, version_number)
end
|
#fixed_json_content(consumer_name, provider_name, differentiator) ⇒ Object
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
|
# File 'lib/pact_broker/test/test_data_builder.rb', line 617
def fixed_json_content(consumer_name, provider_name, differentiator)
{
"consumer" => {
"name" => consumer_name
},
"provider" => {
"name" => provider_name
},
"interactions" => [{
"request" => {
"method" => "GET",
"path" => "/things/#{differentiator}"
},
"response" => {
"status" => 200
}
}],
}.to_json
end
|
#in_utc ⇒ Object
587
588
589
590
591
592
593
594
595
|
# File 'lib/pact_broker/test/test_data_builder.rb', line 587
def in_utc
original_tz = ENV["TZ"]
begin
ENV["TZ"] = "UTC"
yield
ensure
ENV["TZ"] = original_tz
end
end
|
#model_counter ⇒ Object
533
534
535
536
537
|
# File 'lib/pact_broker/test/test_data_builder.rb', line 533
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
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
|
# File 'lib/pact_broker/test/test_data_builder.rb', line 256
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",
pact_version_sha: PactBroker::Pacts::GenerateSha.call(json_content))
]
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
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
|
# File 'lib/pact_broker/test/test_data_builder.rb', line 597
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
310
311
312
313
314
315
|
# File 'lib/pact_broker/test/test_data_builder.rb', line 310
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
317
318
319
320
321
322
323
324
325
|
# File 'lib/pact_broker/test/test_data_builder.rb', line 317
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
547
548
549
550
|
# File 'lib/pact_broker/test/test_data_builder.rb', line 547
def set_now date
@now = date.to_date
self
end
|
#set_now_date_time(date_time) ⇒ Object
552
553
554
555
|
# File 'lib/pact_broker/test/test_data_builder.rb', line 552
def set_now_date_time date_time
@now = date_time
self
end
|
#subtract_day ⇒ Object
567
568
569
570
|
# File 'lib/pact_broker/test/test_data_builder.rb', line 567
def subtract_day
@now = @now - 1
self
end
|
#subtract_days(days = 1) ⇒ Object
572
573
574
575
|
# File 'lib/pact_broker/test/test_data_builder.rb', line 572
def subtract_days(days = 1)
@now = @now - days
self
end
|
#use_consumer(consumer_name, params = {}) ⇒ Object
182
183
184
185
186
|
# File 'lib/pact_broker/test/test_data_builder.rb', line 182
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
220
221
222
223
|
# File 'lib/pact_broker/test/test_data_builder.rb', line 220
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
200
201
202
203
|
# File 'lib/pact_broker/test/test_data_builder.rb', line 200
def use_provider provider_name
@provider = PactBroker::Domain::Pacticipant.find(:name => provider_name)
self
end
|
#use_provider_version(version_number) ⇒ Object
225
226
227
228
|
# File 'lib/pact_broker/test/test_data_builder.rb', line 225
def use_provider_version version_number
@provider_version = PactBroker::Domain::Version.where(pacticipant_id: @provider.id, number: version_number).single_record
self
end
|