Refactoring of NetworkSettings to extend NetworkConfig
[snaps.git] / snaps / config / tests / keypair_tests.py
1 # Copyright (c) 2017 Cable Television Laboratories, Inc. ("CableLabs")
2 #                    and others.  All rights reserved.
3 #
4 # Licensed under the Apache License, Version 2.0 (the "License");
5 # you may not use this file except in compliance with the License.
6 # You may obtain a copy of the License at:
7 #
8 #     http://www.apache.org/licenses/LICENSE-2.0
9 #
10 # Unless required by applicable law or agreed to in writing, software
11 # distributed under the License is distributed on an "AS IS" BASIS,
12 # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 # See the License for the specific language governing permissions and
14 # limitations under the License.
15 import unittest
16
17 from snaps.config.keypair import KeypairConfigError, KeypairConfig
18
19
20 class KeypairConfigUnitTests(unittest.TestCase):
21     """
22     Tests the construction of the KeypairConfig class
23     """
24
25     def test_no_params(self):
26         with self.assertRaises(KeypairConfigError):
27             KeypairConfig()
28
29     def test_empty_config(self):
30         with self.assertRaises(KeypairConfigError):
31             KeypairConfig(**dict())
32
33     def test_small_key_size(self):
34         with self.assertRaises(KeypairConfigError):
35             KeypairConfig(name='foo', key_size=511)
36
37     def test_name_only(self):
38         settings = KeypairConfig(name='foo')
39         self.assertEqual('foo', settings.name)
40         self.assertEqual(1024, settings.key_size)
41         self.assertIsNone(settings.public_filepath)
42         self.assertIsNone(settings.private_filepath)
43         self.assertIsNone(settings.delete_on_clean)
44
45     def test_config_with_name_only(self):
46         settings = KeypairConfig(**{'name': 'foo'})
47         self.assertEqual('foo', settings.name)
48         self.assertEqual(1024, settings.key_size)
49         self.assertIsNone(settings.public_filepath)
50         self.assertIsNone(settings.private_filepath)
51         self.assertIsNone(settings.delete_on_clean)
52
53     def test_name_pub_only(self):
54         settings = KeypairConfig(name='foo', public_filepath='/foo/bar.pub')
55         self.assertEqual('foo', settings.name)
56         self.assertEqual(1024, settings.key_size)
57         self.assertEqual('/foo/bar.pub', settings.public_filepath)
58         self.assertIsNone(settings.private_filepath)
59         self.assertIsNone(settings.delete_on_clean)
60
61     def test_config_with_name_pub_only(self):
62         settings = KeypairConfig(
63             **{'name': 'foo', 'public_filepath': '/foo/bar.pub'})
64         self.assertEqual('foo', settings.name)
65         self.assertEqual(1024, settings.key_size)
66         self.assertEqual('/foo/bar.pub', settings.public_filepath)
67         self.assertIsNone(settings.private_filepath)
68         self.assertIsNone(settings.delete_on_clean)
69
70     def test_name_priv_only(self):
71         settings = KeypairConfig(name='foo', private_filepath='/foo/bar')
72         self.assertEqual('foo', settings.name)
73         self.assertEqual(1024, settings.key_size)
74         self.assertIsNone(settings.public_filepath)
75         self.assertEqual('/foo/bar', settings.private_filepath)
76         self.assertIsNone(settings.delete_on_clean)
77
78     def test_config_with_name_priv_only(self):
79         settings = KeypairConfig(
80             **{'name': 'foo', 'private_filepath': '/foo/bar'})
81         self.assertEqual('foo', settings.name)
82         self.assertEqual(1024, settings.key_size)
83         self.assertIsNone(settings.public_filepath)
84         self.assertEqual('/foo/bar', settings.private_filepath)
85         self.assertIsNone(settings.delete_on_clean)
86
87     def test_all_delete_bool(self):
88         settings = KeypairConfig(
89             name='foo', public_filepath='/foo/bar.pub',
90             private_filepath='/foo/bar', delete_on_clean=True,
91             key_size=999)
92         self.assertEqual('foo', settings.name)
93         self.assertEqual(999, settings.key_size)
94         self.assertEqual('/foo/bar.pub', settings.public_filepath)
95         self.assertEqual('/foo/bar', settings.private_filepath)
96         self.assertTrue(settings.delete_on_clean)
97
98     def test_all_delete_str_true_cap(self):
99         settings = KeypairConfig(
100             name='foo', public_filepath='/foo/bar.pub',
101             private_filepath='/foo/bar', delete_on_clean='True')
102         self.assertEqual('foo', settings.name)
103         self.assertEqual(1024, settings.key_size)
104         self.assertEqual('/foo/bar.pub', settings.public_filepath)
105         self.assertEqual('/foo/bar', settings.private_filepath)
106         self.assertTrue(settings.delete_on_clean)
107
108     def test_all_delete_str_true_lc(self):
109         settings = KeypairConfig(
110             name='foo', public_filepath='/foo/bar.pub',
111             private_filepath='/foo/bar', delete_on_clean='true')
112         self.assertEqual('foo', settings.name)
113         self.assertEqual(1024, settings.key_size)
114         self.assertEqual('/foo/bar.pub', settings.public_filepath)
115         self.assertEqual('/foo/bar', settings.private_filepath)
116         self.assertTrue(settings.delete_on_clean)
117
118     def test_all_delete_str_false_cap(self):
119         settings = KeypairConfig(
120             name='foo', public_filepath='/foo/bar.pub',
121             private_filepath='/foo/bar', delete_on_clean='False')
122         self.assertEqual('foo', settings.name)
123         self.assertEqual(1024, settings.key_size)
124         self.assertEqual('/foo/bar.pub', settings.public_filepath)
125         self.assertEqual('/foo/bar', settings.private_filepath)
126         self.assertFalse(settings.delete_on_clean)
127
128     def test_all_delete_str_false_lc(self):
129         settings = KeypairConfig(
130             name='foo', public_filepath='/foo/bar.pub',
131             private_filepath='/foo/bar', delete_on_clean='false',
132             key_size='999')
133         self.assertEqual('foo', settings.name)
134         self.assertEqual(999, settings.key_size)
135         self.assertEqual('/foo/bar.pub', settings.public_filepath)
136         self.assertEqual('/foo/bar', settings.private_filepath)
137         self.assertFalse(settings.delete_on_clean)
138
139     def test_config_all_delete_false_bool(self):
140         settings = KeypairConfig(
141             **{'name': 'foo', 'public_filepath': '/foo/bar.pub',
142                'private_filepath': '/foo/bar', 'delete_on_clean': False,
143                'key_size': 999})
144         self.assertEqual('foo', settings.name)
145         self.assertEqual(999, settings.key_size)
146         self.assertEqual('/foo/bar.pub', settings.public_filepath)
147         self.assertEqual('/foo/bar', settings.private_filepath)
148         self.assertFalse(settings.delete_on_clean)
149
150     def test_config_all_delete_false_str_cap(self):
151         settings = KeypairConfig(
152             **{'name': 'foo', 'public_filepath': '/foo/bar.pub',
153                'private_filepath': '/foo/bar', 'delete_on_clean': 'False'})
154         self.assertEqual('foo', settings.name)
155         self.assertEqual(1024, settings.key_size)
156         self.assertEqual('/foo/bar.pub', settings.public_filepath)
157         self.assertEqual('/foo/bar', settings.private_filepath)
158         self.assertFalse(settings.delete_on_clean)
159
160     def test_config_all_delete_false_str_lc(self):
161         settings = KeypairConfig(
162             **{'name': 'foo', 'public_filepath': '/foo/bar.pub',
163                'private_filepath': '/foo/bar', 'delete_on_clean': 'false'})
164         self.assertEqual('foo', settings.name)
165         self.assertEqual(1024, settings.key_size)
166         self.assertEqual('/foo/bar.pub', settings.public_filepath)
167         self.assertEqual('/foo/bar', settings.private_filepath)
168         self.assertFalse(settings.delete_on_clean)
169
170     def test_config_all_delete_false_str_foo(self):
171         settings = KeypairConfig(
172             **{'name': 'foo', 'public_filepath': '/foo/bar.pub',
173                'private_filepath': '/foo/bar', 'delete_on_clean': 'foo',
174                'key_size': '999'})
175         self.assertEqual('foo', settings.name)
176         self.assertEqual(999, settings.key_size)
177         self.assertEqual('/foo/bar.pub', settings.public_filepath)
178         self.assertEqual('/foo/bar', settings.private_filepath)
179         self.assertFalse(settings.delete_on_clean)