#!/usr/bin/env python3
# -*- coding: utf-8 -*-
#-------------------------------------------------------------------------------
# This file is part of Mentat system (https://mentat.cesnet.cz/).
#
# Copyright (C) since 2011 CESNET, z.s.p.o (http://www.ces.net/)
# Use of this source is governed by the MIT license, see LICENSE file.
#-------------------------------------------------------------------------------
"""
Basic proof of concept for Hawat unit tests.
"""
import unittest
#import logging
from mentat.datatype.sqldb import UserModel, GroupModel
import hawat.const
import hawat.test
import hawat.db
from hawat.test import HawatTestCase
from hawat.test.runner import TestRunnerMixin
#logging.disable(logging.CRITICAL+1000)
[docs]class AppTestCase(TestRunnerMixin, HawatTestCase):
"""
Class for testing :py:class:`hawat.base.HawatApp` application.
"""
[docs] def test_testenv(self):
"""
Test the test environment.
"""
with self.app.app_context():
result_users = hawat.db.db_session().query(UserModel).order_by(UserModel.login).all()
self.assertEqual(
len(result_users),
4
)
self.assertEqual(
list(map(lambda x: x.login, result_users)),
['admin', 'developer', 'maintainer', 'user']
)
result_groups = hawat.db.db_session().query(GroupModel).order_by(GroupModel.name).all()
self.assertEqual(
len(result_groups),
2
)
self.assertEqual(
list(map(lambda x: x.name, result_groups)),
['DEMO_GROUP_A', 'DEMO_GROUP_B']
)
[docs] def test_main_page(self):
"""
Test application homepage.
"""
response = self.client.get('/', follow_redirects=True)
self.assertEqual(response.status_code, 200)
self.assertTrue(b'Welcome!' in response.data)
[docs] def test_login_dev(self):
"""
Test login/logout with *auth_dev* module.
"""
response = self.login_dev(hawat.const.ROLE_ADMIN)
self.assertEqual(response.status_code, 200)
self.assertTrue(b'You have been successfully logged in as' in response.data)
response = self.logout()
self.assertEqual(response.status_code, 200)
self.assertTrue(b'You have been successfully logged out' in response.data)
[docs] def test_modules_mgmt(self):
"""
Basic tests of various pluggable modules.
"""
modlist = ('/users/list', '/groups/list', '/filters/list', '/networks/list')
response = self.login_dev(hawat.const.ROLE_ADMIN)
self.assertEqual(response.status_code, 200)
for mod in modlist:
response = self.client.get(mod, follow_redirects=True)
self.assertEqual(response.status_code, 200)
response = self.logout()
self.assertEqual(response.status_code, 200)
@hawat.test.do_as_user_decorator(hawat.const.ROLE_USER)
def test_modules_mgmt_user(self):
"""
Basic tests of various pluggable modules.
"""
modlist = ('/users/list', '/groups/list', '/filters/list', '/networks/list')
for mod in modlist:
response = self.client.get(mod, follow_redirects=True)
self.assertEqual(response.status_code, 403)
@hawat.test.do_as_user_decorator(hawat.const.ROLE_DEVELOPER)
def test_modules_mgmt_developer(self):
"""
Basic tests of various pluggable modules.
"""
modlist = ('/users/list', '/groups/list', '/filters/list', '/networks/list')
for mod in modlist:
response = self.client.get(mod, follow_redirects=True)
self.assertEqual(response.status_code, 403)
@hawat.test.do_as_user_decorator(hawat.const.ROLE_MAINTAINER)
def test_modules_mgmt_maintainer(self):
"""
Basic tests of various pluggable modules.
"""
modlist = ('/users/list', '/groups/list', '/filters/list', '/networks/list')
for mod in modlist:
response = self.client.get(mod, follow_redirects=True)
self.assertEqual(response.status_code, 200)
@hawat.test.do_as_user_decorator(hawat.const.ROLE_ADMIN)
def test_modules_mgmt_admin(self):
"""
Basic tests of various pluggable modules.
"""
modlist = ('/users/list', '/groups/list', '/filters/list', '/networks/list')
for mod in modlist:
response = self.client.get(mod, follow_redirects=True)
self.assertEqual(response.status_code, 200)
#-------------------------------------------------------------------------------
if __name__ == "__main__":
unittest.main()