barsoom_utils 0.1.1.21 → 0.1.1.25

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
  SHA256:
3
- metadata.gz: 4b4e3e88b7f43882526bdf70974e6f1f55b5b9420f5429c259e5b9c9c57182f8
4
- data.tar.gz: 8099aed4d0efd543fbc413cde18c1d71fdffdce9fa1e2f5bfb6323d42aad7ab3
3
+ metadata.gz: 1440d31f3aedeccf5b8c89ec9167d8fd58fa5f2231ac0a4fc42d0c6888e9eee6
4
+ data.tar.gz: e9dbe8129f3d607055d688367a605ff71fb62c2c654177317700d126c50d47ec
5
5
  SHA512:
6
- metadata.gz: 37e5b2773010797aab42f939de6613474944b027ac30a71388a7bf386e8aed0e373df459af64910b3ec4fc264817316df7add6ca470888d1c83245762c087406
7
- data.tar.gz: 2d46f4fbb2dd9d86719eb96b425e10910ce6f0f0aea65eb6761428794d9833d7dbcd99166b84017815bf4940c8f19dd361c74eb8038d5f463ebd50080498933c
6
+ metadata.gz: bc98fe0ebb03d89745ac2256d2f3813ff887737aadbd7321f77e8be526bc9ccd52380c27cfa6f2e29ad4d720a7d6391778d4c33157fa521aa45057f493998e87
7
+ data.tar.gz: 59f5bbc8ad7ef5c7b8f6ba9ae5ecf50c6f784c95f39c8f9d2c3fc0cd124ec2772a2fadc2fddfcebb4b039a98e5ff8d4ba90011fcf08f467fb85f2008f2775681
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.25
@@ -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:)
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.25
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