/ acme / acme / fields_test.py
fields_test.py
 1  """Tests for acme.fields."""
 2  import datetime
 3  import unittest
 4  
 5  import pytz
 6  
 7  from acme import jose
 8  
 9  
10  class FixedTest(unittest.TestCase):
11      """Tests for acme.fields.Fixed."""
12  
13      def setUp(self):
14          from acme.fields import Fixed
15          self.field = Fixed('name', 'x')
16  
17      def test_decode(self):
18          self.assertEqual('x', self.field.decode('x'))
19  
20      def test_decode_bad(self):
21          self.assertRaises(jose.DeserializationError, self.field.decode, 'y')
22  
23      def test_encode(self):
24          self.assertEqual('x', self.field.encode('x'))
25  
26      def test_encode_override(self):
27          self.assertEqual('y', self.field.encode('y'))
28  
29  
30  class RFC3339FieldTest(unittest.TestCase):
31      """Tests for acme.fields.RFC3339Field."""
32  
33      def setUp(self):
34          self.decoded = datetime.datetime(2015, 3, 27, tzinfo=pytz.utc)
35          self.encoded = '2015-03-27T00:00:00Z'
36  
37      def test_default_encoder(self):
38          from acme.fields import RFC3339Field
39          self.assertEqual(
40              self.encoded, RFC3339Field.default_encoder(self.decoded))
41  
42      def test_default_encoder_naive_fails(self):
43          from acme.fields import RFC3339Field
44          self.assertRaises(
45              ValueError, RFC3339Field.default_encoder, datetime.datetime.now())
46  
47      def test_default_decoder(self):
48          from acme.fields import RFC3339Field
49          self.assertEqual(
50              self.decoded, RFC3339Field.default_decoder(self.encoded))
51  
52      def test_default_decoder_raises_deserialization_error(self):
53          from acme.fields import RFC3339Field
54          self.assertRaises(
55              jose.DeserializationError, RFC3339Field.default_decoder, '')
56  
57  
58  class ResourceTest(unittest.TestCase):
59      """Tests for acme.fields.Resource."""
60  
61      def setUp(self):
62          from acme.fields import Resource
63          self.field = Resource('x')
64  
65      def test_decode_good(self):
66          self.assertEqual('x', self.field.decode('x'))
67  
68      def test_decode_wrong(self):
69          self.assertRaises(jose.DeserializationError, self.field.decode, 'y')
70  
71  
72  if __name__ == '__main__':
73      unittest.main()  # pragma: no cover