barsoom_utils 0.1.1.21 → 0.1.1.24

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
  SHA256:
3
- metadata.gz: 4b4e3e88b7f43882526bdf70974e6f1f55b5b9420f5429c259e5b9c9c57182f8
4
- data.tar.gz: 8099aed4d0efd543fbc413cde18c1d71fdffdce9fa1e2f5bfb6323d42aad7ab3
3
+ metadata.gz: 7ed1d038809af9fe7b26094861cbdabcf978a487d3120555ce866c366d3a5936
4
+ data.tar.gz: f1b0db6a18696c991c3d104f405d02431ec0077c3b8b233c36fa59dda63419cd
5
5
  SHA512:
6
- metadata.gz: 37e5b2773010797aab42f939de6613474944b027ac30a71388a7bf386e8aed0e373df459af64910b3ec4fc264817316df7add6ca470888d1c83245762c087406
7
- data.tar.gz: 2d46f4fbb2dd9d86719eb96b425e10910ce6f0f0aea65eb6761428794d9833d7dbcd99166b84017815bf4940c8f19dd361c74eb8038d5f463ebd50080498933c
6
+ metadata.gz: eabe607eb0db5a2c154231dcfdcc7d7249d0f26dd97fbc09ed66d396010fa3e3e7894a62f51a4e172f37afd87bbcb8c38f34e091128b8fe2ab88b0e6d077b6c9
7
+ data.tar.gz: 958103332532721e0bdce8a3509f3d9c9e2956c033d5f446dc94f8b9011773af455d187b23caef21ae4b603b4fc9aa385f3a9f9a9049a5c7cade1dc988caabb4
data/.exrc ADDED
@@ -0,0 +1,6 @@
1
+ " To enable per-directory .exrc files, add the following lines to your ~/.vimrc
2
+ "
3
+ " set exrc " enable per-directory .exrc files
4
+ " set secure " disable unsafe commands in local .exrc files
5
+
6
+ let g:turbux_command_rspec = 'script/test'
data/VERSION CHANGED
@@ -1 +1 @@
1
- 0.1.1.21
1
+ 0.1.1.24
@@ -0,0 +1,30 @@
1
+ require "attr_extras"
2
+
3
+ module BarsoomUtils
4
+ class ParseSpaceSeparatedTokenValues
5
+ attr_private :minimum_key_size, :value, :token_name
6
+
7
+ # @param token_name [String] name of ENV key to look up
8
+ # @param minimum_key_size [Integer] required size of each element
9
+ # @param data [Hash] defaults to ENV
10
+ def initialize(token_name, minimum_key_size:, data: ENV)
11
+ @value = data[token_name].to_s
12
+ @token_name = token_name
13
+ @minimum_key_size = minimum_key_size
14
+ end
15
+
16
+ def self.call(token_name, minimum_key_size:, data: ENV)
17
+ new(token_name, minimum_key_size: minimum_key_size, data: data).call
18
+ end
19
+
20
+ def call
21
+ keys = value.split
22
+
23
+ raise "Missing #{token_name}. Quitting." if keys.empty?
24
+
25
+ raise "Invalid #{token_name}: a too-short element found. Did a key contain a space? Quitting!" if keys.any? { |api_key| api_key.size < minimum_key_size }
26
+
27
+ keys.freeze
28
+ end
29
+ end
30
+ end
@@ -0,0 +1,39 @@
1
+ require "barsoom_utils/parse_space_separated_token_values"
2
+
3
+ RSpec.describe BarsoomUtils::ParseSpaceSeparatedTokenValues do
4
+ let(:minimum_key_size) { 4 }
5
+ let(:long_enough_api_key) { "xyza" }
6
+ let(:token_name) { "API_TOKENS" }
7
+
8
+ subject(:parsed_value) {
9
+ described_class.call(token_name, minimum_key_size: minimum_key_size, data: { "API_TOKENS" => api_tokens_value })
10
+ }
11
+
12
+ context "with a valid set of tokens" do
13
+ let(:api_tokens_value) { "#{long_enough_api_key} b#{long_enough_api_key}" }
14
+
15
+ it "returns a frozen array" do
16
+ expect(parsed_value).to(
17
+ be_an(Array)
18
+ .and(have_attributes(size: 2))
19
+ .and(be_frozen)
20
+ )
21
+ end
22
+ end
23
+
24
+ context "with one too-short token" do
25
+ let(:api_tokens_value) { "x #{long_enough_api_key}" }
26
+
27
+ it "raises an error" do
28
+ expect { parsed_value }.to raise_error(/Invalid API_TOKENS/)
29
+ end
30
+ end
31
+
32
+ context "with a blank value" do
33
+ let(:api_tokens_value) { " " }
34
+
35
+ it "raises an error" do
36
+ expect { parsed_value }.to raise_error(/Missing API_TOKENS/)
37
+ end
38
+ end
39
+ end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: barsoom_utils
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.1.21
4
+ version: 0.1.1.24
5
5
  platform: ruby
6
6
  authors:
7
7
  - Tomas Skogberg
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2022-05-20 00:00:00.000000000 Z
11
+ date: 2022-05-24 00:00:00.000000000 Z
12
12
  dependencies: []
13
13
  description:
14
14
  email:
@@ -17,6 +17,7 @@ executables: []
17
17
  extensions: []
18
18
  extra_rdoc_files: []
19
19
  files:
20
+ - ".exrc"
20
21
  - ".github/workflows/ci.yml"
21
22
  - ".gitignore"
22
23
  - ".rspec"
@@ -29,12 +30,14 @@ files:
29
30
  - lib/barsoom_utils.rb
30
31
  - lib/barsoom_utils/exception_notifier.rb
31
32
  - lib/barsoom_utils/feature_toggle.rb
33
+ - lib/barsoom_utils/parse_space_separated_token_values.rb
32
34
  - lib/barsoom_utils/ping_health_check.rb
33
35
  - lib/barsoom_utils/spec/debug_helpers.rb
34
36
  - lib/barsoom_utils/version.rb
35
37
  - script/test
36
38
  - shared_rubocop.yml
37
39
  - shared_rubocop_rails.yml
40
+ - spec/barsoom_utils/parse_space_separated_token_values_spec.rb
38
41
  - spec/exception_notifier_spec.rb
39
42
  - spec/feature_toggle_spec.rb
40
43
  - spec/ping_health_check_spec.rb