|
28 | 28 | )
|
29 | 29 | end
|
30 | 30 |
|
| 31 | + let(:master_key_template) do |
| 32 | + { |
| 33 | + region: "us-east-1", |
| 34 | + key: "arn:aws:kms:us-east-1:579766882180:key/89fcc2c4-08b0-4bd9-9f25-e30687b580d0" |
| 35 | + } |
| 36 | + end |
| 37 | + |
31 | 38 | let(:data_key_id) do
|
32 | 39 | client_encryption.create_data_key('aws', master_key: master_key)
|
33 | 40 | end
|
|
51 | 58 |
|
52 | 59 | context 'with region and key options' do
|
53 | 60 | let(:master_key) do
|
54 |
| - { |
55 |
| - region: "us-east-1", |
56 |
| - key: "arn:aws:kms:us-east-1:579766882180:key/89fcc2c4-08b0-4bd9-9f25-e30687b580d0" |
57 |
| - } |
| 61 | + master_key_template |
58 | 62 | end
|
59 | 63 |
|
60 | 64 | it_behaves_like 'a functioning data key'
|
61 | 65 | end
|
62 | 66 |
|
63 | 67 | context 'with region, key, and endpoint options' do
|
64 | 68 | let(:master_key) do
|
65 |
| - { |
66 |
| - region: "us-east-1", |
67 |
| - key: "arn:aws:kms:us-east-1:579766882180:key/89fcc2c4-08b0-4bd9-9f25-e30687b580d0", |
68 |
| - endpoint: "kms.us-east-1.amazonaws.com" |
69 |
| - } |
| 69 | + master_key_template.merge({endpoint: "kms.us-east-1.amazonaws.com"}) |
70 | 70 | end
|
71 | 71 |
|
72 | 72 | it_behaves_like 'a functioning data key'
|
73 | 73 | end
|
74 | 74 |
|
75 | 75 | context 'with region, key, and endpoint with valid port' do
|
76 | 76 | let(:master_key) do
|
77 |
| - { |
78 |
| - region: "us-east-1", |
79 |
| - key: "arn:aws:kms:us-east-1:579766882180:key/89fcc2c4-08b0-4bd9-9f25-e30687b580d0", |
80 |
| - endpoint: "kms.us-east-1.amazonaws.com:443" |
81 |
| - } |
| 77 | + master_key_template.merge({endpoint: "kms.us-east-1.amazonaws.com:443"}) |
82 | 78 | end
|
83 | 79 |
|
84 | 80 | it_behaves_like 'a functioning data key'
|
85 | 81 | end
|
86 | 82 |
|
| 83 | + shared_examples 'raising a KMS error' do |
| 84 | + it 'throws an exception' do |
| 85 | + expect do |
| 86 | + data_key_id |
| 87 | + end.to raise_error(Mongo::Error::KmsError, error_regex) |
| 88 | + end |
| 89 | + end |
| 90 | + |
87 | 91 | context 'with region, key, and endpoint with invalid port' do
|
88 | 92 | let(:master_key) do
|
89 |
| - { |
90 |
| - region: "us-east-1", |
91 |
| - key: "arn:aws:kms:us-east-1:579766882180:key/89fcc2c4-08b0-4bd9-9f25-e30687b580d0", |
92 |
| - endpoint: "kms.us-east-1.amazonaws.com:12345" |
93 |
| - } |
| 93 | + master_key_template.merge({endpoint: "kms.us-east-1.amazonaws.com:12345"}) |
94 | 94 | end
|
95 | 95 |
|
96 |
| - context 'MRI' do |
97 |
| - require_mri |
98 |
| - |
99 |
| - it 'throws an exception' do |
100 |
| - expect do |
101 |
| - data_key_id |
102 |
| - end.to raise_error(Mongo::Error::KmsError, /Connection refused/) |
| 96 | + let(:error_regex) do |
| 97 | + if BSON::Environment.jruby? |
| 98 | + /Bad file descriptor/ |
| 99 | + else |
| 100 | + /Connection refused/ |
103 | 101 | end
|
104 | 102 | end
|
105 | 103 |
|
106 |
| - context 'JRuby' do |
107 |
| - require_jruby |
108 |
| - |
109 |
| - it 'throws an exception' do |
110 |
| - expect do |
111 |
| - data_key_id |
112 |
| - end.to raise_error(Mongo::Error::KmsError) |
113 |
| - end |
114 |
| - end |
| 104 | + it_behaves_like 'raising a KMS error' |
115 | 105 | end
|
116 | 106 |
|
117 | 107 |
|
118 | 108 | context 'with region, key, and endpoint with invalid region' do
|
119 | 109 | let(:master_key) do
|
120 |
| - { |
121 |
| - region: "us-east-1", |
122 |
| - key: "arn:aws:kms:us-east-1:579766882180:key/89fcc2c4-08b0-4bd9-9f25-e30687b580d0", |
123 |
| - endpoint: "kms.us-east-2.amazonaws.com" |
124 |
| - } |
| 110 | + master_key_template.merge({endpoint: "kms.us-east-2.amazonaws.com"}) |
125 | 111 | end
|
126 | 112 |
|
127 |
| - it 'throws an exception' do |
128 |
| - expect do |
129 |
| - data_key_id |
130 |
| - end.to raise_error(Mongo::Error::KmsError, /us-east-1/) |
| 113 | + let(:error_regex) do |
| 114 | + /us-east-1/ |
131 | 115 | end
|
| 116 | + |
| 117 | + it_behaves_like 'raising a KMS error' |
132 | 118 | end
|
133 | 119 |
|
134 | 120 | context 'with region, key, and endpoint at incorrect domain' do
|
135 | 121 | let(:master_key) do
|
136 |
| - { |
137 |
| - region: "us-east-1", |
138 |
| - key: "arn:aws:kms:us-east-1:579766882180:key/89fcc2c4-08b0-4bd9-9f25-e30687b580d0", |
139 |
| - endpoint: "example.com" |
140 |
| - } |
| 122 | + master_key_template.merge({endpoint: "example.com"}) |
141 | 123 | end
|
142 | 124 |
|
143 |
| - it 'throws an exception' do |
144 |
| - expect do |
145 |
| - data_key_id |
146 |
| - end.to raise_error(Mongo::Error::KmsError, /parse error/) |
| 125 | + let(:error_regex) do |
| 126 | + /parse error/ |
147 | 127 | end
|
| 128 | + |
| 129 | + it_behaves_like 'raising a KMS error' |
148 | 130 | end
|
149 | 131 | end
|
150 | 132 | end
|
0 commit comments