mongoid-kms 0.0.32 → 0.0.33
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 +4 -4
- data/lib/mongoid/kms.rb +5 -3
- data/lib/mongoid/kms/version.rb +1 -1
- data/spec/lib/mongoid/kms_spec.rb +55 -0
- metadata +1 -1
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 223bbdfbc44f7c82f1dddc67f033201abbc6f760
|
4
|
+
data.tar.gz: 9213598783f90c60f3dc71fdbf95b530a18f958e
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: def657da1f529c0b15579fd6607a4e1d005c86637e7c286e83d6a7df93645bcdbd6f273d2760747ad06f01937b906ee34549e86b6a09cac119e9610f92d82c33
|
7
|
+
data.tar.gz: d88d272042c7638c0b756dc93291148f26fc9dccda7909d4e5f3b16945f43a811e8ae8cc8e7e43a9f139912bd090a85d731e95ac20823f04af136028f10c0bd8
|
data/lib/mongoid/kms.rb
CHANGED
@@ -65,7 +65,7 @@ module Mongoid
|
|
65
65
|
kms_context_value_changed?(field_name) # checks if any of the context fields have changed
|
66
66
|
encrypted_field_name = self.class.get_encrypted_field_name(field_name)
|
67
67
|
|
68
|
-
if
|
68
|
+
if !instance_variable_defined?("@#{field_name}") && kms_context_value_changed?(field_name)
|
69
69
|
raw = self.send(encrypted_field_name)
|
70
70
|
raw = raw.data if raw.is_a?(Mongoid::Kms.bson_class::Binary)
|
71
71
|
value = self.class.decrypt_field(self, field_name, raw, self.class.kms_context_was(self, field_name))
|
@@ -73,7 +73,7 @@ module Mongoid
|
|
73
73
|
value = send("#{field_name}")
|
74
74
|
end
|
75
75
|
|
76
|
-
if value.nil?
|
76
|
+
if value.nil? || value == ""
|
77
77
|
self.send("#{encrypted_field_name}=", nil)
|
78
78
|
else
|
79
79
|
self.send("#{encrypted_field_name}=", Mongoid::Kms.binary_factory(self.class.encrypt_field(self, field_name, value)))
|
@@ -160,7 +160,9 @@ module Mongoid
|
|
160
160
|
field encrypted_field_name, type: Mongoid::Kms.bson_class::Binary
|
161
161
|
|
162
162
|
define_method(field_name) do
|
163
|
-
|
163
|
+
if instance_variable_defined?("@#{field_name}")
|
164
|
+
instance_variable_get("@#{field_name}")
|
165
|
+
else
|
164
166
|
raw = send("kms_secure_#{field_name}")
|
165
167
|
raw = raw.data if raw.is_a?(Mongoid::Kms.bson_class::Binary)
|
166
168
|
|
data/lib/mongoid/kms/version.rb
CHANGED
@@ -19,6 +19,61 @@ describe Mongoid::Kms do
|
|
19
19
|
expect(o.unsecure).to eq("robin")
|
20
20
|
end
|
21
21
|
|
22
|
+
it "ingores nil on create" do
|
23
|
+
o = MyClass.new(unsecure: "robin", secure: nil)
|
24
|
+
o.save!
|
25
|
+
|
26
|
+
o = MyClass.find(o.id)
|
27
|
+
expect(o.secure).to be_nil
|
28
|
+
expect(o.unsecure).to eq("robin")
|
29
|
+
end
|
30
|
+
|
31
|
+
it "ingores empty string on create" do
|
32
|
+
o = MyClass.new(unsecure: "robin", secure: "")
|
33
|
+
o.save!
|
34
|
+
|
35
|
+
o = MyClass.find(o.id)
|
36
|
+
expect(o.secure).to be_nil
|
37
|
+
expect(o.unsecure).to eq("robin")
|
38
|
+
end
|
39
|
+
|
40
|
+
it "sets nil on update" do
|
41
|
+
o = MyClass.new(unsecure: "robin", secure: "old-secure-value")
|
42
|
+
o.save!
|
43
|
+
|
44
|
+
o.update_attributes!(secure: nil)
|
45
|
+
|
46
|
+
o = MyClass.find(o.id)
|
47
|
+
expect(o.secure).to be_nil
|
48
|
+
expect(o.unsecure).to eq("robin")
|
49
|
+
end
|
50
|
+
|
51
|
+
it "sets empty string on update" do
|
52
|
+
o = MyClass.new(unsecure: "robin", secure: "old-secure-value")
|
53
|
+
o.save!
|
54
|
+
|
55
|
+
o.secure = ""
|
56
|
+
o.save!
|
57
|
+
|
58
|
+
o = MyClass.find(o.id)
|
59
|
+
expect(o.secure).to be_nil
|
60
|
+
expect(o.unsecure).to eq("robin")
|
61
|
+
end
|
62
|
+
|
63
|
+
it "udpates nil values properly" do
|
64
|
+
o = MyClass.new(unsecure: "robin", secure: nil)
|
65
|
+
o.save!
|
66
|
+
|
67
|
+
o.secure = "batman"
|
68
|
+
o.save!
|
69
|
+
|
70
|
+
o = MyClass.find(o.id)
|
71
|
+
expect(o.secure).to eq("batman")
|
72
|
+
expect(o.unsecure).to eq("robin")
|
73
|
+
end
|
74
|
+
|
75
|
+
|
76
|
+
|
22
77
|
it "encrypts the other fields" do
|
23
78
|
o = OtherClass.new(unsecure: "pengiun", super_secure: "joker")
|
24
79
|
o.save!
|