pact_broker 0.0.4 → 0.0.5

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.
Files changed (42) hide show
  1. data/CHANGELOG.md +16 -2
  2. data/Gemfile.lock +12 -21
  3. data/config.ru +2 -1
  4. data/db/migrations/05_add_order_column_to_version.rb +7 -0
  5. data/db/pact_broker_database.sqlite3 +0 -0
  6. data/lib/pact_broker/api.rb +23 -11
  7. data/lib/pact_broker/api/representors.rb +4 -1
  8. data/lib/pact_broker/api/representors/pact_broker_urls.rb +8 -0
  9. data/lib/pact_broker/api/representors/pact_collection_representor.rb +34 -0
  10. data/lib/pact_broker/api/representors/pact_pacticipant_representor.rb +27 -0
  11. data/lib/pact_broker/api/representors/pact_representor.rb +27 -0
  12. data/lib/pact_broker/api/representors/pacticipant_collection_representor.rb +20 -0
  13. data/lib/pact_broker/api/representors/pacticipant_empty_collection_representor.rb +33 -0
  14. data/lib/pact_broker/api/representors/representable_pact.rb +19 -0
  15. data/lib/pact_broker/api/representors/version_representor.rb +1 -0
  16. data/lib/pact_broker/models/order_versions.rb +33 -0
  17. data/lib/pact_broker/models/pact.rb +7 -2
  18. data/lib/pact_broker/models/pacticipant.rb +3 -1
  19. data/lib/pact_broker/models/version.rb +7 -1
  20. data/lib/pact_broker/repositories/pact_repository.rb +26 -5
  21. data/lib/pact_broker/resources/json_resource.rb +37 -0
  22. data/lib/pact_broker/resources/latest_pact.rb +41 -0
  23. data/lib/pact_broker/resources/latest_pacts.rb +49 -0
  24. data/lib/pact_broker/resources/pact.rb +49 -0
  25. data/lib/pact_broker/resources/pacticipant.rb +80 -0
  26. data/lib/pact_broker/resources/pacticipants.rb +41 -0
  27. data/lib/pact_broker/services/pact_service.rb +11 -9
  28. data/lib/pact_broker/version.rb +1 -1
  29. data/pact_broker.gemspec +2 -3
  30. data/spec/lib/pact_broker/api/representors/pact_collection_representor_spec.rb +23 -0
  31. data/spec/lib/pact_broker/api/representors/representable_pact_spec.rb +29 -0
  32. data/spec/lib/pact_broker/models/order_versions_spec.rb +23 -0
  33. data/spec/lib/pact_broker/repositories/pact_repository_spec.rb +39 -0
  34. data/spec/service_consumers/pact_helper.rb +2 -19
  35. data/spec/service_consumers/provider_states_for_pact_broker_client.rb +1 -48
  36. data/spec/spec_helper.rb +19 -0
  37. data/spec/support/provider_state_builder.rb +91 -0
  38. metadata +32 -29
  39. data/lib/pact_broker/api/base_api.rb +0 -40
  40. data/lib/pact_broker/api/index_api.rb +0 -23
  41. data/lib/pact_broker/api/pact_api.rb +0 -33
  42. data/lib/pact_broker/api/pacticipant_api.rb +0 -54
@@ -1,40 +0,0 @@
1
- require 'pact_broker/logging'
2
- require 'pact_broker/repositories'
3
- require 'sequel'
4
- require 'sinatra'
5
- require 'sinatra/json'
6
- require 'sinatra/namespace'
7
- require 'sinatra/param'
8
- require 'pact_broker/models'
9
- require 'pact_broker/services'
10
-
11
- module PactBroker
12
-
13
- module Api
14
-
15
- class BaseApi < Sinatra::Base
16
-
17
- helpers do
18
- include PactBroker::Logging
19
- include PactBroker::Services
20
- end
21
-
22
- set :raise_errors, false
23
- set :show_exceptions, false
24
-
25
-
26
- error do
27
- e = env['sinatra.error']
28
- logger.error e
29
- content_type :json
30
- status 500
31
- {:message => e.message, :backtrace => e.backtrace }.to_json
32
- end
33
-
34
- helpers Sinatra::JSON
35
- helpers Sinatra::Param
36
- register Sinatra::Namespace
37
-
38
- end
39
- end
40
- end
@@ -1,23 +0,0 @@
1
- require 'sinatra'
2
- require 'pact_broker/logging'
3
-
4
- module PactBroker
5
- module Api
6
-
7
- class IndexApi < Sinatra::Base
8
-
9
- helpers do
10
- include PactBroker::Logging
11
- end
12
-
13
- # content_type :html, 'text/html'
14
- #content_type :json, 'application/json' # Grape seems to be upset if we specify HTML without JSON
15
-
16
- #default_format :json
17
- #desc 'rea-rels:links'
18
- get '/' do
19
-
20
- end
21
- end
22
- end
23
- end
@@ -1,33 +0,0 @@
1
- require_relative 'base_api'
2
-
3
- module PactBroker
4
-
5
- module Api
6
-
7
- class PactApi < BaseApi
8
-
9
- namespace '/pacticipants/:consumer/versions/:number/pacts' do
10
- put '/:provider' do
11
- pact, created = pact_service.create_or_update_pact(
12
- provider: params[:provider],
13
- consumer: params[:consumer],
14
- number: params[:number],
15
- json_content: request.body.read)
16
- created ? status(201) : status(200)
17
- end
18
-
19
- get '/:provider' do
20
- pact = nil
21
- pact = pact_service.find_pact(consumer: params[:consumer], provider: params[:provider], number: params[:number])
22
- if pact
23
- status 200
24
- headers 'X-Pact-Consumer-Version' => pact.consumer_version_number
25
- json pact
26
- else
27
- status 404
28
- end
29
- end
30
- end
31
- end
32
- end
33
- end
@@ -1,54 +0,0 @@
1
- require_relative 'base_api'
2
- require_relative 'representors'
3
-
4
- module PactBroker
5
- module Api
6
-
7
- class PacticipantApi < BaseApi
8
-
9
- get "/pacticipants" do
10
- pacticipants = pacticipant_service.find_all_pacticipants
11
- pacticipants.extend(Representors::PacticipantCollectionRepresenter)
12
- content_type 'application/json+hal;charset=utf-8'
13
- pacticipants.to_json
14
- end
15
-
16
- namespace '/pacticipants' do
17
-
18
- get '/:name' do
19
- pacticipant = pacticipant_service.find_pacticipant_by_name(params[:name])
20
- if pacticipant
21
- pacticipant.extend(Representors::PacticipantRepresenter)
22
- content_type 'application/json+hal;charset=utf-8'
23
- pacticipant.to_json
24
- else
25
- status 404
26
- end
27
- end
28
-
29
- get '/:name/repository_url' do
30
- repository_url = pacticipant_service.find_pacticipant_repository_url_by_pacticipant_name(params[:name])
31
- if repository_url
32
- content_type 'text/plain'
33
- repository_url
34
- else
35
- status 404
36
- end
37
- end
38
-
39
- patch '/:name' do
40
- logger.info "Recieved request to patch #{params[:name]} with #{params}"
41
- pacticipant, created = pacticipant_service.create_or_update_pacticipant(
42
- name: params[:name],
43
- repository_url: params[:repository_url]
44
- )
45
- created ? status(201) : status(200)
46
- pacticipant.extend(Representors::PacticipantRepresenter)
47
- content_type 'application/json+hal;charset=utf-8'
48
- pacticipant.to_json
49
- end
50
- end
51
-
52
- end
53
- end
54
- end