@@ -47,12 +47,6 @@ def test_check(self):
4747 field .model = MagicMock ()
4848 self .assertEqual (field (name = 'field' ).check (), [])
4949
50- def test_max_length (self ):
51- """Assert `max_length` is ignored."""
52- for field in PGP_FIELDS :
53- with self .subTest (field = field ):
54- self .assertEqual (field (max_length = 42 ).max_length , None )
55-
5650 def test_db_type (self ):
5751 """Check db_type is `bytea`."""
5852 for field in PGP_FIELDS :
@@ -90,10 +84,12 @@ def test_fields(self):
9084 'email_pgp_pub_field' ,
9185 'integer_pgp_pub_field' ,
9286 'pgp_pub_field' ,
87+ 'char_pub_field' ,
9388 'decimal_pgp_pub_field' ,
9489 'email_pgp_sym_field' ,
9590 'integer_pgp_sym_field' ,
9691 'pgp_sym_field' ,
92+ 'char_sym_field' ,
9793 'date_pgp_sym_field' ,
9894 'datetime_pgp_sym_field' ,
9995 'time_pgp_sym_field' ,
@@ -456,6 +452,50 @@ def test_pgp_public_key_time_form(self):
456452 expected
457453 )
458454
455+ def test_pgp_public_key_char_field (self ):
456+ """Test public key CharField."""
457+ expect = 'Peter'
458+ EncryptedModelFactory .create (char_pub_field = expect )
459+
460+ instance = EncryptedModel .objects .get ()
461+
462+ self .assertTrue (
463+ instance .char_pub_field ,
464+ expect
465+ )
466+
467+ payload = {
468+ 'char_pub_field' : 'This is beyond 15 max length'
469+ }
470+
471+ form = EncryptedForm (payload , instance = instance )
472+ is_valid = form .is_valid ()
473+ errors = form .errors .as_data ()
474+ self .assertFalse (is_valid )
475+ self .assertTrue (1 , len (errors ['char_pub_field' ]))
476+
477+ def test_pgp_symmetric_key_char_field (self ):
478+ """Test symmetric key CharField."""
479+ expect = 'Peter'
480+ EncryptedModelFactory .create (char_sym_field = expect )
481+
482+ instance = EncryptedModel .objects .get ()
483+
484+ self .assertTrue (
485+ instance .char_sym_field ,
486+ expect
487+ )
488+
489+ payload = {
490+ 'char_sym_field' : 'This is beyond 15 max length'
491+ }
492+
493+ form = EncryptedForm (payload , instance = instance )
494+ is_valid = form .is_valid ()
495+ errors = form .errors .as_data ()
496+ self .assertFalse (is_valid )
497+ self .assertTrue (1 , len (errors ['char_sym_field' ]))
498+
459499 def test_pgp_symmetric_key_date_lookups (self ):
460500 """Assert lookups `DatePGPSymmetricKeyField` field."""
461501 EncryptedModelFactory .create (date_pgp_sym_field = date (2016 , 7 , 1 ))
@@ -1304,19 +1344,35 @@ def test_get_col(self):
13041344
13051345 RelatedDateTime .objects .create (related = related , related_again = related_again )
13061346
1307- instance = RelatedDateTime .objects .select_related (
1308- 'related' , 'related_again'
1309- )
1310-
13111347 instance = RelatedDateTime .objects .select_related (
13121348 'related' , 'related_again'
13131349 ).get ()
13141350
13151351 self .assertIsInstance (instance , RelatedDateTime )
13161352
1353+ def test_char_field_choices (self ):
1354+ """Test CharField choices."""
1355+ expected = 1
1356+ instance = EncryptedDiff .objects .create (
1357+ pub_field = expected ,
1358+ sym_field = expected ,
1359+ )
1360+ instance .refresh_from_db ()
1361+
1362+ # choices always come back as strings
1363+ self .assertTrue (
1364+ '{}' .format (expected ),
1365+ instance .pub_field
1366+ )
1367+
1368+ self .assertTrue (
1369+ '{}' .format (expected ),
1370+ instance .sym_field
1371+ )
1372+
13171373 def test_write_to_diff_keys (self ):
13181374 """Test writing to diff_keys db which uses different keys."""
1319- expected = 'bonjour '
1375+ expected = 'a '
13201376 instance = EncryptedDiff .objects .create (
13211377 pub_field = expected ,
13221378 sym_field = expected ,
@@ -1325,7 +1381,7 @@ def test_write_to_diff_keys(self):
13251381 )
13261382
13271383 reset_queries () # Required for Django 1.11
1328- instance = EncryptedDiff .objects .get (id = 1 )
1384+ instance = EncryptedDiff .objects .get ()
13291385
13301386 self .assertTrue (
13311387 instance .pub_field ,
0 commit comments