Statistics
| Branch: | Tag: | Revision:

root / snf-cyclades-app / synnefo / logic / tests / utils_tests.py @ 6e9255ab

History | View | Annotate | Download (3.6 kB)

1 b66e4833 Christos Stavrakakis
# Copyright 2011-2012 GRNET S.A. All rights reserved.
2 b66e4833 Christos Stavrakakis
#
3 b66e4833 Christos Stavrakakis
# Redistribution and use in source and binary forms, with or
4 b66e4833 Christos Stavrakakis
# without modification, are permitted provided that the following
5 b66e4833 Christos Stavrakakis
# conditions are met:
6 b66e4833 Christos Stavrakakis
#
7 b66e4833 Christos Stavrakakis
#   1. Redistributions of source code must retain the above
8 b66e4833 Christos Stavrakakis
#      copyright notice, this list of conditions and the following
9 b66e4833 Christos Stavrakakis
#      disclaimer.
10 b66e4833 Christos Stavrakakis
#
11 b66e4833 Christos Stavrakakis
#   2. Redistributions in binary form must reproduce the above
12 b66e4833 Christos Stavrakakis
#      copyright notice, this list of conditions and the following
13 b66e4833 Christos Stavrakakis
#      disclaimer in the documentation and/or other materials
14 b66e4833 Christos Stavrakakis
#      provided with the distribution.
15 b66e4833 Christos Stavrakakis
#
16 b66e4833 Christos Stavrakakis
# THIS SOFTWARE IS PROVIDED BY GRNET S.A. ``AS IS'' AND ANY EXPRESS
17 b66e4833 Christos Stavrakakis
# OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
18 b66e4833 Christos Stavrakakis
# WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
19 b66e4833 Christos Stavrakakis
# PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL GRNET S.A OR
20 b66e4833 Christos Stavrakakis
# CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
21 b66e4833 Christos Stavrakakis
# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
22 b66e4833 Christos Stavrakakis
# LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
23 b66e4833 Christos Stavrakakis
# USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED
24 b66e4833 Christos Stavrakakis
# AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
25 b66e4833 Christos Stavrakakis
# LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
26 b66e4833 Christos Stavrakakis
# ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
27 b66e4833 Christos Stavrakakis
# POSSIBILITY OF SUCH DAMAGE.
28 b66e4833 Christos Stavrakakis
#
29 b66e4833 Christos Stavrakakis
# The views and conclusions contained in the software and
30 b66e4833 Christos Stavrakakis
# documentation are those of the authors and should not be
31 b66e4833 Christos Stavrakakis
# interpreted as representing official policies, either expressed
32 b66e4833 Christos Stavrakakis
# or implied, of GRNET S.A.
33 b66e4833 Christos Stavrakakis
34 b66e4833 Christos Stavrakakis
from django.test import TestCase
35 b66e4833 Christos Stavrakakis
36 b66e4833 Christos Stavrakakis
from synnefo.logic import utils
37 b66e4833 Christos Stavrakakis
from django.conf import settings
38 b66e4833 Christos Stavrakakis
from synnefo.db.models import VirtualMachine, Network
39 b66e4833 Christos Stavrakakis
from synnefo.db.models_factory import VirtualMachineFactory
40 b66e4833 Christos Stavrakakis
41 b66e4833 Christos Stavrakakis
42 b66e4833 Christos Stavrakakis
class NameConversionTest(TestCase):
43 b66e4833 Christos Stavrakakis
    def setUp(self):
44 b66e4833 Christos Stavrakakis
        settings.BACKEND_PREFIX_ID = 'snf-'
45 b66e4833 Christos Stavrakakis
46 b66e4833 Christos Stavrakakis
    def test_id_from_iname(self):
47 b66e4833 Christos Stavrakakis
        self.assertEqual(utils.id_from_instance_name('snf-42'), 42)
48 b66e4833 Christos Stavrakakis
        for name in [None, 'foo', 'snf42', 'snf-a', 'snf-snf-42', 1234]:
49 b66e4833 Christos Stavrakakis
            self.assertRaises(VirtualMachine.InvalidBackendIdError,
50 b66e4833 Christos Stavrakakis
                              utils.id_from_instance_name, '')
51 b66e4833 Christos Stavrakakis
52 b66e4833 Christos Stavrakakis
    def test_iname_from_id(self):
53 b66e4833 Christos Stavrakakis
        self.assertEqual(utils.id_to_instance_name(42), 'snf-42')
54 b66e4833 Christos Stavrakakis
55 b66e4833 Christos Stavrakakis
    def test_id_from_net_name(self):
56 b66e4833 Christos Stavrakakis
        self.assertEqual(utils.id_from_network_name('snf-net-42'), 42)
57 b66e4833 Christos Stavrakakis
        for name in [None, 'foo', 'snf42', 'snf-net-a', 'snf-snf-42', 1234]:
58 b66e4833 Christos Stavrakakis
            self.assertRaises(Network.InvalidBackendIdError,
59 b66e4833 Christos Stavrakakis
                              utils.id_from_network_name, '')
60 b66e4833 Christos Stavrakakis
61 b66e4833 Christos Stavrakakis
    def test_net_name_from_id(self):
62 b66e4833 Christos Stavrakakis
            self.assertEqual(utils.id_to_network_name(42), 'snf-net-42')
63 b66e4833 Christos Stavrakakis
64 b66e4833 Christos Stavrakakis
65 b66e4833 Christos Stavrakakis
class APIStateTest(TestCase):
66 b66e4833 Christos Stavrakakis
    def test_correct_state(self):
67 b66e4833 Christos Stavrakakis
        vm = VirtualMachineFactory()
68 b66e4833 Christos Stavrakakis
        vm.operstate = 'foo'
69 b66e4833 Christos Stavrakakis
        self.assertEqual(utils.get_rsapi_state(vm), "UNKNOWN")
70 b66e4833 Christos Stavrakakis
        vm.operstate = "STARTED"
71 b66e4833 Christos Stavrakakis
        vm.deleted = True
72 b66e4833 Christos Stavrakakis
        self.assertEqual(utils.get_rsapi_state(vm), "DELETED")
73 b66e4833 Christos Stavrakakis
        vm.deleted = False
74 b66e4833 Christos Stavrakakis
        vm.backendopcode = "OP_INSTANCE_REBOOT"
75 b66e4833 Christos Stavrakakis
        vm.backendjobstatus = "waiting"
76 b66e4833 Christos Stavrakakis
        self.assertEqual(utils.get_rsapi_state(vm), "REBOOT")
77 b66e4833 Christos Stavrakakis
78 b66e4833 Christos Stavrakakis
79 b66e4833 Christos Stavrakakis
class HidePass(TestCase):
80 b66e4833 Christos Stavrakakis
    def test_no_osparams(self):
81 b66e4833 Christos Stavrakakis
        foo = {'foo': 'bar'}
82 b66e4833 Christos Stavrakakis
        self.assertTrue(foo is utils.hide_pass(foo))
83 b66e4833 Christos Stavrakakis
        foo = {'osparams': {}, 'bar': 'foo'}
84 b66e4833 Christos Stavrakakis
        self.assertTrue(foo is utils.hide_pass(foo))
85 b66e4833 Christos Stavrakakis
86 b66e4833 Christos Stavrakakis
    def test_hidden_pass(self):
87 b66e4833 Christos Stavrakakis
        foo = {'osparams': {'img_passwd': 'pass'}, 'bar': 'foo'}
88 b66e4833 Christos Stavrakakis
        after = {'osparams': {'img_passwd': 'xxxxxxxx'}, 'bar': 'foo'}
89 b66e4833 Christos Stavrakakis
        self.assertEqual(after, utils.hide_pass(foo))