configuration_service 1.1.2 → 1.1.3

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
  SHA1:
3
- metadata.gz: 4610fe57d04ebf9b414e4a1e714a4951bae72241
4
- data.tar.gz: 071270662e7f96be1485bc94faa2a406ea9925b1
3
+ metadata.gz: de4118ee11bfbd8f76259b05fbda31dbf481299c
4
+ data.tar.gz: 26fba382d4d73c3a0c21d1f075283b5d273812ed
5
5
  SHA512:
6
- metadata.gz: 4e29d9cd857a188765e9253ac9f604b5f044adecaaeefacfd7c1edff7e96a0cb5199017359a4a121d8664e01926dd055b79836ec354b7418863941d33331f4de
7
- data.tar.gz: bb14fb1e0df9b75616c25fce06d2ff67d5822e8f1da3b658ac975f7680653ff4d08dabc9bf51eced82671c101e668c34e8fa8b7d4b761c1634bee7b8f4d50f92
6
+ metadata.gz: 7d59aed18c4849e4a52d32903a39a1035e4fbde97d408a5740a05e094e67e7bacd811c048e226b15e1e4a981fed0cddee5d325146f31b534feecc9ca874464ba
7
+ data.tar.gz: af4b66d5b7617316b8f12fd5be263261b4caa891fb3f0c59dadfbd188a760dfc4b95b1ba007cd78de896123b3c4bd30feddc7c9034b307acf9e5ba92aad950ea
@@ -1,10 +1,11 @@
1
1
  # coding: utf-8
2
2
  lib = File.expand_path('../lib', __FILE__)
3
3
  $LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
4
+ require "configuration_service/version"
4
5
 
5
6
  Gem::Specification.new do |spec|
6
7
  spec.name = "configuration_service"
7
- spec.version = "1.1.2"
8
+ spec.version = ConfigurationService::VERSION
8
9
  spec.authors = ["Sheldon Hearn"]
9
10
  spec.email = ["sheldonh@starjuice.net"]
10
11
 
@@ -12,7 +13,7 @@ Gem::Specification.new do |spec|
12
13
  spec.description = %q{Configuration service}
13
14
  spec.homepage = "https://github.com/hetznerZA/configuration_service"
14
15
 
15
- spec.files = `git ls-files -z`.split("\x0").reject { |f| f.match(%r{^(test|spec|features)/}) }
16
+ spec.files = `git ls-files -z`.split("\x0").reject { |f| f.match(%r{^(test|spec)/}) }
16
17
  spec.bindir = "exe"
17
18
  spec.executables = spec.files.grep(%r{^exe/}) { |f| File.basename(f) }
18
19
  spec.require_paths = ["lib"]
data/Gemfile.lock CHANGED
@@ -1,7 +1,7 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- configuration_service (1.1.1)
4
+ configuration_service (1.1.3)
5
5
 
6
6
  GEM
7
7
  remote: https://rubygems.org/
@@ -0,0 +1,45 @@
1
+ Feature: Authorization
2
+ In order to ensure I am who I say I am
3
+ As a CS Client
4
+ I want to be authenticated
5
+
6
+ Scenario: Token request with no credentials
7
+ Given I have no credentials
8
+ When I request a token
9
+ Then I should not receive a token
10
+
11
+ Scenario: Token request with invalid credentials
12
+ Given I have invalid credentials
13
+ When I request a token
14
+ Then I should not receive a token
15
+
16
+ Scenario: Token request with valid credentials
17
+ Given I have valid credentials
18
+ When I request a token
19
+ Then I should receive a token
20
+
21
+ Scenario: Allowed request
22
+ Given I have a token that allows requesting configurations
23
+ When I request a configuration
24
+ Then I should be allowed to request configurations
25
+
26
+ Scenario: Denied request
27
+ Given I have a token that does not allow requesting configurations
28
+ When I request a configuration
29
+ Then I should be notified that my request is 'not authorized'
30
+
31
+ Scenario: Allowed publication
32
+ Given I have a token that allows publishing configurations
33
+ When I request publication of a configuration
34
+ Then I should be allowed to publish configurations
35
+
36
+ Scenario: Denied publication
37
+ Given I have a token that does not allow publishing configurations
38
+ When I request publication of a configuration
39
+ Then I should be notified that my request is 'not authorized'
40
+
41
+ Scenario: Token-less request
42
+ Given I do not have a token
43
+ When I request a configuration
44
+ Then I should be notified that my request is 'not authorized'
45
+
@@ -0,0 +1,13 @@
1
+ Feature: Bootstrapping
2
+
3
+ As a service component
4
+ In order to use the configuration service
5
+ I want to bootstrap the configuration service.
6
+
7
+ Scenario: Environmental bootstrapping
8
+
9
+ Given environmental service configuration
10
+ When I bootstrap the configuration service from the environment
11
+ Then I receive a functioning configuration service
12
+ And the environmental service configuration has been scrubbed
13
+
@@ -0,0 +1,42 @@
1
+ Feature: Consuming configuration data
2
+ In order to access configuration data
3
+ As a Consumer
4
+ I want to request access to configuration data
5
+
6
+ Scenario: Metadata-free hit
7
+ Given an identifier
8
+ And no meta data filter
9
+ And configuration data at the index is present
10
+ When I request configuration data
11
+ Then the configuration data should be returned for the identifier
12
+
13
+ Scenario: Metadata-free miss
14
+ Given an identifier
15
+ And no meta data filter
16
+ And configuration data at the index is not present
17
+ When I request configuration data
18
+ Then I should receive a 'not found' indication
19
+
20
+ Scenario: Identifier-free metadata filter single hit
21
+ Given a metadata filter
22
+ And only one entry of configuration data matching the meta data filter is present
23
+ When I request configuration data
24
+ Then the configuration data should be returned for the index and meta data filter as the only item
25
+
26
+ Scenario: Identifier-free metadata filter multiple hits
27
+ Given a metadata filter
28
+ And multiple entries of configuration data matching the meta data filter are present
29
+ When I request configuration data
30
+ Then all matching configuration data should be returned
31
+
32
+ Scenario: Identifier-free metadata filter miss
33
+ Given a metadata filter
34
+ And no entry matching the meta data filter is present
35
+ When I request configuration data
36
+ Then I should receive a 'no match' indication
37
+
38
+ Scenario: CS request failure
39
+ Given a CS request failure
40
+ When I request configuration data
41
+ Then I should receive a 'request failure' notification
42
+
@@ -0,0 +1,42 @@
1
+ Feature: Publishing configuration data
2
+ In order to make configuration data available for retrieval
3
+ As a publisher
4
+ I want to publish configuration data
5
+
6
+ Scenario: Revision added to metadata
7
+ Given an identifier
8
+ And some configuration data
9
+ When I request publication of the configuration data
10
+ Then I receive a unique revision for my publication
11
+ And the metadata is updated with the revision by the CS
12
+
13
+ Scenario: Metadata saved with data
14
+ Given an identifier
15
+ And some metadata
16
+ And some configuration data
17
+ When I request publication of the configuration data
18
+ Then the metadata is also remembered
19
+
20
+ Scenario: Timestamp added to metadata
21
+ Given an identifier
22
+ And some metadata
23
+ And some configuration data
24
+ When I request publication of the configuration data
25
+ Then the entry is timestamped
26
+
27
+ Scenario: New revision for publication to existing identifier
28
+ Given existing configuration data
29
+ When I request publication of configuration data using the existing identifier
30
+ Then I receive a new unique revision for the publication
31
+
32
+ Scenario: Invalid data
33
+ Given an identifier
34
+ And invalid configuration data
35
+ When I request publication of the configuration data
36
+ Then I receive an 'invalid data' notification
37
+
38
+ Scenario: CS publication failure
39
+ Given a CS publication failure
40
+ When I request publication of the configuration data
41
+ Then I should receive a 'publication failure' notification
42
+
@@ -0,0 +1,63 @@
1
+ Given(/^I have no credentials$/) do
2
+ pending "Use case supported by Vault command-line client"
3
+ end
4
+
5
+ When(/^I request a token$/) do
6
+ pending "Use case supported by Vault command-line client"
7
+ end
8
+
9
+ Then(/^I should not receive a token$/) do
10
+ pending "Use case supported by Vault command-line client"
11
+ end
12
+
13
+ Given(/^I have invalid credentials$/) do
14
+ pending "Use case supported by Vault command-line client"
15
+ end
16
+
17
+ Given(/^I have valid credentials$/) do
18
+ pending "Use case supported by Vault command-line client"
19
+ end
20
+
21
+ Then(/^I should receive a token$/) do
22
+ pending "Use case supported by Vault command-line client"
23
+ end
24
+
25
+ Given(/^I do not have a token$/) do
26
+ @test.deauthorize
27
+ end
28
+
29
+ Given(/^I have a token that allows requesting configurations$/) do
30
+ @test.authorize(:requesting_configurations)
31
+ end
32
+
33
+ When(/^I request a configuration$/) do
34
+ @test.request_configuration
35
+ end
36
+
37
+ Then(/^I should be allowed to request configurations$/) do
38
+ expect(@test.request_allowed?).to eq true
39
+ end
40
+
41
+ Given(/^I have a token that does not allow requesting configurations$/) do
42
+ @test.authorize(:nothing)
43
+ end
44
+
45
+ Then(/^I should be notified that my request is 'not authorized'$/) do
46
+ expect(@test.request_allowed?).to eq false
47
+ end
48
+
49
+ Given(/^I have a token that allows publishing configurations$/) do
50
+ @test.authorize(:publishing_configurations)
51
+ end
52
+
53
+ When(/^I request publication of a configuration$/) do
54
+ @test.publish_configuration
55
+ end
56
+
57
+ Then(/^I should be allowed to publish configurations$/) do
58
+ expect(@test.request_allowed?).to eq true
59
+ end
60
+
61
+ Given(/^I have a token that does not allow publishing configurations$/) do
62
+ @test.authorize(:requesting_configurations)
63
+ end
@@ -0,0 +1,15 @@
1
+ Given(/^environmental service configuration$/) do
2
+ @test.given_environmental_service_configuration
3
+ end
4
+
5
+ When(/^I bootstrap the configuration service from the environment$/) do
6
+ @test.bootstrap_configuration_service_environmentally
7
+ end
8
+
9
+ Then(/^I receive a functioning configuration service$/) do
10
+ expect(@test.bootstrapped_configuration_service_functional?).to eq true
11
+ end
12
+
13
+ Then(/^the environmental service configuration has been scrubbed$/) do
14
+ expect(@test.environmental_service_configuration_scrubbed?).to eq true
15
+ end
@@ -0,0 +1,63 @@
1
+ Given(/^a metadata filter$/) do
2
+ pending "Searching with metadata filters not yet supported"
3
+ end
4
+
5
+ Then(/^I should receive a 'no match' indication$/) do
6
+ expect(@test.request_not_matched?).to eq true
7
+ end
8
+
9
+ Then(/^the configuration data should be returned for the identifier$/) do
10
+ expect(@test.requested_configuration).to eq @test.existing_configuration
11
+ end
12
+
13
+ Given(/^no meta data filter$/) do
14
+ end
15
+
16
+ Given(/^configuration data at the index is present$/) do
17
+ @test.given_existing_configuration
18
+ end
19
+
20
+ When(/^I request configuration data$/) do
21
+ @test.authorize(:requesting_configurations)
22
+ @test.request_configuration
23
+ end
24
+
25
+ Then(/^the configuration data should be returned for the index and meta data filter$/) do
26
+ expect(@test.requested_configuration).to eq @test.existing_configuration
27
+ end
28
+
29
+ Given(/^configuration data at the index is not present$/) do
30
+ @test.given_missing_configuration
31
+ end
32
+
33
+ Then(/^I should receive a 'not found' indication$/) do
34
+ expect(@test.request_not_found?).to eq true
35
+ end
36
+
37
+ Given(/^only one entry of configuration data matching the meta data filter is present$/) do
38
+ pending "Identifier-free requests not supported"
39
+ end
40
+
41
+ Then(/^the configuration data should be returned for the index and meta data filter as the only item$/) do
42
+ pending "Identifier-free requests not supported"
43
+ end
44
+
45
+ Given(/^multiple entries of configuration data matching the meta data filter are present$/) do
46
+ pending "Identifier-free requests not supported"
47
+ end
48
+
49
+ Then(/^all matching configuration data should be returned$/) do
50
+ pending "Identifier-free requests not supported"
51
+ end
52
+
53
+ Given(/^no entry matching the meta data filter is present$/) do
54
+ pending "Identifier-free requests not supported"
55
+ end
56
+
57
+ Given(/^a CS request failure$/) do
58
+ @test.given_request_failure
59
+ end
60
+
61
+ Then(/^I should receive a 'request failure' notification$/) do
62
+ expect(@test.request_failed?).to eq true
63
+ end
@@ -0,0 +1,60 @@
1
+ Given(/^an identifier$/) do
2
+ end
3
+
4
+ Given(/^some configuration data$/) do
5
+ end
6
+
7
+ When(/^I request publication of the configuration data$/) do
8
+ @test.authorize(:publishing_configurations)
9
+ @test.publish_configuration
10
+ end
11
+
12
+ Then(/^I receive a unique revision for my publication$/) do
13
+ expect(@test.published_revision).to_not be_nil
14
+ end
15
+
16
+ Then(/^the metadata is updated with the revision by the CS$/) do
17
+ expect(@test.published_metadata).to include("revision" => @test.published_revision)
18
+ end
19
+
20
+ Given(/^some metadata$/) do
21
+ @test.given_metadata
22
+ end
23
+
24
+ Then(/^the metadata is also remembered$/) do
25
+ expect(@test.published_metadata).to include(@test.given_metadata)
26
+ end
27
+
28
+ Then(/^the entry is timestamped$/) do
29
+ expect(@test.published_metadata).to include("timestamp")
30
+ end
31
+
32
+ Given(/^existing configuration data$/) do
33
+ @test.given_existing_configuration
34
+ end
35
+
36
+ When(/^I request publication of configuration data using the existing identifier$/) do
37
+ @test.authorize(:publishing_configurations)
38
+ @test.publish_configuration
39
+ end
40
+
41
+ Then(/^I receive a new unique revision for the publication$/) do
42
+ expect(@test.published_revision).to_not eq @test.existing_revision
43
+ end
44
+
45
+ Given(/^invalid configuration data$/) do
46
+ @test.given_invalid_configuration
47
+ end
48
+
49
+ Then(/^I receive an 'invalid data' notification$/) do
50
+ expect(@test.request_failed?).to eq true
51
+ end
52
+
53
+ Given(/^a CS publication failure$/) do
54
+ @test.given_publication_failure
55
+ end
56
+
57
+ Then(/^I should receive a 'publication failure' notification$/) do
58
+ expect(@test.request_failed?).to eq true
59
+ end
60
+
@@ -0,0 +1,11 @@
1
+ $LOAD_PATH.unshift File.expand_path("../../../lib", __FILE__)
2
+ require 'configuration_service/test'
3
+
4
+ Before do
5
+ begin
6
+ @test = ConfigurationService::Test::OrchestratorEnvironmentFactory.build
7
+ rescue
8
+ Cucumber.wants_to_quit = true
9
+ raise
10
+ end
11
+ end
@@ -16,7 +16,7 @@ module ConfigurationService
16
16
  # #
17
17
  # # source 'https://rubygems.org'
18
18
  # #
19
- # # gem 'configuration_service-vault'
19
+ # # gem 'configuration_service-provider-vault'
20
20
  # # gem 'acme_application'
21
21
  #
22
22
  # # Now main.rb (or config.ru or whatever) is decoupled from provider
@@ -0,0 +1,5 @@
1
+ module ConfigurationService
2
+
3
+ VERSION = "1.1.3"
4
+
5
+ end
@@ -3,6 +3,7 @@ require "configuration_service/configuration"
3
3
  require "configuration_service/errors"
4
4
  require "configuration_service/factory"
5
5
  require "configuration_service/provider_registry"
6
+ require "configuration_service/version"
6
7
 
7
8
  ##
8
9
  # See ConfigurationService::Base.
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: configuration_service
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.1.2
4
+ version: 1.1.3
5
5
  platform: ruby
6
6
  authors:
7
7
  - Sheldon Hearn
@@ -87,6 +87,7 @@ executables: []
87
87
  extensions: []
88
88
  extra_rdoc_files: []
89
89
  files:
90
+ - ".gemspec"
90
91
  - ".gitignore"
91
92
  - ".rspec"
92
93
  - Gemfile
@@ -94,7 +95,15 @@ files:
94
95
  - README.md
95
96
  - README.rdoc
96
97
  - Rakefile
97
- - configuration_service.gemspec
98
+ - features/authorization.feature
99
+ - features/bootstrapping.feature
100
+ - features/consuming.feature
101
+ - features/publishing.feature
102
+ - features/step_definitions/authorization_steps.rb
103
+ - features/step_definitions/bootstrapping_steps.rb
104
+ - features/step_definitions/consuming_steps.rb
105
+ - features/step_definitions/publishing_steps.rb
106
+ - features/support/env.rb
98
107
  - lib/configuration_service.rb
99
108
  - lib/configuration_service/base.rb
100
109
  - lib/configuration_service/configuration.rb
@@ -114,6 +123,7 @@ files:
114
123
  - lib/configuration_service/test/orchestrator_environment_factory.rb
115
124
  - lib/configuration_service/test/response.rb
116
125
  - lib/configuration_service/test/stub_orchestration_provider.rb
126
+ - lib/configuration_service/version.rb
117
127
  homepage: https://github.com/hetznerZA/configuration_service
118
128
  licenses: []
119
129
  metadata: {}