configuration_service 1.1.2 → 1.1.3

Sign up to get free protection for your applications and to get access to all the features.
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: {}