示例#1
0
class ErrorTestCase(unittest.TestCase):

    def setUp(self):
        self.client = WSGIClient(main)

    def tearDown(self):
        del self.client
        self.client = None

    def test_error_400(self):
        """ Ensure bad request page is rendered.
        """
        assert 400 == self.client.get('/en/error/400')
        assert 'Code 400' in self.client.content

    def test_error_403(self):
        """ Ensure forbidden page is rendered.
        """
        assert 403 == self.client.get('/en/error/403')
        assert 'Code 403' in self.client.content

    def test_error_404(self):
        """ Ensure not found page is rendered.
        """
        assert 404 == self.client.get('/en/error/404')
        assert 'Code 404' in self.client.content

    def test_route_not_found(self):
        """ Ensure not found page is rendered.
        """
        self.client.get('/test-not-found')
        assert 404 == self.client.follow()
        assert 'Code 404' in self.client.content

    def test_error_500(self):
        """ Ensure internal error page is rendered.
        """
        assert 500 == self.client.get('/en/error/500')
        assert 'Code 500' in self.client.content

    def test_space_around_newline(self):
        """ space around newline in markup should not be removed
        """
        self.client.get('/en/error/404')
        r = re.compile('been\s+removed')
        assert r.search(self.client.content)

    def test_extra_whitespace(self):
        for url in [
            '/en/error/400',
            '/en/error/403',
            '/en/error/404',
            '/en/error/500',
        ]:
            self.client.get(url)
            assert not extra_whitespace(self.client.content)
示例#2
0
class SignOutTestCase(unittest.TestCase, SignInMixin, SignOutMixin):

    def setUp(self):
        self.client = WSGIClient(main)

    def tearDown(self):
        del self.client
        self.client = None

    def test_signout_user(self):
        """ Ensure sigout is successful.
        """
        self.signin('demo', 'P@ssw0rd')
        assert 200 == self.client.follow()
        self.signout()
示例#3
0
    class SignInAJAXTestCase(unittest.TestCase, SignInMixin):

        def setUp(self):
            self.client = WSGIClient(main)

        def tearDown(self):
            del self.client
            self.client = None

        def test_ajax_validation_errors(self):
            """ Ensure sigin page displays field validation errors
                on AJAX call.
            """
            assert 200 == self.ajax_signin('', '')
            errors = self.client.json.errors
            assert 2 == len(errors)
            assert AUTH_COOKIE not in self.client.cookies

        def test_ajax_unknown_user(self):
            """ Ensure sigin page displays general error message
                on AJAX call.
            """
            assert 200 == self.ajax_signin('test', 'password')
            errors = self.client.json.errors
            assert '__ERROR__' in errors
            assert AUTH_COOKIE not in self.client.cookies

        def test_ajax_valid_user(self):
            """ Ensure sigin is successful.
            """
            assert 207 == self.ajax_signin('demo', 'P@ssw0rd')
            assert 200 == self.client.follow()
            assert AUTH_COOKIE in self.client.cookies
            assert XSRF_NAME not in self.client.cookies
            assert 'Welcome <b>demo' in self.client.content

        def test_ajax_xrsf_token_invalid(self):
            client = self.client
            assert 200 == client.get('/en/signin')
            page = SignInPage(client)
            client.cookies.clear()
            assert 207 == page.ajax_submit()
            assert 200 == client.follow()
            SignInPage(client)
示例#4
0
class ErrorTestCase(unittest.TestCase):

    def setUp(self):
        self.client = WSGIClient(main)

    def tearDown(self):
        del self.client
        self.client = None

    def test_error_400(self):
        """ Ensure bad request page is rendered.
        """
        assert 400 == self.client.get('/error/400')
        assert 'Code 400' in self.client.content

    def test_error_403(self):
        """ Ensure forbidden page is rendered.
        """
        assert 403 == self.client.get('/error/403')
        assert 'Code 403' in self.client.content

    def test_error_404(self):
        """ Ensure not found page is rendered.
        """
        assert 404 == self.client.get('/error/404')
        assert 'Code 404' in self.client.content

    def test_route_not_found(self):
        """ Ensure not found page is rendered.
        """
        self.client.get('/test-not-found')
        assert 404 == self.client.follow()
        assert 'Code 404' in self.client.content

    def test_error_500(self):
        """ Ensure internal error page is rendered.
        """
        assert 500 == self.client.get('/error/500')
        assert 'Code 500' in self.client.content

# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4:
示例#5
0
class ErrorTestCase(unittest.TestCase):
    def setUp(self):
        self.client = WSGIClient(main)

    def tearDown(self):
        del self.client
        self.client = None

    def test_error_400(self):
        """ Ensure bad request page is rendered.
        """
        assert 400 == self.client.get('/error/400')
        assert 'Code 400' in self.client.content

    def test_error_403(self):
        """ Ensure forbidden page is rendered.
        """
        assert 403 == self.client.get('/error/403')
        assert 'Code 403' in self.client.content

    def test_error_404(self):
        """ Ensure not found page is rendered.
        """
        assert 404 == self.client.get('/error/404')
        assert 'Code 404' in self.client.content

    def test_route_not_found(self):
        """ Ensure not found page is rendered.
        """
        self.client.get('/test-not-found')
        assert 404 == self.client.follow()
        assert 'Code 404' in self.client.content

    def test_error_500(self):
        """ Ensure internal error page is rendered.
        """
        assert 500 == self.client.get('/error/500')
        assert 'Code 500' in self.client.content


# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4:
示例#6
0
class ErrorTestCase(unittest.TestCase):
    def setUp(self):
        self.client = WSGIClient(main)

    def tearDown(self):
        del self.client
        self.client = None

    def test_error_400(self):
        """ Ensure bad request page is rendered.
        """
        assert 400 == self.client.get("/error/400")
        assert "Code 400" in self.client.content

    def test_error_403(self):
        """ Ensure forbidden page is rendered.
        """
        assert 403 == self.client.get("/error/403")
        assert "Code 403" in self.client.content

    def test_error_404(self):
        """ Ensure not found page is rendered.
        """
        assert 404 == self.client.get("/error/404")
        assert "Code 404" in self.client.content

    def test_route_not_found(self):
        """ Ensure not found page is rendered.
        """
        self.client.get("/test-not-found")
        assert 404 == self.client.follow()
        assert "Code 404" in self.client.content

    def test_error_500(self):
        """ Ensure internal error page is rendered.
        """
        assert 500 == self.client.get("/error/500")
        assert "Code 500" in self.client.content
示例#7
0
class SignUpTestCase(unittest.TestCase, SignInMixin, SignUpMixin,
                     SignOutMixin):

    def setUp(self):
        self.client = WSGIClient(main)

    def tearDown(self):
        del self.client
        self.client = None

    def test_validation_errors(self):
        """ Ensure signup page displays field validation errors.
        """
        errors = self.signup()
        assert 6 == len(errors)
        assert AUTH_COOKIE not in self.client.cookies
        assert 'class="error"' in self.client.content

    def test_already_registered(self):
        """ Ensure signup page displays general error message.
        """
        errors = self.signup(
            username='******',
            display_name='Demo',
            email='*****@*****.**',
            date_of_birth='1984/11/14',
            password='******',
            confirm_password='******',
            answer='7')
        assert ['username'] == errors
        assert AUTH_COOKIE not in self.client.cookies

    def test_registration_succeed(self):
        """ Ensure if all supplied information is valid than
            user is registered and logged in.
        """
        errors = self.signup(
            username='******',
            display_name='John Smith',
            email='*****@*****.**',
            date_of_birth='1987/2/7',
            password='******',
            confirm_password='******',
            answer='7')
        assert not errors
        assert 200 == self.client.follow()
        assert AUTH_COOKIE in self.client.cookies
        assert RESUBMISSION_NAME not in self.client.cookies
        assert 'Welcome <b>John Smith' in self.client.content

    def test_lockout_quota(self):
        """ Ensure signup quata is reached.
        """
        from config import config
        mode = config.get('runtime', 'lockout')
        self.client.environ['REMOTE_ADDR'] = '192.168.10.101'
        if mode == 'ignore':
            return

        errors = self.signup(
            username='******',
            display_name='Joe Smith',
            email='*****@*****.**',
            date_of_birth='1980/4/5',
            password='******',
            confirm_password='******',
            answer='7')
        assert not errors
        assert 200 == self.client.follow()
        assert AUTH_COOKIE in self.client.cookies
        self.signout()

        errors = self.signup(
            username='******',
            display_name='Jassy Smith',
            email='*****@*****.**',
            date_of_birth='1982/7/17',
            password='******',
            confirm_password='******',
            answer='7')
        assert not errors
        assert 200 == self.client.follow()
        assert AUTH_COOKIE in self.client.cookies
        self.signout()

        self.signup(
            username='******',
            display_name='Jack Smith',
            email='*****@*****.**',
            date_of_birth='1981/3/18',
            password='******',
            confirm_password='******',
            answer='7')
        # after 2nd attempt the access is forbidden
        assert 403 == self.client.follow()

    def test_if_authenticated_redirect(self):
        """ If user is already authenticated redirect
            to default page.
        """
        self.signin('demo', 'P@ssw0rd')
        assert 200 == self.client.follow()
        self.client.get('/en/signup')
        assert 200 == self.client.follow()

    def test_resubmission_token_invalid(self):
        client = self.client
        assert 200 == client.get('/en/signup')
        page = SignUpPage(client)
        client.cookies[RESUBMISSION_NAME] = '100'
        page.submit()
        SignUpPage(client)
示例#8
0
class SignInTestCase(unittest.TestCase, SignInMixin):

    def setUp(self):
        self.client = WSGIClient(main)

    def tearDown(self):
        del self.client
        self.client = None

    def test_validation_errors(self):
        """ Ensure sigin page displays field validation errors.
        """
        errors = self.signin('', '')
        assert 2 == len(errors)
        assert AUTH_COOKIE not in self.client.cookies
        assert 'class="error"' in self.client.content

    def test_unknown_user(self):
        """ Ensure sigin page displays general error message.
        """
        errors = self.signin('test', 'password')
        assert not errors
        assert AUTH_COOKIE not in self.client.cookies
        assert 'class="error-message"' in self.client.content

    def test_lockout_guard(self):
        """ Ensure sigin lockout guard is reached.
        """
        from config import config
        mode = config.get('runtime', 'lockout')
        self.client.environ['REMOTE_ADDR'] = '192.168.10.101'
        if mode == 'ignore':
            return

        self.client.environ['REMOTE_ADDR'] = '192.168.10.101'
        errors = self.signin('test', 'password')
        assert not errors
        assert AUTH_COOKIE not in self.client.cookies
        assert 'class="error-message"' in self.client.content

        self.signin('test', 'password')

        self.signin('test', 'password')
        assert 'class="error-message"' in self.client.content

        # after 3rd attempt the access is forbidden
        self.signin('test', 'password')
        assert 403 == self.client.follow()

    def test_valid_user(self):
        """ Ensure sigin is successful.
        """
        self.signin('demo', 'P@ssw0rd')
        assert 200 == self.client.follow()
        assert AUTH_COOKIE in self.client.cookies
        assert XSRF_NAME not in self.client.cookies
        assert 'Welcome <b>demo' in self.client.content

    def test_if_authenticated_redirect(self):
        """ If user is already authenticated redirect
            to default page.
        """
        self.signin('demo', 'P@ssw0rd')
        assert 200 == self.client.follow()
        self.client.get('/en/signin')
        assert 200 == self.client.follow()

    def test_xrsf_token_invalid(self):
        client = self.client
        assert 200 == client.get('/en/signin')
        page = SignInPage(client)
        client.cookies.clear()
        page.submit()
        assert 200 == client.follow()
        SignInPage(client)