alinta-testing 0.2.3 → 0.3.0
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 +4 -4
- data/lib/alinta-testing/overrides.rb +31 -0
- data/lib/alinta-testing/steps/azure.rb +77 -0
- data/lib/alinta-testing/steps.rb +1 -20
- data/lib/alinta-testing/version.rb +1 -1
- data/lib/alinta-testing.rb +2 -1
- metadata +7 -5
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 0a0dd9cd987dca9caf8aa75e679a7a214820df68d14d1ab2fcb0db37d2fdd53b
|
4
|
+
data.tar.gz: 285ecd4778daaf7b8727e63a0ae8f3fe0d3a974ef8e315f5c6369bd9f7f62f62
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 8026aabfd05328f4488252749fbbdb9db20bbdd6d9988c74064e6bbf1ed4927bcf60453454d1841a25b181f7ebd48e3ca9aea0bd9ce702f7ed939137560e8e7a
|
7
|
+
data.tar.gz: 9ce66c8035e68f3ccd1e51eff726a14d9d102224a5a108784047971570f203b20cd74e057be3853d0bf6a3b22f3ac4bde5f93e132ca123bcf24e282b81017a9e
|
@@ -0,0 +1,31 @@
|
|
1
|
+
require 'cucumber-rest-bdd'
|
2
|
+
|
3
|
+
class Hash
|
4
|
+
def deep_include?(other)
|
5
|
+
diff = other.easy_diff(self)
|
6
|
+
diff[0].delete_if { |_k, v| v.empty? if v.is_a?(::Hash) }
|
7
|
+
# this line is new and supports regular expressions
|
8
|
+
diff[0].delete_if { |_k, v| v.match(diff[1][_k]) if v.is_a?(::Regexp) }
|
9
|
+
diff[0].empty?
|
10
|
+
end
|
11
|
+
end
|
12
|
+
|
13
|
+
def parse_attributes(hashes)
|
14
|
+
hashes.each_with_object({}) do |row, hash|
|
15
|
+
name = row['attribute']
|
16
|
+
value = row['value']
|
17
|
+
type = row['type']
|
18
|
+
# this condition is new and allows the value to be resolved from ruby code
|
19
|
+
if type == 'expression'
|
20
|
+
value = eval(value)
|
21
|
+
else
|
22
|
+
value = resolve_functions(value)
|
23
|
+
value = resolve(value)
|
24
|
+
value.gsub!(/\\n/, "\n")
|
25
|
+
value = string_to_type(value, type)
|
26
|
+
end
|
27
|
+
names = split_fields(name)
|
28
|
+
new_hash = names.reverse.inject(value) { |a, n| add_to_hash(a, n) }
|
29
|
+
hash.deep_merge!(new_hash) { |_, old, new| new.is_a?(Array) ? merge_arrays(old, new) : new }
|
30
|
+
end
|
31
|
+
end
|
@@ -0,0 +1,77 @@
|
|
1
|
+
require 'cucumber-rest-bdd'
|
2
|
+
|
3
|
+
Given("I am an API management authenticated client") do
|
4
|
+
if ENV['apim_subscription_key'] != nil && ENV['apim_subscription_key'] != ""
|
5
|
+
@apim_subscription_key = ENV['apim_subscription_key']
|
6
|
+
else
|
7
|
+
variables = %w{ALINTA_TENANTID ALINTA_CLIENTID ALINTA_CLIENTSECRET ALINTA_VAULT}
|
8
|
+
missing = variables.find_all { |v| ENV[v] == nil }
|
9
|
+
unless missing.empty?
|
10
|
+
raise "The following required environment variables have not been defined: #{missing.join(', ')}."
|
11
|
+
end
|
12
|
+
steps %Q{
|
13
|
+
Given I retrieve the API Management subscription key secret "APIMgmnt--End2End--Unlimited--Primary" from Azure Storage Vault "#{ENV['ALINTA_VAULT']}" using tenant "#{ENV['ALINTA_TENANTID']}" with credentials "#{ENV['ALINTA_CLIENTID']}" and "#{ENV['ALINTA_CLIENTSECRET']}"
|
14
|
+
}
|
15
|
+
end
|
16
|
+
steps %Q{
|
17
|
+
Given I am a client
|
18
|
+
And I add the API Management key header
|
19
|
+
}
|
20
|
+
end
|
21
|
+
|
22
|
+
Given("I retrieve the API Management subscription key secret {string} from Azure Storage Vault {string} using tenant {string} with credentials {string} and {string}") do |secret_name, vault_name, tenant_id, client_id, client_secret|
|
23
|
+
if @apim_subscription_key.to_s.empty?
|
24
|
+
steps %Q{
|
25
|
+
Given I retrieve the secret "#{secret_name}" from Azure Storage Vault "#{vault_name}" using tenant "#{tenant_id}" with credentials "#{client_id}" and "#{client_secret}"
|
26
|
+
}
|
27
|
+
@apim_subscription_key = @response.get_as_type "$..value", "string"
|
28
|
+
end
|
29
|
+
end
|
30
|
+
|
31
|
+
Given("I add the API Management key header") do
|
32
|
+
steps %Q{
|
33
|
+
And I add Headers:
|
34
|
+
| Ocp-Apim-Subscription-Key | #{@apim_subscription_key} |
|
35
|
+
}
|
36
|
+
end
|
37
|
+
|
38
|
+
Given("I retrieve the secret {string} from Azure Storage Vault {string} using tenant {string} with credentials {string} and {string}") do |secret_name, vault_name, tenant_id, client_id, client_secret|
|
39
|
+
steps %Q{
|
40
|
+
Given I authenticate with Azure tenant "#{tenant_id}" using client credentials "#{client_id}" and "#{client_secret}"
|
41
|
+
}
|
42
|
+
access_token = @response.get_as_type "$..access_token", "string"
|
43
|
+
steps %Q{
|
44
|
+
Given I retrieve the secret "#{secret_name}" from Azure Storage Vault "#{vault_name}" using access token "#{access_token}"
|
45
|
+
}
|
46
|
+
end
|
47
|
+
|
48
|
+
Given("I authenticate with Azure tenant {string} using client credentials {string} and {string}") do |tenant_id, client_id, client_secret|
|
49
|
+
steps %Q{
|
50
|
+
Given I authenticate with "https://login.windows.net/#{tenant_id}/oauth2/token" using client credentials "#{client_id}" and "#{client_secret}"
|
51
|
+
}
|
52
|
+
end
|
53
|
+
|
54
|
+
Given("I authenticate with {string} using client credentials {string} and {string}") do |url, client_id, client_secret|
|
55
|
+
steps %Q{
|
56
|
+
Given I send "www-x-form-urlencoded" and accept JSON
|
57
|
+
When I set form request body to:
|
58
|
+
| grant_type | client_credentials |
|
59
|
+
| client_id | #{client_id} |
|
60
|
+
| client_secret | #{client_secret} |
|
61
|
+
| resource | https://vault.azure.net |
|
62
|
+
And I send a POST request to "#{url}"
|
63
|
+
Then the request was successful
|
64
|
+
}
|
65
|
+
end
|
66
|
+
|
67
|
+
Given("I retrieve the secret {string} from Azure Storage Vault {string} using access token {string}") do |secret_name, vault_name, access_token|
|
68
|
+
api_version = '2015-06-01'
|
69
|
+
url = "https://#{vault_name}.vault.azure.net/secrets/#{secret_name}?api-version=#{api_version}"
|
70
|
+
steps %Q{
|
71
|
+
Given I send and accept JSON
|
72
|
+
And I add Headers:
|
73
|
+
| Authorization | Bearer #{access_token} |
|
74
|
+
When I send a GET request to "#{url}"
|
75
|
+
Then the request was successful
|
76
|
+
}
|
77
|
+
end
|
data/lib/alinta-testing/steps.rb
CHANGED
@@ -1,20 +1 @@
|
|
1
|
-
require '
|
2
|
-
|
3
|
-
Given("I am an API management authenticated client") do
|
4
|
-
if ENV['apim_subscription_key'] != nil && ENV['apim_subscription_key'] != ""
|
5
|
-
@apim_subscription_key = ENV['apim_subscription_key']
|
6
|
-
else
|
7
|
-
variables = %w{ALINTA_TENANTID ALINTA_CLIENTID ALINTA_CLIENTSECRET ALINTA_VAULT}
|
8
|
-
missing = variables.find_all { |v| ENV[v] == nil }
|
9
|
-
unless missing.empty?
|
10
|
-
raise "The following required environment variables have not been defined: #{missing.join(', ')}."
|
11
|
-
end
|
12
|
-
steps %Q{
|
13
|
-
Given I retrieve the API Management subscription key secret "APIMgmnt--End2End--Unlimited--Primary" from Azure Storage Vault "#{ENV['ALINTA_VAULT']}" using tenant "#{ENV['ALINTA_TENANTID']}" with credentials "#{ENV['ALINTA_CLIENTID']}" and "#{ENV['ALINTA_CLIENTSECRET']}"
|
14
|
-
}
|
15
|
-
end
|
16
|
-
steps %Q{
|
17
|
-
Given I am a client
|
18
|
-
And I add the API Management key header
|
19
|
-
}
|
20
|
-
end
|
1
|
+
require 'alinta-testing/steps/azure'
|
data/lib/alinta-testing.rb
CHANGED
@@ -1 +1,2 @@
|
|
1
|
-
require 'alinta-testing/steps'
|
1
|
+
require 'alinta-testing/steps'
|
2
|
+
require 'alinta-testing/overrides'
|
metadata
CHANGED
@@ -1,29 +1,29 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: alinta-testing
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.3.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Matt Hosking
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2018-07-
|
11
|
+
date: 2018-07-20 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
|
-
name:
|
14
|
+
name: cucumber-rest-bdd
|
15
15
|
requirement: !ruby/object:Gem::Requirement
|
16
16
|
requirements:
|
17
17
|
- - '='
|
18
18
|
- !ruby/object:Gem::Version
|
19
|
-
version: 0.
|
19
|
+
version: 0.6.1
|
20
20
|
type: :runtime
|
21
21
|
prerelease: false
|
22
22
|
version_requirements: !ruby/object:Gem::Requirement
|
23
23
|
requirements:
|
24
24
|
- - '='
|
25
25
|
- !ruby/object:Gem::Version
|
26
|
-
version: 0.
|
26
|
+
version: 0.6.1
|
27
27
|
description: alinta-testing performs common tasks for end to end tests in cucumber.
|
28
28
|
email:
|
29
29
|
- matt.hosking@alintaenergy.com.au
|
@@ -32,7 +32,9 @@ extensions: []
|
|
32
32
|
extra_rdoc_files: []
|
33
33
|
files:
|
34
34
|
- lib/alinta-testing.rb
|
35
|
+
- lib/alinta-testing/overrides.rb
|
35
36
|
- lib/alinta-testing/steps.rb
|
37
|
+
- lib/alinta-testing/steps/azure.rb
|
36
38
|
- lib/alinta-testing/version.rb
|
37
39
|
homepage: https://github.com/AlintaEnergy/alinta-testing
|
38
40
|
licenses:
|