chamber 2.10.1 → 2.10.2

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.
Files changed (45) hide show
  1. checksums.yaml +4 -4
  2. checksums.yaml.gz.sig +0 -0
  3. data.tar.gz.sig +0 -0
  4. data/lib/chamber/encryption_methods/none.rb +2 -0
  5. data/lib/chamber/version.rb +1 -1
  6. metadata +22 -99
  7. metadata.gz.sig +0 -0
  8. data/spec/fixtures/settings.yml +0 -28
  9. data/spec/lib/chamber/commands/files_spec.rb +0 -24
  10. data/spec/lib/chamber/commands/heroku/clear_spec.rb +0 -12
  11. data/spec/lib/chamber/commands/heroku/compare_spec.rb +0 -12
  12. data/spec/lib/chamber/commands/heroku/pull_spec.rb +0 -12
  13. data/spec/lib/chamber/commands/heroku/push_spec.rb +0 -12
  14. data/spec/lib/chamber/commands/secure_spec.rb +0 -42
  15. data/spec/lib/chamber/commands/show_spec.rb +0 -59
  16. data/spec/lib/chamber/context_resolver_spec.rb +0 -164
  17. data/spec/lib/chamber/file_set_spec.rb +0 -250
  18. data/spec/lib/chamber/file_spec.rb +0 -241
  19. data/spec/lib/chamber/filters/boolean_conversion_filter_spec.rb +0 -57
  20. data/spec/lib/chamber/filters/decryption_filter_spec.rb +0 -252
  21. data/spec/lib/chamber/filters/encryption_filter_spec.rb +0 -195
  22. data/spec/lib/chamber/filters/environment_filter_spec.rb +0 -48
  23. data/spec/lib/chamber/filters/failed_decryption_filter_spec.rb +0 -54
  24. data/spec/lib/chamber/filters/insecure_filter_spec.rb +0 -82
  25. data/spec/lib/chamber/filters/namespace_filter_spec.rb +0 -92
  26. data/spec/lib/chamber/filters/secure_filter_spec.rb +0 -41
  27. data/spec/lib/chamber/filters/translate_secure_keys_filter_spec.rb +0 -39
  28. data/spec/lib/chamber/namespace_set_spec.rb +0 -129
  29. data/spec/lib/chamber/settings_spec.rb +0 -390
  30. data/spec/lib/chamber/types/secured_spec.rb +0 -70
  31. data/spec/lib/chamber_spec.rb +0 -314
  32. data/spec/rails-2-test/config.ru +0 -0
  33. data/spec/rails-2-test/config/application.rb +0 -6
  34. data/spec/rails-2-test/script/console +0 -0
  35. data/spec/rails-3-test/config.ru +0 -0
  36. data/spec/rails-3-test/config/application.rb +0 -6
  37. data/spec/rails-3-test/script/rails +0 -0
  38. data/spec/rails-4-test/bin/rails +0 -0
  39. data/spec/rails-4-test/config.ru +0 -0
  40. data/spec/rails-4-test/config/application.rb +0 -6
  41. data/spec/rails-engine-test/spec/dummy/config.ru +0 -0
  42. data/spec/rails-engine-test/spec/dummy/config/application.rb +0 -5
  43. data/spec/rails-engine-test/spec/dummy/script/rails +0 -0
  44. data/spec/spec_key +0 -27
  45. data/spec/spec_key.pub +0 -9
@@ -1,57 +0,0 @@
1
- # frozen_string_literal: true
2
- require 'rspectacular'
3
- require 'chamber/filters/boolean_conversion_filter'
4
-
5
- module Chamber
6
- module Filters
7
- describe BooleanConversionFilter do
8
- # rubocop:disable Lint/DuplicatedKey
9
- it 'can convert string boolean values into TrueClass and FalseClass even if they ' \
10
- 'are deeply nested' do
11
-
12
- filtered_data = BooleanConversionFilter.execute(
13
- data: {
14
- true_boolean: 'true',
15
- boolean_group: {
16
- yes_boolean: 'yes',
17
- t_boolean: 't',
18
- non_boolean: 'hello',
19
- sub_boolean_group: {
20
- false_boolean: 'false',
21
- no_boolean: 'no',
22
- nilly: nil,
23
- non_boolean: 3,
24
- },
25
- f_boolean: 'f',
26
- non_boolean: Time.utc(2012, 8, 1),
27
- nilly: nil,
28
- },
29
- false_boolean: 'false',
30
- nilly: nil,
31
- non_boolean: [1, 2, 3],
32
- },
33
- )
34
-
35
- expect(filtered_data).to eql(true_boolean: true,
36
- boolean_group: {
37
- yes_boolean: true,
38
- t_boolean: true,
39
- non_boolean: 'hello',
40
- sub_boolean_group: {
41
- false_boolean: false,
42
- no_boolean: false,
43
- nilly: nil,
44
- non_boolean: 3,
45
- },
46
- f_boolean: false,
47
- non_boolean: Time.utc(2012, 8, 1),
48
- nilly: nil,
49
- },
50
- false_boolean: false,
51
- nilly: nil,
52
- non_boolean: [1, 2, 3])
53
- end
54
- # rubocop:enable Lint/DuplicatedKey
55
- end
56
- end
57
- end
@@ -1,252 +0,0 @@
1
- # frozen_string_literal: true
2
- require 'rspectacular'
3
- require 'chamber/filters/decryption_filter'
4
-
5
- module Chamber
6
- module Filters
7
- describe DecryptionFilter do
8
- it 'will attempt to decrypt values which are marked as "secure"' do
9
- filtered_settings = DecryptionFilter.execute(
10
- data: {
11
- _secure_my_secure_setting: 'cJbFe0NI5wknmsp2fVgpC/YeBD2pvcdVD+p0pUdnMoYThaV4m' \
12
- 'psspg/ZTBtmjx7kMwcF6cjXFLDVw3FxptTHwzJUd4akun6EZ5' \
13
- '7m+QzCMJYnfY95gB2/emEAQLSz4/YwsE4LDGydkEjY1ZprfXz' \
14
- 'nf+rU31YGDJUTf34ESz7fsQGSc9DjkBb9ao8Mv4cI7pCXkQZD' \
15
- 'wS5kLAZDf6agy1GzeL71Z8lrmQzk8QQuf/1kQzxsWVlzpKNXW' \
16
- 'S7u2CJ0sN5eINMngJBfv5ZFrZgfXc86wdgUKc8aaoX8OQA1kK' \
17
- 'TcdgbE9NcAhNr1+WfNxMnz84XzmUp2Y0H1jPgGkBKQJKArfQ==',
18
- },
19
- decryption_key: './spec/spec_key',
20
- )
21
-
22
- expect(filtered_settings._secure_my_secure_setting).to eql 'hello'
23
- end
24
-
25
- it 'will correct decrypt values which contain multiline strings' do
26
- filtered_settings = DecryptionFilter.execute(
27
- data: {
28
- _secure_my_secure_setting: 'Q0ImhgdRmOdXEx04E3TnMoW/c6ckuce+y4kYGYWIJM6W/nBJBF' \
29
- 'jnqcFru/6wo+TVEZxowxjxJNv8H6SuxYmahxMRl7AajTrJ/QD+' \
30
- 'bKzbStL7D2oViB1dDNUz4GZxeNDSMU0oF9e67ih6AmnxAgI0Rl' \
31
- 'EterOMyWOPHJIUrLquBRlIs0JyP8yermN9KWOAeLZdJlIGSyfw' \
32
- 'EU+sWQtafJ3jiNAPqWTGJxHfQZTQHn+q4SnZPPnBPK0dZiZzqO' \
33
- 'rtkzmVPR7SAT5Ube4CxJWhkpWpl5rPgamqVsG/P0AalMqLxuPU' \
34
- 'XqSdOEWKkK6jerbElVyQ7FdRBLau2JXHpDZYGw8KTA==#EPCuI' \
35
- 'el5w17aUZfpHOuFNQ==#VzcE0BIuqA7xUMYEZkWZa4kOPse95N' \
36
- 'iow+e/FhKAlG/7uYYTmkRbxRiMLtzH1Swzyz0NHF/BJPa1rKRb' \
37
- 'cVCGjK8v13O9zJY8UdCQYsrdQaTIOA95NIcxwLCbrYencDzZFx' \
38
- 'YtOgioyXbW9OCPnjDe9ozkCw6prRclgJyvadvKWqBgaJkluIdi' \
39
- 'kCDLX+Dy7fjkLtq5GqPFeFjHKwRGMLQB5dYk1VNAKgzhnSpUkJ' \
40
- 'JZA2Z7P54NhQQ83Doypfwb16LfKFax9575XeUWZeURxl7Ric4M' \
41
- 'rjJYrc3u5biTzToMQBITGEsComsTDpfB3FVtZhobNjzdkhEGzf' \
42
- '6F2iRjjHDsQfaUebAPxDVFa31p5XGQN7YJDeAXYBLb16kAhv8N' \
43
- '5DGwiukPjtUVXUfFQzaTnJWm/eIhQKFH8rkVawAr9wAeoSz7cw' \
44
- 'WFyD+pq5QF9GlxPU5ZotNjrqO4rz/s8+bkt2XwBANTVCZrTb9g' \
45
- 'nE9FyIqFmRZ9L8Ef43KE02wDcUnrKp3oOMSItWnY5rFJew0eAU' \
46
- '+CHQ==',
47
- },
48
- decryption_key: './spec/spec_key',
49
- )
50
-
51
- expect(filtered_settings._secure_my_secure_setting).to eql <<-HEREDOC
52
- -----BEGIN RSA PRIVATE KEY-----
53
- uQ431irYF7XGEwmsfNUcw++6Enjmt9MItVZJrfL4cUr84L1ccOEX9AThsxz2nkiO
54
- GgU+HtwwueZDUZ8Pdn71+1CdVaSUeEkVaYKYuHwYVb1spGfreHQHRP90EMv3U5Ir
55
- xs0YFwKBgAJKGol+GM1oFodg48v4QA6hlF5z49v83wU+AS2f3aMVfjkTYgAEAoCT
56
- qoSi7wkYK3NvftVgVi8Z2+1WEzp3S590UkkHmjc5o+HfS657v2fnqkekJyinB+OH
57
- b5tySsPxt/3Un4D9EaGhjv44GMvL54vFI1Sqc8RsF/H8lRvj5ai5
58
- -----END RSA PRIVATE KEY-----
59
- HEREDOC
60
- end
61
-
62
- it 'will not attempt to decrypt values which are not marked as "secure"' do
63
- filtered_settings = DecryptionFilter.execute(
64
- data: {
65
- my_secure_setting: 'cJbFe0NI5wknmsp2fVgpC/YeBD2pvcdVD+p0pUdnMoYThaV4m' \
66
- 'psspg/ZTBtmjx7kMwcF6cjXFLDVw3FxptTHwzJUd4akun6EZ5' \
67
- '7m+QzCMJYnfY95gB2/emEAQLSz4/YwsE4LDGydkEjY1ZprfXz' \
68
- 'nf+rU31YGDJUTf34ESz7fsQGSc9DjkBb9ao8Mv4cI7pCXkQZD' \
69
- 'wS5kLAZDf6agy1GzeL71Z8lrmQzk8QQuf/1kQzxsWVlzpKNXW' \
70
- 'S7u2CJ0sN5eINMngJBfv5ZFrZgfXc86wdgUKc8aaoX8OQA1kK' \
71
- 'TcdgbE9NcAhNr1+WfNxMnz84XzmUp2Y0H1jPgGkBKQJKArfQ==',
72
- },
73
- decryption_key: './spec/spec_key',
74
- )
75
-
76
- my_secure_setting = filtered_settings.my_secure_setting
77
-
78
- expect(my_secure_setting).to eql 'cJbFe0NI5wknmsp2fVgpC/YeBD2pvcdVD+p0pUdnMoYT' \
79
- 'haV4mpsspg/ZTBtmjx7kMwcF6cjXFLDVw3FxptTHwzJU' \
80
- 'd4akun6EZ57m+QzCMJYnfY95gB2/emEAQLSz4/YwsE4L' \
81
- 'DGydkEjY1ZprfXznf+rU31YGDJUTf34ESz7fsQGSc9Dj' \
82
- 'kBb9ao8Mv4cI7pCXkQZDwS5kLAZDf6agy1GzeL71Z8lr' \
83
- 'mQzk8QQuf/1kQzxsWVlzpKNXWS7u2CJ0sN5eINMngJBf' \
84
- 'v5ZFrZgfXc86wdgUKc8aaoX8OQA1kKTcdgbE9NcAhNr1' \
85
- '+WfNxMnz84XzmUp2Y0H1jPgGkBKQJKArfQ=='
86
- end
87
-
88
- it 'will not attempt to decrypt values even if they are prefixed with "secure"' do
89
- filtered_settings = DecryptionFilter.execute(
90
- data: {
91
- secure_setting: 'cJbFe0NI5wknmsp2fVgpC/YeBD2pvcdVD+p0pUdnMoYThaV4mpsspg/ZTBt' \
92
- 'mjx7kMwcF6cjXFLDVw3FxptTHwzJUd4akun6EZ57m+QzCMJYnfY95gB2/em' \
93
- 'EAQLSz4/YwsE4LDGydkEjY1ZprfXznf+rU31YGDJUTf34ESz7fsQGSc9Djk' \
94
- 'Bb9ao8Mv4cI7pCXkQZDwS5kLAZDf6agy1GzeL71Z8lrmQzk8QQuf/1kQzxs' \
95
- 'WVlzpKNXWS7u2CJ0sN5eINMngJBfv5ZFrZgfXc86wdgUKc8aaoX8OQA1kKT' \
96
- 'cdgbE9NcAhNr1+WfNxMnz84XzmUp2Y0H1jPgGkBKQJKArfQ==',
97
- },
98
- decryption_key: './spec/spec_key',
99
- )
100
-
101
- secure_setting = filtered_settings.secure_setting
102
-
103
- expect(secure_setting).to eql 'cJbFe0NI5wknmsp2fVgpC/YeBD2pvcdVD+p0pUdnMoYThaV4m' \
104
- 'psspg/ZTBtmjx7kMwcF6cjXFLDVw3FxptTHwzJUd4akun6EZ5' \
105
- '7m+QzCMJYnfY95gB2/emEAQLSz4/YwsE4LDGydkEjY1ZprfXz' \
106
- 'nf+rU31YGDJUTf34ESz7fsQGSc9DjkBb9ao8Mv4cI7pCXkQZD' \
107
- 'wS5kLAZDf6agy1GzeL71Z8lrmQzk8QQuf/1kQzxsWVlzpKNXW' \
108
- 'S7u2CJ0sN5eINMngJBfv5ZFrZgfXc86wdgUKc8aaoX8OQA1kK' \
109
- 'TcdgbE9NcAhNr1+WfNxMnz84XzmUp2Y0H1jPgGkBKQJKArfQ=='
110
- end
111
-
112
- it 'will not attempt to decrypt values even if they are not properly encoded' do
113
- filtered_settings = DecryptionFilter.execute(
114
- data: {
115
- _secure_my_secure_setting: 'cJbFe0NI5\wknmsp2fVgpC/YeBD2pvcdVD+p0pUdnMoYThaV4' \
116
- 'mpsspg/ZTBtmjx7kMwcF6cjXFLDVw3FxptTHwzJUd4akun6EZ' \
117
- '57m+QzCMJYnfY95gB2/emEAQLSz4/YwsE4LDGydkEjY1ZprfX' \
118
- 'znf+rU31YGDJUTf34ESz7fsQGSc9DjkBb9ao8Mv4cI7pCXkQZ' \
119
- 'DwS5kLAZDf6agy1GzeL71Z8lrmQzk8QQuf/1kQzxsWVlzpKNX' \
120
- 'WS7u2CJ0sN5eINMngJBfv5ZFrZgfXc86wdgUKc8aaoX8OQA1k' \
121
- 'KTcdgbE9NcAhNr1+WfNxMnz84XzmUp2Y0H1jPgGkBKQJKArfQ==',
122
- },
123
- decryption_key: './spec/spec_key',
124
- )
125
-
126
- my_secure_setting = filtered_settings._secure_my_secure_setting
127
-
128
- expect(my_secure_setting).to eql 'cJbFe0NI5\wknmsp2fVgpC/YeBD2pvcdVD+p0pUdnMoYThaV4' \
129
- 'mpsspg/ZTBtmjx7kMwcF6cjXFLDVw3FxptTHwzJUd4akun6EZ' \
130
- '57m+QzCMJYnfY95gB2/emEAQLSz4/YwsE4LDGydkEjY1ZprfX' \
131
- 'znf+rU31YGDJUTf34ESz7fsQGSc9DjkBb9ao8Mv4cI7pCXkQZ' \
132
- 'DwS5kLAZDf6agy1GzeL71Z8lrmQzk8QQuf/1kQzxsWVlzpKNX' \
133
- 'WS7u2CJ0sN5eINMngJBfv5ZFrZgfXc86wdgUKc8aaoX8OQA1k' \
134
- 'KTcdgbE9NcAhNr1+WfNxMnz84XzmUp2Y0H1jPgGkBKQJKArfQ=='
135
- end
136
-
137
- it 'will not attempt to decrypt values if it guesses that they are not encrpyted' do
138
- filtered_settings = DecryptionFilter.execute(data: {
139
- _secure_my_secure_setting: 'hello',
140
- },
141
- decryption_key: './spec/spec_key')
142
-
143
- expect(filtered_settings._secure_my_secure_setting).to eql 'hello'
144
- end
145
-
146
- it 'simply returns the encrypted string if there is no decryption key' do
147
- filtered_settings = DecryptionFilter.execute(
148
- data: {
149
- _secure_my_secure_setting: 'cJbFe0NI5\wknmsp2fVgpC/YeBD2pvcdVD+p0pUdnMoYThaV4' \
150
- 'mpsspg/ZTBtmjx7kMwcF6cjXFLDVw3FxptTHwzJUd4akun6EZ' \
151
- '57m+QzCMJYnfY95gB2/emEAQLSz4/YwsE4LDGydkEjY1ZprfX' \
152
- 'znf+rU31YGDJUTf34ESz7fsQGSc9DjkBb9ao8Mv4cI7pCXkQZ' \
153
- 'DwS5kLAZDf6agy1GzeL71Z8lrmQzk8QQuf/1kQzxsWVlzpKNX' \
154
- 'WS7u2CJ0sN5eINMngJBfv5ZFrZgfXc86wdgUKc8aaoX8OQA1k' \
155
- 'KTcdgbE9NcAhNr1+WfNxMnz84XzmUp2Y0H1jPgGkBKQJKArfQ==',
156
- },
157
- )
158
-
159
- my_secure_setting = filtered_settings._secure_my_secure_setting
160
-
161
- expect(my_secure_setting).to eql 'cJbFe0NI5\wknmsp2fVgpC/YeBD2pvcdVD+p0pUdnMoYThaV4' \
162
- 'mpsspg/ZTBtmjx7kMwcF6cjXFLDVw3FxptTHwzJUd4akun6EZ' \
163
- '57m+QzCMJYnfY95gB2/emEAQLSz4/YwsE4LDGydkEjY1ZprfX' \
164
- 'znf+rU31YGDJUTf34ESz7fsQGSc9DjkBb9ao8Mv4cI7pCXkQZ' \
165
- 'DwS5kLAZDf6agy1GzeL71Z8lrmQzk8QQuf/1kQzxsWVlzpKNX' \
166
- 'WS7u2CJ0sN5eINMngJBfv5ZFrZgfXc86wdgUKc8aaoX8OQA1k' \
167
- 'KTcdgbE9NcAhNr1+WfNxMnz84XzmUp2Y0H1jPgGkBKQJKArfQ=='
168
- end
169
-
170
- it 'can decrypt a complex object' do
171
- filtered_settings = DecryptionFilter.execute(
172
- data: {
173
- _secure_my_secure_setting: 'rF1MIcLX/Q88gjpHTifI27fJHopDKVTJRvOwF2MZ8kVIrvBhFg' \
174
- 'LOyQ7JEBiWNBh1yUtR6PeKlB+h44sIL3yKMcZyccX73Mo+CiWx' \
175
- 'mnjtK4I1QxcJL8OSLa8GQPlSBxoBCykWqerwN0b2oS/jv8umB2' \
176
- 'j2RyANFYklD3mAxn1LsoTuFPAif+SCLRIGafcHkOywM32qn6Hh' \
177
- 'UpeBChX81JhJpip1gdJmRTGEZjKfR93h1shW0LqLLbdQUwYPOP' \
178
- 'bnjz7fU7x+d5/ighWTDsmOVyvEiqM0WasFzK+WBUfvo8tQxUym' \
179
- 'exw/U3B7N/0R/9v6U3l6x7eeIoQ4+lnJK2ULFzVgiw==',
180
- },
181
- decryption_key: './spec/spec_key',
182
- )
183
-
184
- expect(filtered_settings._secure_my_secure_setting).to be_a Integer
185
- expect(filtered_settings._secure_my_secure_setting).to eql 12_345
186
- end
187
-
188
- it 'can decrypt a number that has not been yamlled' do
189
- filtered_settings = DecryptionFilter.execute(
190
- data: {
191
- _secure_my_secure_setting: 'Ieh5poOpcirj1jihkh1eENaCrF8ECQSLOigM4ApTZ8hp4vrL3N' \
192
- 'KWp3djEkQz0QceopgN8TBJOEj1lqfGGL3Ar5L0SGrIsHt6KOil' \
193
- 'erEXXH4/e2+s8JFWpdfjCxgn12fv1jqXxNyuMUlYRBD7R+oRNV' \
194
- 'A5nNpnwiSE7IOBjUEZyzlQUrePVku5CtOs0hfGe+79n6D8zFGT' \
195
- 'px7UjZg4QVXyHISBM2hAaDOZ0dfxVqbzmvN3B68xbuIty5vyv1' \
196
- '+Ry2k+yIGJXIOjNm96ntDxIuUbycfrqYdtopBDI5kcr0zckPWM' \
197
- 'QRqkp7yd/XNZqyYCFGMNKNwokE6wZuGffkD/H/VPxQ==',
198
- },
199
- decryption_key: './spec/spec_key',
200
- )
201
-
202
- expect(filtered_settings._secure_my_secure_setting).to eql '12345'
203
- end
204
-
205
- it 'can decrypt a string that has not been yamlled' do
206
- filtered_settings = DecryptionFilter.execute(
207
- data: {
208
- _secure_my_secure_setting: 'V2ifd6KwfGK8zW7K87ypHiA89UvVqsAX3961dR/B5ensruVFi5' \
209
- 'KydFR1KxPQHxInhVl4GIvpBCwczK1mMZ61NGVISK04tg90R52/' \
210
- 'ue0s4V9v01h1wTnahrkRGFyKk4iiQwsluuXGaW4gBFayaKOs77' \
211
- 'HL/fMBY985akz8lv/8secg2U66YWeIHblJ2OKdNELaEFZKXWyw' \
212
- 'PxXEMPckAnbJB6liwFNjbY1y0WH6oiP/OzoiOGzGeuUr2P8IfW' \
213
- '8JIedOuy4JV4Y46QPvu4zCZhDgNa4dTCdOTA/oEd5+GLhuoSiC' \
214
- '87k/vbURwhqs1fmyXUJpUaDg3x4quTDZ6uBTG0Qu/A==',
215
- },
216
- decryption_key: './spec/spec_key',
217
- )
218
-
219
- expect(filtered_settings._secure_my_secure_setting).to eql 'hello'
220
- end
221
-
222
- it 'can decrypt large encrypted data' do
223
- filtered_settings = DecryptionFilter.execute(
224
- data: {
225
- _secure_my_secure_setting: 'AcMY7ALLoGZRakL3ibyo2WB438ipdMDIjsa4SCDBP2saOY63A' \
226
- 'D3C/SZanexlYDQoYoYC0V5J5EvKHgGMDAU8qnp9LjzU5VCwJ3' \
227
- 'SVRGz3J0c7LXgTlC585Lgy8LX+/yjYFm4D13hlMvvsoI35Bo8' \
228
- 'EVkTSU2+0gRSjRpQJeK1o7az5+fBuNmFipevA4YfLnarnpwo2' \
229
- 'd2oO+BqStI2QQI1UWwN2R04rvOdHoEzA6DLsdvYX+QTKDk4K5' \
230
- 'oSKXfuMBvzOCaCGT75cmt85ZY7XZnwbKi6c4mtL1ajrCr8sQF' \
231
- 'TA/GyG1EiYLFp1uQco0m2/S9yFf26REjax4ZE6O/ilXgT6xg=' \
232
- '=#YAm25swWRQx4ip1RjVzpGQ==#vRGvgjErI+dATM4UOtFkkg' \
233
- 'efFpFTvxGpHN0gRbf1VCO4K07eqAQPb46BDI67a8iNum9cBph' \
234
- 'es7oGmuNnUvBg4JiZhKsXnolcRWdITDVh/XYNioXRmesvj4x+' \
235
- 'tY0FVhkLV2zubRVfC7CDJgin6wRHP+bcZhICDD2YqB+XRS4ou' \
236
- '66UeaiGA4eV4G6sPIo+DPjDM3m8JFnuRFMvGk73wthbN4MdAp' \
237
- '9xONt5wfobJUiUR11k2iAqwhx7Wyj0imz/afI8goDTdMfQt3V' \
238
- 'DOYqYG3y2AcYOfsOL6m0GtQRlKvtsvw+m8/ICwSGiL2Loup0j' \
239
- '/jDGhFi1lwf4ded8aSwyS+2/Ks9C008dsJwpR1SxJ59z1KSzd' \
240
- 'QcTcrJTnxd+2qpOVVIoaRGud2tSV+5wKXy9dWRflLsjEtBRFR' \
241
- 'eFurTVQPodjDy+Lhs452/O/+KAJOXMKeYegCGOe8z9tLD3tel' \
242
- 'jjTyJPeW/1FE3+tP3G3HJAV4sgoO0YwhNY1Nji56igCl3UvEP' \
243
- 'nEQcJgu0w/+dqSreqwp6TqaqXY3lzr8vi733lti4nss=',
244
- },
245
- decryption_key: './spec/spec_key',
246
- )
247
-
248
- expect(filtered_settings._secure_my_secure_setting).to eql 'long' * 100
249
- end
250
- end
251
- end
252
- end
@@ -1,195 +0,0 @@
1
- # frozen_string_literal: true
2
- require 'rspectacular'
3
- require 'chamber/filters/encryption_filter'
4
-
5
- module Chamber
6
- module Filters
7
- describe EncryptionFilter do
8
- it 'will attempt to encrypt values which are marked as "secure"' do
9
- filtered_settings = EncryptionFilter.execute(
10
- data: {
11
- _secure_my_secure_setting: 'hello',
12
- },
13
- encryption_key: './spec/spec_key.pub',
14
- )
15
-
16
- expect(filtered_settings._secure_my_secure_setting).to match \
17
- EncryptionFilter::BASE64_STRING_PATTERN
18
- end
19
-
20
- it 'will not attempt to encrypt values which are not marked as "secure"' do
21
- filtered_settings = EncryptionFilter.execute(
22
- data: {
23
- my_secure_setting: 'hello',
24
- },
25
- encryption_key: './spec/spec_key.pub',
26
- )
27
-
28
- expect(filtered_settings.my_secure_setting).to eql 'hello'
29
- end
30
-
31
- it 'will not attempt to encrypt values even if they are prefixed with "secure"' do
32
- filtered_settings = EncryptionFilter.execute(
33
- data: {
34
- secure_setting: 'hello',
35
- },
36
- encryption_key: './spec/spec_key.pub',
37
- )
38
-
39
- expect(filtered_settings.secure_setting).to eql 'hello'
40
- end
41
-
42
- it 'will attempt to encrypt values if they are not properly encoded' do
43
- filtered_settings = EncryptionFilter.execute(
44
- data: {
45
- _secure_my_secure_setting: 'fNI5\jwlBn',
46
- },
47
- encryption_key: './spec/spec_key.pub',
48
- )
49
-
50
- expect(filtered_settings._secure_my_secure_setting).to match \
51
- EncryptionFilter::BASE64_STRING_PATTERN
52
- end
53
-
54
- it 'will attempt to encrypt values if they are numbers' do
55
- filtered_settings = EncryptionFilter.execute(data: {
56
- _secure_my_secure_setting: 12_345,
57
- },
58
- encryption_key: './spec/spec_key.pub')
59
-
60
- expect(filtered_settings._secure_my_secure_setting).to match \
61
- EncryptionFilter::BASE64_STRING_PATTERN
62
- end
63
-
64
- it 'will not attempt to encrypt normal values if it guesses that they are already encrypted' do
65
- filtered_settings = EncryptionFilter.execute(
66
- data: {
67
- _secure_my_secure_setting: 'fNI5wlBniNhEU4396pmhWwx+A09bRAMJOUASuP7PzprewBX8C' \
68
- 'XYqL+v/uXOJpIRCLDjwe8quuC+j9iLcPU7HBRMr054gGxeqZe' \
69
- 'xbLevXcPk7SrMis3qeEKmnAuarQGXe7ZAntidMY9Lx4pqSkhY' \
70
- 'XwQnI48d2Dh44qfaS9w2OrehSkpdFRnuxQeOpCKO/bleB0J88' \
71
- 'WGkytCohyHCRIpbaEjEC3UD52pnqMeu/ClNm+PBgE6Ci94pu5' \
72
- 'UUnZuIE/y+P4A3wgD6G/u8hgvAW51JwVryg/im1rayGAwWYNg' \
73
- 'upQ/5LDmjffwx7Q3fyMH2uF3CDIKRIC6U+mnM5SRMO4Dzysw==',
74
- },
75
- encryption_key: './spec/spec_key.pub',
76
- )
77
-
78
- my_secure_setting = filtered_settings._secure_my_secure_setting
79
-
80
- expect(my_secure_setting).to eql 'fNI5wlBniNhEU4396pmhWwx+A09bRAMJOUASuP7Pzprew' \
81
- 'BX8CXYqL+v/uXOJpIRCLDjwe8quuC+j9iLcPU7HBRMr05' \
82
- '4gGxeqZexbLevXcPk7SrMis3qeEKmnAuarQGXe7ZAntid' \
83
- 'MY9Lx4pqSkhYXwQnI48d2Dh44qfaS9w2OrehSkpdFRnux' \
84
- 'QeOpCKO/bleB0J88WGkytCohyHCRIpbaEjEC3UD52pnqM' \
85
- 'eu/ClNm+PBgE6Ci94pu5UUnZuIE/y+P4A3wgD6G/u8hgv' \
86
- 'AW51JwVryg/im1rayGAwWYNgupQ/5LDmjffwx7Q3fyMH2' \
87
- 'uF3CDIKRIC6U+mnM5SRMO4Dzysw=='
88
- end
89
-
90
- it 'will not attempt to encrypt large values if it guesses that they are already encrypted' do
91
- filtered_settings = EncryptionFilter.execute(
92
- data: {
93
- _secure_my_secure_setting: 'AcMY7ALLoGZRakL3ibyo2WB438ipdMDIjsa4SCDBP2saOY63A' \
94
- 'D3C/SZanexlYDQoYoYC0V5J5EvKHgGMDAU8qnp9LjzU5VCwJ3' \
95
- 'SVRGz3J0c7LXgTlC585Lgy8LX+/yjYFm4D13hlMvvsoI35Bo8' \
96
- 'EVkTSU2+0gRSjRpQJeK1o7az5+fBuNmFipevA4YfLnarnpwo2' \
97
- 'd2oO+BqStI2QQI1UWwN2R04rvOdHoEzA6DLsdvYX+QTKDk4K5' \
98
- 'oSKXfuMBvzOCaCGT75cmt85ZY7XZnwbKi6c4mtL1ajrCr8sQF' \
99
- 'TA/GyG1EiYLFp1uQco0m2/S9yFf26REjax4ZE6O/ilXgT6xg=' \
100
- '=#YAm25swWRQx4ip1RjVzpGQ==#vRGvgjErI+dATM4UOtFkkg' \
101
- 'efFpFTvxGpHN0gRbf1VCO4K07eqAQPb46BDI67a8iNum9cBph' \
102
- 'es7oGmuNnUvBg4JiZhKsXnolcRWdITDVh/XYNioXRmesvj4x+' \
103
- 'tY0FVhkLV2zubRVfC7CDJgin6wRHP+bcZhICDD2YqB+XRS4ou' \
104
- '66UeaiGA4eV4G6sPIo+DPjDM3m8JFnuRFMvGk73wthbN4MdAp' \
105
- '9xONt5wfobJUiUR11k2iAqwhx7Wyj0imz/afI8goDTdMfQt3V' \
106
- 'DOYqYG3y2AcYOfsOL6m0GtQRlKvtsvw+m8/ICwSGiL2Loup0j' \
107
- '/jDGhFi1lwf4ded8aSwyS+2/Ks9C008dsJwpR1SxJ59z1KSzd' \
108
- 'QcTcrJTnxd+2qpOVVIoaRGud2tSV+5wKXy9dWRflLsjEtBRFR' \
109
- 'eFurTVQPodjDy+Lhs452/O/+KAJOXMKeYegCGOe8z9tLD3tel' \
110
- 'jjTyJPeW/1FE3+tP3G3HJAV4sgoO0YwhNY1Nji56igCl3UvEP' \
111
- 'nEQcJgu0w/+dqSreqwp6TqaqXY3lzr8vi733lti4nss=',
112
- },
113
- encryption_key: './spec/spec_key.pub',
114
- )
115
-
116
- my_secure_setting = filtered_settings._secure_my_secure_setting
117
-
118
- expect(my_secure_setting).to eql 'AcMY7ALLoGZRakL3ibyo2WB438ipdMDIjsa4SCDBP2saOY63A' \
119
- 'D3C/SZanexlYDQoYoYC0V5J5EvKHgGMDAU8qnp9LjzU5VCwJ3' \
120
- 'SVRGz3J0c7LXgTlC585Lgy8LX+/yjYFm4D13hlMvvsoI35Bo8' \
121
- 'EVkTSU2+0gRSjRpQJeK1o7az5+fBuNmFipevA4YfLnarnpwo2' \
122
- 'd2oO+BqStI2QQI1UWwN2R04rvOdHoEzA6DLsdvYX+QTKDk4K5' \
123
- 'oSKXfuMBvzOCaCGT75cmt85ZY7XZnwbKi6c4mtL1ajrCr8sQF' \
124
- 'TA/GyG1EiYLFp1uQco0m2/S9yFf26REjax4ZE6O/ilXgT6xg=' \
125
- '=#YAm25swWRQx4ip1RjVzpGQ==#vRGvgjErI+dATM4UOtFkkg' \
126
- 'efFpFTvxGpHN0gRbf1VCO4K07eqAQPb46BDI67a8iNum9cBph' \
127
- 'es7oGmuNnUvBg4JiZhKsXnolcRWdITDVh/XYNioXRmesvj4x+' \
128
- 'tY0FVhkLV2zubRVfC7CDJgin6wRHP+bcZhICDD2YqB+XRS4ou' \
129
- '66UeaiGA4eV4G6sPIo+DPjDM3m8JFnuRFMvGk73wthbN4MdAp' \
130
- '9xONt5wfobJUiUR11k2iAqwhx7Wyj0imz/afI8goDTdMfQt3V' \
131
- 'DOYqYG3y2AcYOfsOL6m0GtQRlKvtsvw+m8/ICwSGiL2Loup0j' \
132
- '/jDGhFi1lwf4ded8aSwyS+2/Ks9C008dsJwpR1SxJ59z1KSzd' \
133
- 'QcTcrJTnxd+2qpOVVIoaRGud2tSV+5wKXy9dWRflLsjEtBRFR' \
134
- 'eFurTVQPodjDy+Lhs452/O/+KAJOXMKeYegCGOe8z9tLD3tel' \
135
- 'jjTyJPeW/1FE3+tP3G3HJAV4sgoO0YwhNY1Nji56igCl3UvEP' \
136
- 'nEQcJgu0w/+dqSreqwp6TqaqXY3lzr8vi733lti4nss='
137
- end
138
-
139
- it 'can encrypt long multiline strings' do
140
- filtered_settings = EncryptionFilter.execute(
141
- data: {
142
- _secure_multiline: <<-HEREDOC
143
- -----BEGIN RSA PRIVATE KEY-----
144
- uQ431irYF7XGEwmsfNUcw++6Enjmt9MItVZJrfL4cUr84L1ccOEX9AThsxz2nkiO
145
- GgU+HtwwueZDUZ8Pdn71+1CdVaSUeEkVaYKYuHwYVb1spGfreHQHRP90EMv3U5Ir
146
- xs0YFwKBgAJKGol+GM1oFodg48v4QA6hlF5z49v83wU+AS2f3aMVfjkTYgAEAoCT
147
- qoSi7wkYK3NvftVgVi8Z2+1WEzp3S590UkkHmjc5o+HfS657v2fnqkekJyinB+OH
148
- b5tySsPxt/3Un4D9EaGhjv44GMvL54vFI1Sqc8RsF/H8lRvj5ai5
149
- -----END RSA PRIVATE KEY-----
150
- HEREDOC
151
- },
152
- encryption_key: './spec/spec_key.pub',
153
- )
154
-
155
- my_secure_setting = filtered_settings._secure_multiline
156
-
157
- expect(my_secure_setting).to match(EncryptionFilter::LARGE_DATA_STRING_PATTERN)
158
- end
159
-
160
- it 'will encrypt strings of 127 chars effective length' do
161
- filtered_settings = EncryptionFilter.execute(
162
- data: {
163
- _secure_my_secure_setting: 'A' * 119,
164
- },
165
- encryption_key: './spec/spec_key.pub',
166
- )
167
-
168
- expect(filtered_settings._secure_my_secure_setting).to match \
169
- EncryptionFilter::BASE64_STRING_PATTERN
170
-
171
- filtered_settings = EncryptionFilter.execute(
172
- data: {
173
- _secure_my_secure_setting: 'A' * 120,
174
- },
175
- encryption_key: './spec/spec_key.pub',
176
- )
177
-
178
- expect(filtered_settings._secure_my_secure_setting).to match \
179
- EncryptionFilter::LARGE_DATA_STRING_PATTERN
180
- end
181
-
182
- it 'will encrypt and decrypt strings larger than 128 chars' do
183
- filtered_settings = EncryptionFilter.execute(
184
- data: {
185
- _secure_my_secure_setting: 'long' * 100,
186
- },
187
- encryption_key: './spec/spec_key.pub',
188
- )
189
-
190
- expect(filtered_settings._secure_my_secure_setting).to match \
191
- EncryptionFilter::LARGE_DATA_STRING_PATTERN
192
- end
193
- end
194
- end
195
- end