Revision dd999b06

b/test/ganeti.serializer_unittest.py
60 60
  def testGeneric(self):
61 61
    self._TestSerializer(serializer.Dump, serializer.Load)
62 62

  
63
  def testSignedGeneric(self):
64
    self._TestSigned(serializer.DumpSigned, serializer.LoadSigned)
65

  
63 66
  def testJson(self):
64 67
    self._TestSerializer(serializer.DumpJson, serializer.LoadJson)
65 68

  
66
  def testSignedMessage(self):
67
    LoadSigned = serializer.LoadSigned
68
    DumpSigned = serializer.DumpSigned
69
  def testSignedJson(self):
70
    self._TestSigned(serializer.DumpSignedJson, serializer.LoadSignedJson)
69 71

  
72
  def _TestSigned(self, dump_fn, load_fn):
70 73
    for data in self._TESTDATA:
71
      self.assertEqualValues(LoadSigned(DumpSigned(data, "mykey"), "mykey"),
74
      self.assertEqualValues(load_fn(dump_fn(data, "mykey"), "mykey"),
72 75
                             (data, ''))
73
      self.assertEqualValues(LoadSigned(DumpSigned(data, "myprivatekey",
74
                                                   salt="mysalt"),
75
                                        "myprivatekey"),
76
      self.assertEqualValues(load_fn(dump_fn(data, "myprivatekey",
77
                                             salt="mysalt"),
78
                                     "myprivatekey"),
76 79
                             (data, "mysalt"))
77 80

  
78
      keydict = {"mykey_id": "myprivatekey"}
79
      self.assertEqualValues(LoadSigned(DumpSigned(data,
80
                                                   "myprivatekey",
81
                                                   salt="mysalt",
82
                                                   key_selector="mykey_id"),
83
                                        keydict.get),
81
      keydict = {
82
        "mykey_id": "myprivatekey",
83
        }
84
      self.assertEqualValues(load_fn(dump_fn(data, "myprivatekey",
85
                                             salt="mysalt",
86
                                             key_selector="mykey_id"),
87
                                     keydict.get),
84 88
                             (data, "mysalt"))
85

  
86
    self.assertRaises(errors.SignatureError, serializer.LoadSigned,
87
                      serializer.DumpSigned("test", "myprivatekey"),
89
      self.assertRaises(errors.SignatureError, load_fn,
90
                        dump_fn(data, "myprivatekey",
91
                                salt="mysalt",
92
                                key_selector="mykey_id"),
93
                        {}.get)
94

  
95
    self.assertRaises(errors.SignatureError, load_fn,
96
                      dump_fn("test", "myprivatekey"),
88 97
                      "myotherkey")
89 98

  
99
    self.assertRaises(errors.SignatureError, load_fn,
100
                      serializer.DumpJson("This is a test"), "mykey")
101
    self.assertRaises(errors.SignatureError, load_fn,
102
                      serializer.DumpJson({}), "mykey")
103

  
104
    # Message missing salt and HMAC
105
    tdata = { "msg": "Foo", }
106
    self.assertRaises(errors.SignatureError, load_fn,
107
                      serializer.DumpJson(tdata), "mykey")
108

  
90 109

  
91 110
if __name__ == '__main__':
92 111
  testutils.GanetiTestProgram()

Also available in: Unified diff