Skip to content

Commit 52c0279

Browse files
Fix code review remarks
1 parent 96a682d commit 52c0279

File tree

5 files changed

+110
-185
lines changed

5 files changed

+110
-185
lines changed

.evergreen/config.yml

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1289,7 +1289,9 @@ buildvariants:
12891289
- matrix_name: "fle-4.4"
12901290
matrix_spec:
12911291
auth-and-ssl: "noauth-and-nossl"
1292-
ruby: [ruby-3.0, ruby-2.7, jruby-9.2]
1292+
# https://jira.mongodb.org/browse/RUBY-2832
1293+
# ruby: [ruby-3.0, ruby-2.7, jruby-9.2]
1294+
ruby: [ruby-3.0, ruby-2.7]
12931295
topology: standalone
12941296
mongodb-version: ['4.4']
12951297
os: ubuntu1804

.evergreen/config/standard.yml.erb

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -437,7 +437,9 @@ buildvariants:
437437
- matrix_name: "fle-4.4"
438438
matrix_spec:
439439
auth-and-ssl: "noauth-and-nossl"
440-
ruby: [ruby-3.0, ruby-2.7, jruby-9.2]
440+
# https://jira.mongodb.org/browse/RUBY-2832
441+
# ruby: [ruby-3.0, ruby-2.7, jruby-9.2]
442+
ruby: [ruby-3.0, ruby-2.7]
441443
topology: standalone
442444
mongodb-version: ['4.4']
443445
os: ubuntu1804

lib/mongo/crypt/binding.rb

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -799,9 +799,12 @@ def self.kms_ctx_get_kms_provider(kms_context)
799799
nil
800800
else
801801
len = if BSON::Environment.jruby?
802+
# JRuby FFI implementation does not have `read(type)` method, but it
803+
# has this `get_uint32`.
802804
len_ptr.get_uint32
803805
else
804-
len_ptr.get(:uint32, 0)
806+
# For MRI we use a documented `read` method - https://www.rubydoc.info/github/ffi/ffi/FFI%2FPointer:read
807+
len_ptr.read(:uint32)
805808
end
806809
provider.read_string(len).to_sym
807810
end

spec/integration/client_side_encryption/custom_endpoint_spec.rb

Lines changed: 35 additions & 53 deletions
Original file line numberDiff line numberDiff line change
@@ -28,6 +28,13 @@
2828
)
2929
end
3030

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+
3138
let(:data_key_id) do
3239
client_encryption.create_data_key('aws', master_key: master_key)
3340
end
@@ -51,100 +58,75 @@
5158

5259
context 'with region and key options' do
5360
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
5862
end
5963

6064
it_behaves_like 'a functioning data key'
6165
end
6266

6367
context 'with region, key, and endpoint options' do
6468
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"})
7070
end
7171

7272
it_behaves_like 'a functioning data key'
7373
end
7474

7575
context 'with region, key, and endpoint with valid port' do
7676
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"})
8278
end
8379

8480
it_behaves_like 'a functioning data key'
8581
end
8682

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+
8791
context 'with region, key, and endpoint with invalid port' do
8892
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"})
9494
end
9595

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/
103101
end
104102
end
105103

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'
115105
end
116106

117107

118108
context 'with region, key, and endpoint with invalid region' do
119109
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"})
125111
end
126112

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/
131115
end
116+
117+
it_behaves_like 'raising a KMS error'
132118
end
133119

134120
context 'with region, key, and endpoint at incorrect domain' do
135121
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"})
141123
end
142124

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/
147127
end
128+
129+
it_behaves_like 'raising a KMS error'
148130
end
149131
end
150132
end

0 commit comments

Comments
 (0)