Statistics
| Branch: | Tag: | Revision:

root / snf-cyclades-app / synnefo / api / test / versions.py @ a95c82a9

History | View | Annotate | Download (2.7 kB)

1 d2b8ec7b Christos Stavrakakis
# Copyright 2012-2013 GRNET S.A. All rights reserved.
2 d2b8ec7b Christos Stavrakakis
#
3 d2b8ec7b Christos Stavrakakis
# Redistribution and use in source and binary forms, with or
4 d2b8ec7b Christos Stavrakakis
# without modification, are permitted provided that the following
5 d2b8ec7b Christos Stavrakakis
# conditions are met:
6 d2b8ec7b Christos Stavrakakis
#
7 d2b8ec7b Christos Stavrakakis
#   1. Redistributions of source code must retain the above
8 d2b8ec7b Christos Stavrakakis
#      copyright notice, this list of conditions and the following
9 d2b8ec7b Christos Stavrakakis
#      disclaimer.
10 d2b8ec7b Christos Stavrakakis
#
11 d2b8ec7b Christos Stavrakakis
#   2. Redistributions in binary form must reproduce the above
12 d2b8ec7b Christos Stavrakakis
#      copyright notice, this list of conditions and the following
13 d2b8ec7b Christos Stavrakakis
#      disclaimer in the documentation and/or other materials
14 d2b8ec7b Christos Stavrakakis
#      provided with the distribution.
15 d2b8ec7b Christos Stavrakakis
#
16 d2b8ec7b Christos Stavrakakis
# THIS SOFTWARE IS PROVIDED BY GRNET S.A. ``AS IS'' AND ANY EXPRESS
17 d2b8ec7b Christos Stavrakakis
# OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
18 d2b8ec7b Christos Stavrakakis
# WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
19 d2b8ec7b Christos Stavrakakis
# PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL GRNET S.A OR
20 d2b8ec7b Christos Stavrakakis
# CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
21 d2b8ec7b Christos Stavrakakis
# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
22 d2b8ec7b Christos Stavrakakis
# LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
23 d2b8ec7b Christos Stavrakakis
# USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED
24 d2b8ec7b Christos Stavrakakis
# AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
25 d2b8ec7b Christos Stavrakakis
# LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
26 d2b8ec7b Christos Stavrakakis
# ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
27 d2b8ec7b Christos Stavrakakis
# POSSIBILITY OF SUCH DAMAGE.
28 d2b8ec7b Christos Stavrakakis
#
29 d2b8ec7b Christos Stavrakakis
# The views and conclusions contained in the software and
30 d2b8ec7b Christos Stavrakakis
# documentation are those of the authors and should not be
31 d2b8ec7b Christos Stavrakakis
# interpreted as representing official policies, either expressed
32 d2b8ec7b Christos Stavrakakis
# or implied, of GRNET S.A.
33 d2b8ec7b Christos Stavrakakis
34 d2b8ec7b Christos Stavrakakis
from django.utils import simplejson as json
35 d2b8ec7b Christos Stavrakakis
from django.test import TestCase
36 d2b8ec7b Christos Stavrakakis
from snf_django.utils.testing import astakos_user
37 2af5dc96 Georgios D. Tsoukalas
from synnefo.cyclades_settings import cyclades_services
38 2af5dc96 Georgios D. Tsoukalas
from synnefo.lib.services import get_service_path
39 a3accf03 Georgios D. Tsoukalas
from synnefo.lib import join_urls
40 a3accf03 Georgios D. Tsoukalas
41 d2b8ec7b Christos Stavrakakis
42 d2b8ec7b Christos Stavrakakis
class APITest(TestCase):
43 d2b8ec7b Christos Stavrakakis
    def test_api_version(self):
44 d2b8ec7b Christos Stavrakakis
        """Check API version."""
45 2af5dc96 Georgios D. Tsoukalas
        path = get_service_path(cyclades_services,
46 2af5dc96 Georgios D. Tsoukalas
                                'compute', version='v2.0')
47 d2b8ec7b Christos Stavrakakis
        with astakos_user('user'):
48 2af5dc96 Georgios D. Tsoukalas
            response = self.client.get(path)
49 d2b8ec7b Christos Stavrakakis
        self.assertEqual(response.status_code, 200)
50 d2b8ec7b Christos Stavrakakis
        api_version = json.loads(response.content)['version']
51 2af5dc96 Georgios D. Tsoukalas
        self.assertEqual(api_version['id'], 'v2.0')
52 d2b8ec7b Christos Stavrakakis
        self.assertEqual(api_version['status'], 'CURRENT')
53 a3accf03 Georgios D. Tsoukalas
54 a3accf03 Georgios D. Tsoukalas
    def test_catch_wrong_api_paths(self, *args):
55 a3accf03 Georgios D. Tsoukalas
        path = get_service_path(cyclades_services,
56 a3accf03 Georgios D. Tsoukalas
                                'compute', version='v2.0')
57 a3accf03 Georgios D. Tsoukalas
        response = self.client.get(join_urls(path, 'nonexistent'))
58 a3accf03 Georgios D. Tsoukalas
        self.assertEqual(response.status_code, 400)
59 a3accf03 Georgios D. Tsoukalas
        try:
60 a3accf03 Georgios D. Tsoukalas
            error = json.loads(response.content)
61 a3accf03 Georgios D. Tsoukalas
        except ValueError:
62 a3accf03 Georgios D. Tsoukalas
            self.assertTrue(False)