cubicweb/devtools/test/unittest_httptest.py
author Denis Laxalde <denis.laxalde@logilab.fr>
Fri, 05 Apr 2019 17:58:19 +0200
changeset 12567 26744ad37953
parent 12530 9d88e1177c35
permissions -rw-r--r--
Drop python2 support This mostly consists in removing the dependency on "six" and updating the code to use only Python3 idioms. Notice that we previously used TemporaryDirectory from cubicweb.devtools.testlib for compatibility with Python2. We now directly import it from tempfile.
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
6438
abae10f81a85 [js test] cleanup, move anonymous_logged handling to the test class (easier to control there
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents: 6424
diff changeset
     1
# copyright 2010 LOGILAB S.A. (Paris, FRANCE), all rights reserved.
abae10f81a85 [js test] cleanup, move anonymous_logged handling to the test class (easier to control there
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents: 6424
diff changeset
     2
# contact http://www.logilab.fr/ -- mailto:contact@logilab.fr
abae10f81a85 [js test] cleanup, move anonymous_logged handling to the test class (easier to control there
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents: 6424
diff changeset
     3
#
abae10f81a85 [js test] cleanup, move anonymous_logged handling to the test class (easier to control there
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents: 6424
diff changeset
     4
# This file is part of CubicWeb.
abae10f81a85 [js test] cleanup, move anonymous_logged handling to the test class (easier to control there
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents: 6424
diff changeset
     5
#
abae10f81a85 [js test] cleanup, move anonymous_logged handling to the test class (easier to control there
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents: 6424
diff changeset
     6
# CubicWeb is free software: you can redistribute it and/or modify it under the
abae10f81a85 [js test] cleanup, move anonymous_logged handling to the test class (easier to control there
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents: 6424
diff changeset
     7
# terms of the GNU Lesser General Public License as published by the Free
abae10f81a85 [js test] cleanup, move anonymous_logged handling to the test class (easier to control there
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents: 6424
diff changeset
     8
# Software Foundation, either version 2.1 of the License, or (at your option)
abae10f81a85 [js test] cleanup, move anonymous_logged handling to the test class (easier to control there
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents: 6424
diff changeset
     9
# any later version.
abae10f81a85 [js test] cleanup, move anonymous_logged handling to the test class (easier to control there
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents: 6424
diff changeset
    10
#
abae10f81a85 [js test] cleanup, move anonymous_logged handling to the test class (easier to control there
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents: 6424
diff changeset
    11
# CubicWeb is distributed in the hope that it will be useful, but WITHOUT
abae10f81a85 [js test] cleanup, move anonymous_logged handling to the test class (easier to control there
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents: 6424
diff changeset
    12
# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
abae10f81a85 [js test] cleanup, move anonymous_logged handling to the test class (easier to control there
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents: 6424
diff changeset
    13
# FOR A PARTICULAR PURPOSE.  See the GNU Lesser General Public License for more
abae10f81a85 [js test] cleanup, move anonymous_logged handling to the test class (easier to control there
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents: 6424
diff changeset
    14
# details.
abae10f81a85 [js test] cleanup, move anonymous_logged handling to the test class (easier to control there
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents: 6424
diff changeset
    15
#
abae10f81a85 [js test] cleanup, move anonymous_logged handling to the test class (easier to control there
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents: 6424
diff changeset
    16
# You should have received a copy of the GNU Lesser General Public License along
abae10f81a85 [js test] cleanup, move anonymous_logged handling to the test class (easier to control there
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents: 6424
diff changeset
    17
# with CubicWeb.  If not, see <http://www.gnu.org/licenses/>.
abae10f81a85 [js test] cleanup, move anonymous_logged handling to the test class (easier to control there
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents: 6424
diff changeset
    18
"""unittest for cubicweb.devtools.httptest module"""
abae10f81a85 [js test] cleanup, move anonymous_logged handling to the test class (easier to control there
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents: 6424
diff changeset
    19
12567
26744ad37953 Drop python2 support
Denis Laxalde <denis.laxalde@logilab.fr>
parents: 12530
diff changeset
    20
import http.client
5654
8bb34548be86 [web test] Add a CubicWebServerTC class to run test with a cw web serveur available.
Pierre-Yves David <pierre-yves.david@logilab.fr>
parents:
diff changeset
    21
7053
0673419b3066 [test] Improve tagging and error message of TwistedCWIdentTC
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents: 6438
diff changeset
    22
from logilab.common.testlib import Tags
12530
9d88e1177c35 Remove Twisted web server
Denis Laxalde <denis.laxalde@logilab.fr>
parents: 11162
diff changeset
    23
from cubicweb.devtools.httptest import CubicWebServerTC
5654
8bb34548be86 [web test] Add a CubicWebServerTC class to run test with a cw web serveur available.
Pierre-Yves David <pierre-yves.david@logilab.fr>
parents:
diff changeset
    24
8bb34548be86 [web test] Add a CubicWebServerTC class to run test with a cw web serveur available.
Pierre-Yves David <pierre-yves.david@logilab.fr>
parents:
diff changeset
    25
12530
9d88e1177c35 Remove Twisted web server
Denis Laxalde <denis.laxalde@logilab.fr>
parents: 11162
diff changeset
    26
class WsgiCWAnonTC(CubicWebServerTC):
5654
8bb34548be86 [web test] Add a CubicWebServerTC class to run test with a cw web serveur available.
Pierre-Yves David <pierre-yves.david@logilab.fr>
parents:
diff changeset
    27
8bb34548be86 [web test] Add a CubicWebServerTC class to run test with a cw web serveur available.
Pierre-Yves David <pierre-yves.david@logilab.fr>
parents:
diff changeset
    28
    def test_response(self):
8bb34548be86 [web test] Add a CubicWebServerTC class to run test with a cw web serveur available.
Pierre-Yves David <pierre-yves.david@logilab.fr>
parents:
diff changeset
    29
        try:
8bb34548be86 [web test] Add a CubicWebServerTC class to run test with a cw web serveur available.
Pierre-Yves David <pierre-yves.david@logilab.fr>
parents:
diff changeset
    30
            response = self.web_get()
12567
26744ad37953 Drop python2 support
Denis Laxalde <denis.laxalde@logilab.fr>
parents: 12530
diff changeset
    31
        except http.client.NotConnected as ex:
5654
8bb34548be86 [web test] Add a CubicWebServerTC class to run test with a cw web serveur available.
Pierre-Yves David <pierre-yves.david@logilab.fr>
parents:
diff changeset
    32
            self.fail("Can't connection to test server: %s" % ex)
8bb34548be86 [web test] Add a CubicWebServerTC class to run test with a cw web serveur available.
Pierre-Yves David <pierre-yves.david@logilab.fr>
parents:
diff changeset
    33
8bb34548be86 [web test] Add a CubicWebServerTC class to run test with a cw web serveur available.
Pierre-Yves David <pierre-yves.david@logilab.fr>
parents:
diff changeset
    34
    def test_response_anon(self):
8bb34548be86 [web test] Add a CubicWebServerTC class to run test with a cw web serveur available.
Pierre-Yves David <pierre-yves.david@logilab.fr>
parents:
diff changeset
    35
        response = self.web_get()
12567
26744ad37953 Drop python2 support
Denis Laxalde <denis.laxalde@logilab.fr>
parents: 12530
diff changeset
    36
        self.assertEqual(response.status, http.client.OK)
5654
8bb34548be86 [web test] Add a CubicWebServerTC class to run test with a cw web serveur available.
Pierre-Yves David <pierre-yves.david@logilab.fr>
parents:
diff changeset
    37
8bb34548be86 [web test] Add a CubicWebServerTC class to run test with a cw web serveur available.
Pierre-Yves David <pierre-yves.david@logilab.fr>
parents:
diff changeset
    38
    def test_base_url(self):
11161
dd1933f56f4e [devtools/test] fix bytes vs text in test_base_url
Julien Cristau <julien.cristau@logilab.fr>
parents: 11057
diff changeset
    39
        if self.config['base-url'] not in self.web_get().read().decode('ascii'):
5654
8bb34548be86 [web test] Add a CubicWebServerTC class to run test with a cw web serveur available.
Pierre-Yves David <pierre-yves.david@logilab.fr>
parents:
diff changeset
    40
            self.fail('no mention of base url in retrieved page')
8bb34548be86 [web test] Add a CubicWebServerTC class to run test with a cw web serveur available.
Pierre-Yves David <pierre-yves.david@logilab.fr>
parents:
diff changeset
    41
8bb34548be86 [web test] Add a CubicWebServerTC class to run test with a cw web serveur available.
Pierre-Yves David <pierre-yves.david@logilab.fr>
parents:
diff changeset
    42
12530
9d88e1177c35 Remove Twisted web server
Denis Laxalde <denis.laxalde@logilab.fr>
parents: 11162
diff changeset
    43
class WsgiCWIdentTC(CubicWebServerTC):
11162
d60d181b2b17 [devtools/test] duplicate CubicWebServerTC tests for CubicWebWsgiTC
Julien Cristau <julien.cristau@logilab.fr>
parents: 11161
diff changeset
    44
    test_db_id = 'httptest-cwident'
d60d181b2b17 [devtools/test] duplicate CubicWebServerTC tests for CubicWebWsgiTC
Julien Cristau <julien.cristau@logilab.fr>
parents: 11161
diff changeset
    45
    anonymous_allowed = False
d60d181b2b17 [devtools/test] duplicate CubicWebServerTC tests for CubicWebWsgiTC
Julien Cristau <julien.cristau@logilab.fr>
parents: 11161
diff changeset
    46
    tags = CubicWebServerTC.tags | Tags(('auth',))
d60d181b2b17 [devtools/test] duplicate CubicWebServerTC tests for CubicWebWsgiTC
Julien Cristau <julien.cristau@logilab.fr>
parents: 11161
diff changeset
    47
d60d181b2b17 [devtools/test] duplicate CubicWebServerTC tests for CubicWebWsgiTC
Julien Cristau <julien.cristau@logilab.fr>
parents: 11161
diff changeset
    48
    def test_response_denied(self):
d60d181b2b17 [devtools/test] duplicate CubicWebServerTC tests for CubicWebWsgiTC
Julien Cristau <julien.cristau@logilab.fr>
parents: 11161
diff changeset
    49
        response = self.web_get()
12567
26744ad37953 Drop python2 support
Denis Laxalde <denis.laxalde@logilab.fr>
parents: 12530
diff changeset
    50
        self.assertEqual(response.status, http.client.FORBIDDEN)
11162
d60d181b2b17 [devtools/test] duplicate CubicWebServerTC tests for CubicWebWsgiTC
Julien Cristau <julien.cristau@logilab.fr>
parents: 11161
diff changeset
    51
d60d181b2b17 [devtools/test] duplicate CubicWebServerTC tests for CubicWebWsgiTC
Julien Cristau <julien.cristau@logilab.fr>
parents: 11161
diff changeset
    52
    def test_login(self):
d60d181b2b17 [devtools/test] duplicate CubicWebServerTC tests for CubicWebWsgiTC
Julien Cristau <julien.cristau@logilab.fr>
parents: 11161
diff changeset
    53
        response = self.web_get()
12567
26744ad37953 Drop python2 support
Denis Laxalde <denis.laxalde@logilab.fr>
parents: 12530
diff changeset
    54
        if response.status != http.client.FORBIDDEN:
11162
d60d181b2b17 [devtools/test] duplicate CubicWebServerTC tests for CubicWebWsgiTC
Julien Cristau <julien.cristau@logilab.fr>
parents: 11161
diff changeset
    55
            self.skipTest('Already authenticated, "test_response_denied" must have failed')
d60d181b2b17 [devtools/test] duplicate CubicWebServerTC tests for CubicWebWsgiTC
Julien Cristau <julien.cristau@logilab.fr>
parents: 11161
diff changeset
    56
        # login
d60d181b2b17 [devtools/test] duplicate CubicWebServerTC tests for CubicWebWsgiTC
Julien Cristau <julien.cristau@logilab.fr>
parents: 11161
diff changeset
    57
        self.web_login(self.admlogin, self.admpassword)
d60d181b2b17 [devtools/test] duplicate CubicWebServerTC tests for CubicWebWsgiTC
Julien Cristau <julien.cristau@logilab.fr>
parents: 11161
diff changeset
    58
        response = self.web_get()
12567
26744ad37953 Drop python2 support
Denis Laxalde <denis.laxalde@logilab.fr>
parents: 12530
diff changeset
    59
        self.assertEqual(response.status, http.client.OK, response.body)
11162
d60d181b2b17 [devtools/test] duplicate CubicWebServerTC tests for CubicWebWsgiTC
Julien Cristau <julien.cristau@logilab.fr>
parents: 11161
diff changeset
    60
        # logout
d60d181b2b17 [devtools/test] duplicate CubicWebServerTC tests for CubicWebWsgiTC
Julien Cristau <julien.cristau@logilab.fr>
parents: 11161
diff changeset
    61
        self.web_logout()
d60d181b2b17 [devtools/test] duplicate CubicWebServerTC tests for CubicWebWsgiTC
Julien Cristau <julien.cristau@logilab.fr>
parents: 11161
diff changeset
    62
        response = self.web_get()
12567
26744ad37953 Drop python2 support
Denis Laxalde <denis.laxalde@logilab.fr>
parents: 12530
diff changeset
    63
        self.assertEqual(response.status, http.client.FORBIDDEN, response.body)
5654
8bb34548be86 [web test] Add a CubicWebServerTC class to run test with a cw web serveur available.
Pierre-Yves David <pierre-yves.david@logilab.fr>
parents:
diff changeset
    64
8bb34548be86 [web test] Add a CubicWebServerTC class to run test with a cw web serveur available.
Pierre-Yves David <pierre-yves.david@logilab.fr>
parents:
diff changeset
    65
8bb34548be86 [web test] Add a CubicWebServerTC class to run test with a cw web serveur available.
Pierre-Yves David <pierre-yves.david@logilab.fr>
parents:
diff changeset
    66
if __name__ == '__main__':
6424
f443a2b8a5c7 [devtools] refactor http server initialization in a much saner way
Julien Jehannet <julien.jehannet@logilab.fr>
parents: 6340
diff changeset
    67
    from logilab.common.testlib import unittest_main
5654
8bb34548be86 [web test] Add a CubicWebServerTC class to run test with a cw web serveur available.
Pierre-Yves David <pierre-yves.david@logilab.fr>
parents:
diff changeset
    68
    unittest_main()