Statistics
| Branch: | Tag: | Revision:

root / snf-pithos-app / pithos / api / test / top_level.py @ 7e402b46

History | View | Annotate | Download (2.9 kB)

1 2e208584 Sofia Papagiannaki
#!/usr/bin/env python
2 2e208584 Sofia Papagiannaki
#coding=utf8
3 2e208584 Sofia Papagiannaki
4 2e208584 Sofia Papagiannaki
# Copyright 2011-2013 GRNET S.A. All rights reserved.
5 2e208584 Sofia Papagiannaki
#
6 2e208584 Sofia Papagiannaki
# Redistribution and use in source and binary forms, with or
7 2e208584 Sofia Papagiannaki
# without modification, are permitted provided that the following
8 2e208584 Sofia Papagiannaki
# conditions are met:
9 2e208584 Sofia Papagiannaki
#
10 2e208584 Sofia Papagiannaki
#   1. Redistributions of source code must retain the above
11 2e208584 Sofia Papagiannaki
#      copyright notice, this list of conditions and the following
12 2e208584 Sofia Papagiannaki
#      disclaimer.
13 2e208584 Sofia Papagiannaki
#
14 2e208584 Sofia Papagiannaki
#   2. Redistributions in binary form must reproduce the above
15 2e208584 Sofia Papagiannaki
#      copyright notice, this list of conditions and the following
16 2e208584 Sofia Papagiannaki
#      disclaimer in the documentation and/or other materials
17 2e208584 Sofia Papagiannaki
#      provided with the distribution.
18 2e208584 Sofia Papagiannaki
#
19 2e208584 Sofia Papagiannaki
# THIS SOFTWARE IS PROVIDED BY GRNET S.A. ``AS IS'' AND ANY EXPRESS
20 2e208584 Sofia Papagiannaki
# OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
21 2e208584 Sofia Papagiannaki
# WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
22 2e208584 Sofia Papagiannaki
# PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL GRNET S.A OR
23 2e208584 Sofia Papagiannaki
# CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
24 2e208584 Sofia Papagiannaki
# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
25 2e208584 Sofia Papagiannaki
# LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
26 2e208584 Sofia Papagiannaki
# USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED
27 2e208584 Sofia Papagiannaki
# AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
28 2e208584 Sofia Papagiannaki
# LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
29 2e208584 Sofia Papagiannaki
# ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
30 2e208584 Sofia Papagiannaki
# POSSIBILITY OF SUCH DAMAGE.
31 2e208584 Sofia Papagiannaki
#
32 2e208584 Sofia Papagiannaki
# The views and conclusions contained in the software and
33 2e208584 Sofia Papagiannaki
# documentation are those of the authors and should not be
34 2e208584 Sofia Papagiannaki
# interpreted as representing official policies, either expressed
35 2e208584 Sofia Papagiannaki
# or implied, of GRNET S.A.
36 2e208584 Sofia Papagiannaki
37 2e208584 Sofia Papagiannaki
from pithos.api.test import PithosAPITest
38 2e208584 Sofia Papagiannaki
39 2e208584 Sofia Papagiannaki
from synnefo.lib import join_urls
40 2e208584 Sofia Papagiannaki
41 2e208584 Sofia Papagiannaki
class TopLevel(PithosAPITest):
42 2e208584 Sofia Papagiannaki
    def test_not_allowed_method(self):
43 5775b7fb Sofia Papagiannaki
        url = join_urls(self.pithos_path, '/')
44 5775b7fb Sofia Papagiannaki
        r = self.head(url)
45 2aba7764 Sofia Papagiannaki
        self.assertEqual(r.status_code, 405)
46 2aba7764 Sofia Papagiannaki
        self.assertTrue('Allow' in r)
47 2aba7764 Sofia Papagiannaki
        self.assertEqual(r['Allow'], 'GET')
48 5775b7fb Sofia Papagiannaki
        r = self.put(url, data='')
49 2aba7764 Sofia Papagiannaki
        self.assertEqual(r.status_code, 405)
50 2aba7764 Sofia Papagiannaki
        self.assertTrue('Allow' in r)
51 2aba7764 Sofia Papagiannaki
        self.assertEqual(r['Allow'], 'GET')
52 5775b7fb Sofia Papagiannaki
        r = self.post(url, data='')
53 2aba7764 Sofia Papagiannaki
        self.assertEqual(r.status_code, 405)
54 2aba7764 Sofia Papagiannaki
        self.assertTrue('Allow' in r)
55 2aba7764 Sofia Papagiannaki
        self.assertEqual(r['Allow'], 'GET')
56 5775b7fb Sofia Papagiannaki
        r = self.delete(url)
57 2aba7764 Sofia Papagiannaki
        self.assertEqual(r.status_code, 405)
58 2aba7764 Sofia Papagiannaki
        self.assertTrue('Allow' in r)
59 2aba7764 Sofia Papagiannaki
        self.assertEqual(r['Allow'], 'GET')
60 2aba7764 Sofia Papagiannaki
61 2e208584 Sofia Papagiannaki
62 2e208584 Sofia Papagiannaki
    def test_authenticate(self):
63 5775b7fb Sofia Papagiannaki
        url = join_urls(self.pithos_path, '/')
64 5775b7fb Sofia Papagiannaki
        r = self.get(url, token=None)
65 2e208584 Sofia Papagiannaki
        self.assertEqual(r.status_code, 400)
66 2e208584 Sofia Papagiannaki
67 5775b7fb Sofia Papagiannaki
        r = self.get(url, token=None, HTTP_X_AUTH_USER=self.user)
68 2e208584 Sofia Papagiannaki
        self.assertEqual(r.status_code, 400)
69 2e208584 Sofia Papagiannaki
70 5775b7fb Sofia Papagiannaki
        r = self.get(url, token=None, HTTP_X_AUTH_USER=self.user,
71 2e208584 Sofia Papagiannaki
                     HTTP_X_AUTH_KEY='DummyToken')
72 2e208584 Sofia Papagiannaki
        self.assertEqual(r.status_code, 204)
73 2e208584 Sofia Papagiannaki
        self.assertTrue('X-Auth-Token' in r)
74 2e208584 Sofia Papagiannaki
        self.assertTrue(r['X-Auth-Token'], 'DummyToken')