#!/usr/share/ucs-test/runner python
## -*- coding: utf-8 -*-
## desc: Computers(schools) module
## roles: [domaincontroller_master, domaincontroller_slave]
## tags: [apptest, ucsschool, SKIP]
## exposure: dangerous
## packages: [ucs-school-radius-802.1x]

from essential.internetrule import InternetRule
from essential.radius import test_peap_auth
from essential.workgroup import Workgroup
import univention.testing.ucr as ucr_test
import univention.testing.ucsschool as utu
import univention.testing.utils as utils


def main():
	with utu.UCSTestSchool() as schoolenv:
		with ucr_test.UCSTestConfigRegistry() as ucr:
			school, oudn = schoolenv.create_ou(name_edudc=ucr.get('hostname'))

			tea, tea_dn = schoolenv.create_user(school, is_teacher=True)
			tea2, tea2_dn = schoolenv.create_user(school, is_teacher=True)
			stu, stu_dn = schoolenv.create_user(school)
			stu2, stu2_dn = schoolenv.create_user(school)

			group = Workgroup(school, members=[tea_dn, stu_dn])
			group.create()
			rule = InternetRule(wlan=True)
			rule.define()

			group2 = Workgroup(school, members=[tea2_dn, stu2_dn])
			group2.create()
			rule2 = InternetRule(wlan=False)
			rule2.define()

			utils.wait_for_replication_and_postrun()

			rule.assign(school, group.name, 'workgroup')
			rule2.assign(school, group2.name, 'workgroup')

			utils.wait_for_replication_and_postrun()

			radius_secret = 'testing123'  # parameter set in  /etc/freeradius/clients.conf
			password = 'univention'
			test_couples = [(tea, True), (stu, True), (tea2, False), (stu2, False)]

			# Testing loop
			for username, should_succeed in test_couples:
				test_peap_auth(username, password, radius_secret, should_succeed=should_succeed)


if __name__ == '__main__':
	main()
