12
12
__metaclass__ = type
15
from django.db import IntegrityError
15
from django.core.exceptions import ValidationError
16
16
from django.http import Http404
17
17
from maasserver.testing.factory import factory
18
from maastesting.testcase import TestCase
18
from maastesting.djangotestcase import DjangoTestCase
19
19
from metadataserver.models import (
20
20
NodeCommissionResult,
26
class TestNodeKeyManager(TestCase):
25
class TestNodeKeyManager(DjangoTestCase):
26
# Scheduled for model migration on 2012-07-04
27
27
"""Test NodeKeyManager."""
30
super(TestNodeKeyManager, self).setUp()
32
29
def test_get_token_for_node_registers_node_key(self):
33
30
node = factory.make_node()
34
31
token = NodeKey.objects.get_token_for_node(node)
72
69
NodeKey.objects.get_node_for_key(key)).key)
75
class TestNodeUserDataManager(TestCase):
76
"""Test NodeUserDataManager."""
79
super(TestNodeUserDataManager, self).setUp()
81
def test_set_user_data_creates_new_nodeuserdata_if_needed(self):
82
node = factory.make_node()
84
NodeUserData.objects.set_user_data(node, data)
85
self.assertEqual(data, NodeUserData.objects.get(node=node).data)
87
def test_set_user_data_overwrites_existing_userdata(self):
88
node = factory.make_node()
90
NodeUserData.objects.set_user_data(node, b'old data')
91
NodeUserData.objects.set_user_data(node, data)
92
self.assertEqual(data, NodeUserData.objects.get(node=node).data)
94
def test_set_user_data_leaves_data_for_other_nodes_alone(self):
95
node = factory.make_node()
96
NodeUserData.objects.set_user_data(node, b'intact')
97
NodeUserData.objects.set_user_data(factory.make_node(), b'unrelated')
98
self.assertEqual(b'intact', NodeUserData.objects.get(node=node).data)
100
def test_set_user_data_to_None_removes_user_data(self):
101
node = factory.make_node()
102
NodeUserData.objects.set_user_data(node, b'original')
103
NodeUserData.objects.set_user_data(node, None)
104
self.assertItemsEqual([], NodeUserData.objects.filter(node=node))
106
def test_set_user_data_to_None_when_none_exists_does_nothing(self):
107
node = factory.make_node()
108
NodeUserData.objects.set_user_data(node, None)
109
self.assertItemsEqual([], NodeUserData.objects.filter(node=node))
111
def test_get_user_data_retrieves_data(self):
112
node = factory.make_node()
114
NodeUserData.objects.set_user_data(node, data)
115
self.assertEqual(data, NodeUserData.objects.get_user_data(node))
117
def test_get_user_data_raises_DoesNotExist_if_not_found(self):
118
node = factory.make_node()
120
NodeUserData.DoesNotExist,
121
NodeUserData.objects.get_user_data, node)
123
def test_get_user_data_ignores_other_nodes(self):
124
node = factory.make_node()
126
NodeUserData.objects.set_user_data(node, data)
127
NodeUserData.objects.set_user_data(factory.make_node(), b'unrelated')
128
self.assertEqual(data, NodeUserData.objects.get_user_data(node))
130
def test_has_user_data_returns_False_if_node_has_no_user_data(self):
132
NodeUserData.objects.has_user_data(factory.make_node()))
134
def test_has_user_data_returns_True_if_node_has_user_data(self):
135
node = factory.make_node()
136
NodeUserData.objects.set_user_data(node, b"This node has user data.")
137
self.assertTrue(NodeUserData.objects.has_user_data(node))
140
class TestNodeCommissionResult(TestCase):
72
class TestNodeCommissionResult(DjangoTestCase):
141
73
"""Test the NodeCommissionResult model."""
143
75
def test_can_store_data(self):