pod4 0.10.1 → 0.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.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 5b48c8744ce1bd87ebb08d8400fc19fe926b2cde
4
- data.tar.gz: 1cae79e576a907a9ad71c54e86207b1dddc9c1bb
3
+ metadata.gz: 0ee46818707291111af50ad94a88168a026f9d2a
4
+ data.tar.gz: 9cae9859c19fbbd3784d8a43cb33d40a0effe7ca
5
5
  SHA512:
6
- metadata.gz: 442f51f8a3f4b35967a8240f6f71e0291610f4e23959002ab308a6946736e36c61b512dd995aa2a64591e346491386739ab9c9c943cc892f722157a384864c82
7
- data.tar.gz: 2446598aa6b5cf755f5526a790a7f505389f6d687066967d5cb3cdadb9a661842d52504db302dc123f5ee5240f1559d3265b2e75f84002485627ced7c5e334b7
6
+ metadata.gz: ac96259ec5dad9ce2ad6b92d80e4b92987138ceba5d176dee3debfdc647699bd8dfa88858ecca0690384217fac34b6d8a175eae6da38ce1bccb4c2589dd48f47
7
+ data.tar.gz: 4fa5a9bbec0022d3da862b4b1a5d14b0298417fc0a3ef0e710a4f1db44c25f61cabb01110db83ead8f33a8ca4e9a1cfed434ffbf52ba94b948da30802a35309d
@@ -142,7 +142,7 @@ module Pod4
142
142
  end
143
143
 
144
144
  self.class.encryption_columns.each do |col|
145
- hash[col] = crypt(cipher, encryption_iv, hash[col].to_s)
145
+ hash[col] = crypt(cipher, :encrypt, encryption_iv, hash[col])
146
146
  end
147
147
 
148
148
  Octothorpe.new(hash)
@@ -157,7 +157,7 @@ module Pod4
157
157
  iv = hash[self.class.encryption_iv_column] # not yet set on the model
158
158
 
159
159
  self.class.encryption_columns.each do |col|
160
- hash[col] = crypt(cipher, iv, hash[col])
160
+ hash[col] = crypt(cipher, :decrypt, iv, hash[col])
161
161
  end
162
162
 
163
163
  super Octothorpe.new(hash)
@@ -206,11 +206,16 @@ module Pod4
206
206
  ##
207
207
  # Encrypt / decrypt
208
208
  #
209
- def crypt(cipher, iv, string)
209
+ def crypt(cipher, direction, iv, string)
210
210
  return string if use_iv? and iv.nil?
211
+ return string if string.nil?
211
212
  cipher.key = self.class.encryption_key
212
213
  cipher.iv = iv if use_iv?
213
- cipher.update(string) + cipher.final
214
+
215
+ answer = ""
216
+ answer << cipher.update(string.to_s) unless direction == :encrypt && string.empty?
217
+ answer << cipher.final
218
+ answer
214
219
 
215
220
  rescue OpenSSL::Cipher::CipherError
216
221
  raise Pod4::Pod4Error, $!
data/lib/pod4/version.rb CHANGED
@@ -1,3 +1,3 @@
1
1
  module Pod4
2
- VERSION = '0.10.1'
2
+ VERSION = '0.10.2'
3
3
  end
@@ -18,7 +18,8 @@ describe "(Model with Encryption)" do
18
18
  cipher.encrypt
19
19
  cipher.key = key
20
20
  cipher.iv = iv if iv
21
- cipher.update(plaintext) + cipher.final
21
+
22
+ (plaintext.empty? ? "" : cipher.update(plaintext) ) + cipher.final
22
23
  end
23
24
 
24
25
  let(:encryption_key) { "dflkasdgklajndgnalkghlgasdgasdghaalsdg" }
@@ -302,6 +303,16 @@ describe "(Model with Encryption)" do
302
303
  expect{ bad.map_to_interface }.to raise_exception Pod4::Pod4Error
303
304
  end
304
305
 
306
+ it "doesn't freak out when asked to encrypt an empty column" do
307
+ bad = medical_model_class.new
308
+ bad.id = 998
309
+ bad.nhs_no = "12345"
310
+ bad.name = ""
311
+ bad.ailment = nil
312
+
313
+ expect{ bad.map_to_interface }.not_to raise_exception
314
+ end
315
+
305
316
  context "when we don't have an IV column" do
306
317
 
307
318
  it "encrypts only the encryptable columns for the interface" do
@@ -351,6 +362,15 @@ describe "(Model with Encryption)" do
351
362
  expect( d.text ).to eq "sore toe"
352
363
  end
353
364
 
365
+ it "successfully decrypts an empty column" do
366
+ d44.text = ""
367
+ d44.create
368
+
369
+ d = diary_model_class.new(44)
370
+ d.read
371
+ expect( d.text ).to eq ""
372
+ end
373
+
354
374
  end
355
375
 
356
376
  context "when we have an IV column" do
@@ -370,6 +390,18 @@ describe "(Model with Encryption)" do
370
390
  expect( m.prescription ).to eq "suck thumb"
371
391
  end
372
392
 
393
+ it "successfully decrypts an empty column" do
394
+ m40.ailment = ""
395
+ m40.prescription = nil
396
+ m40.create
397
+
398
+ m = medical_model_class.new(40)
399
+ m.read
400
+ expect( m.ailment ).to eq ""
401
+ expect( m.prescription ).to be_nil
402
+ end
403
+
404
+
373
405
  end
374
406
 
375
407
  end # of Model#map_to_model
@@ -31,7 +31,7 @@ describe "ProductModel" do
31
31
  set_interface NullInterface.new( :id, :code, :band, :sales, :created, :yrstart,
32
32
  :flag, :foo, :bar, [] )
33
33
 
34
- def mycast(value, opts); end
34
+ def mycast(value, opts); "blarg" end
35
35
  end
36
36
  end
37
37
 
@@ -316,7 +316,18 @@ describe "ProductModel" do
316
316
  c.foo = "12345"
317
317
  c.create
318
318
  end
319
-
319
+
320
+ it "writes the return value from the use method to the interface" do
321
+ c = customer_model_class.new
322
+ c.id = 33
323
+ c.code = "baz"
324
+ c.foo = "12345"
325
+ c.create
326
+
327
+ record = customer_model_class.interface.read(33)
328
+ expect( record.>>.foo ).to eq "blarg"
329
+ end
330
+
320
331
  end # of #map_to_interface"
321
332
 
322
333
 
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: pod4
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.10.1
4
+ version: 0.10.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - Andy Jones
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2018-06-06 00:00:00.000000000 Z
11
+ date: 2018-06-07 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: devnull