14
14
from maasserver.testing.factory import factory
15
15
from maastesting import TestCase
16
from metadataserver.models import NodeKey
16
from metadataserver.models import (
19
22
class TestNodeKeyManager(TestCase):
20
23
"""Test NodeKeyManager."""
22
def test_create_key_registers_node_key(self):
25
def test_get_token_for_node_registers_node_key(self):
23
26
node = factory.make_node()
24
token = NodeKey.objects.create_token(node)
27
token = NodeKey.objects.get_token_for_node(node)
25
28
nodekey = NodeKey.objects.get(node=node, key=token.key)
26
29
self.assertNotEqual(None, nodekey)
30
self.assertEqual(token, nodekey.token)
28
32
def test_get_node_for_key_finds_node(self):
29
33
node = factory.make_node()
30
token = NodeKey.objects.create_token(node)
34
token = NodeKey.objects.get_token_for_node(node)
31
35
self.assertEqual(node, NodeKey.objects.get_node_for_key(token.key))
33
37
def test_get_node_for_key_raises_DoesNotExist_if_key_not_found(self):
34
38
non_key = factory.getRandomString()
36
40
NodeKey.DoesNotExist, NodeKey.objects.get_node_for_key, non_key)
42
def test_get_token_for_node_creates_token(self):
43
node = factory.make_node()
44
token = NodeKey.objects.get_token_for_node(node)
45
self.assertEqual(node, NodeKey.objects.get_node_for_key(token.key))
47
def test_get_token_for_node_returns_existing_token(self):
48
node = factory.make_node()
49
original_token = NodeKey.objects.get_token_for_node(node)
50
repeated_token = NodeKey.objects.get_token_for_node(node)
51
self.assertEqual(original_token, repeated_token)
53
def test_get_token_for_node_inverts_get_node_for_key(self):
54
node = factory.make_node()
57
NodeKey.objects.get_node_for_key(
58
NodeKey.objects.get_token_for_node(node).key))
60
def test_get_node_for_key_inverts_get_token_for_node(self):
61
key = NodeKey.objects.get_token_for_node(factory.make_node()).key
64
NodeKey.objects.get_token_for_node(
65
NodeKey.objects.get_node_for_key(key)).key)
68
class TestNodeUserDataManager(TestCase):
69
"""Test NodeUserDataManager."""
71
def test_set_user_data_creates_new_nodeuserdata_if_needed(self):
72
node = factory.make_node()
74
NodeUserData.objects.set_user_data(node, data)
75
self.assertEqual(data, NodeUserData.objects.get(node=node).data)
77
def test_set_user_data_overwrites_existing_userdata(self):
78
node = factory.make_node()
80
NodeUserData.objects.set_user_data(node, b'old data')
81
NodeUserData.objects.set_user_data(node, data)
82
self.assertEqual(data, NodeUserData.objects.get(node=node).data)
84
def test_set_user_data_leaves_data_for_other_nodes_alone(self):
85
node = factory.make_node()
86
NodeUserData.objects.set_user_data(node, b'intact')
87
NodeUserData.objects.set_user_data(factory.make_node(), b'unrelated')
88
self.assertEqual(b'intact', NodeUserData.objects.get(node=node).data)
90
def test_get_user_data_retrieves_data(self):
91
node = factory.make_node()
93
NodeUserData.objects.set_user_data(node, data)
94
self.assertEqual(data, NodeUserData.objects.get_user_data(node))
96
def test_get_user_data_raises_DoesNotExist_if_not_found(self):
97
node = factory.make_node()
99
NodeUserData.DoesNotExist,
100
NodeUserData.objects.get_user_data, node)
102
def test_get_user_data_ignores_other_nodes(self):
103
node = factory.make_node()
105
NodeUserData.objects.set_user_data(node, data)
106
NodeUserData.objects.set_user_data(factory.make_node(), b'unrelated')
107
self.assertEqual(data, NodeUserData.objects.get_user_data(node))
109
def test_has_user_data_returns_False_if_node_has_no_user_data(self):
111
NodeUserData.objects.has_user_data(factory.make_node()))
113
def test_has_user_data_returns_True_if_node_has_user_data(self):
114
node = factory.make_node()
115
NodeUserData.objects.set_user_data(node, b"This node has user data.")
116
self.assertTrue(NodeUserData.objects.has_user_data(node))