def create_or_update_project(self, project): conn = LDAPClient() try: conn.get_group('cn=%s' % project.pid) except: conn.add_group(cn=str(project.pid)) users = [str(person.user.username) for person in project.users.all()] if users: conn.update_group('cn=%s' % project.pid, memberUid=users) else: conn.update_group('cn=%s' % project.pid, memberUid='') del(conn)
def test_admin_add_project_pid(self): projects = Project.objects.count() self.client.login(username='******', password='******') response = self.client.get(reverse('kg_add_project')) self.failUnlessEqual(response.status_code, 200) form_data = { 'pid': "Enrico", 'name': 'Test Project 4', 'description': 'Test', 'institute': 1, 'leaders': [2,3], 'machine_category': 1, 'machine_categories': [1,], 'start_date': datetime.date.today(), } response = self.client.post(reverse('kg_add_project'), form_data) self.failUnlessEqual(response.status_code, 302) project = Project.objects.get(pid="Enrico") self.assertEqual(project.is_active, True) self.assertEqual(project.date_approved, datetime.date.today()) self.assertEqual(project.approved_by, Person.objects.get(user__username='******')) self.assertEqual(project.pid, 'Enrico') self.assertTrue(Person.objects.get(pk=2) in project.leaders.all()) self.assertTrue(Person.objects.get(pk=3) in project.leaders.all()) lcon = LDAPClient() lgroup = lcon.get_group('cn=%s' % project.pid) self.assertEqual(lgroup.cn, project.pid)
def test_admin_edit_project(self): project = Project.objects.get(pk='TestProject1') self.assertEqual(project.is_active, True) self.assertEqual(project.name, 'Test Project 1') self.assertTrue(Person.objects.get(pk=1) in project.leaders.all()) self.assertTrue(Person.objects.get(pk=3) in project.users.all()) self.client.login(username='******', password='******') response = self.client.get(reverse('kg_edit_project', args=['TestProject1'])) self.failUnlessEqual(response.status_code, 200) form_data = { 'name': 'Test Project 1 was 4', 'description': 'Test', 'institute': 1, 'leaders': [2,3], 'machine_category': 1, 'machine_categories': [1,], 'start_date': project.start_date, } response = self.client.post(reverse('kg_edit_project', args=['TestProject1']), form_data) self.failUnlessEqual(response.status_code, 302) project = Project.objects.get(pk='TestProject1') self.assertEqual(project.is_active, True) self.assertTrue(Person.objects.get(pk=2) in project.leaders.all()) self.assertTrue(Person.objects.get(pk=3) in project.leaders.all()) lcon = LDAPClient() lgroup = lcon.get_group('cn=%s' % project.pid) self.assertEqual(lgroup.cn, project.pid)
def get_name(self, software): conn = LDAPClient() try: ldap_group = conn.get_group('gidNumber=%s' % software.gid) return ldap_group.cn except DoesNotExistException: return 'No LDAP Group'
def create_institute(self, institute): conn = LDAPClient() if institute.gid: try: lgroup = conn.get_group("gidNumber=%s" % institute.gid) gid = int(lgroup.gidNumber) except DoesNotExistException: gid = conn.add_group(cn=str(institute.name.lower().replace(" ", "")), gidNumber=str(institute.gid)) else: try: lgroup = conn.get_group("cn=%s" % str(institute.name.lower().replace(" ", ""))) gid = int(lgroup.gidNumber) except DoesNotExistException: gid = conn.add_group(cn=str(institute.name.lower().replace(" ", ""))) del (conn) return gid
def test_add_existing_gid(self): lcon = LDAPClient() gid = lcon.add_group(cn='testinstituteother', gidNumber=['700']) institute = Institute.objects.create(name='Test Institute 26', gid=700) lgroup = lcon.get_group('gidNumber=%s' % institute.gid) self.assertEqual(gid, institute.gid) self.assertEqual(gid, 700)
def test_add_existing_name(self): lcon = LDAPClient() gid = lcon.add_group(cn='testinstitute27') institute = Institute.objects.create(name='Test Institute 27') lgroup = lcon.get_group('gidNumber=%s' % institute.gid) self.assertEqual(gid, institute.gid) self.assertEqual(institute.name.lower().replace(' ' , ''), lgroup.cn)
def create_software(self, software): conn = LDAPClient() if software.gid: try: lgroup = conn.get_group("gidNumber=%s" % software.gid) gid = int(lgroup.gidNumber) except DoesNotExistException: gid = conn.add_group(cn=str(software.name.lower().replace(' ', '')), gidNumber=str(software.gid)) else: if not software.restricted and software.softwarelicense_set.count() == 0: return None try: lgroup = conn.get_group("cn=%s" % str(software.name.lower().replace(' ', ''))) gid = int(lgroup.gidNumber) except DoesNotExistException: gid = conn.add_group(cn=str(software.name.lower().replace(' ', ''))) del(conn) return gid
def stest_register_project(self): self.assertEquals(len(mail.outbox), 0) response = self.client.get(reverse('project_registration')) self.failUnlessEqual(response.status_code, 200) hash_ = response.content[response.content.find('name="captcha_0" value="')+24:response.content.find('name="captcha_0" value="')+64] try: captcha_text = CaptchaStore.objects.get(hashkey=hash_).response except: self.fail() form_data = { 'title' : 'Mr', 'first_name': 'Jim', 'last_name': 'Bob', 'position': 'Researcher', 'institute': 1, 'department': 'Maths', 'email': '*****@*****.**', 'country': 'AU', 'telephone': '4444444', 'username': '******', 'password1': 'Exaiquouxei0', 'password2': 'Exaiquouxei0', 'needs_account': True, 'project_name': 'Lasers', 'project_institute': 1, 'project_description': 'Lasers are cool', 'tos': True, 'captcha_0': hash_, 'captcha_1': captcha_text, } response = self.client.post(reverse('project_registration'), form_data, follow=True) project_request = ProjectCreateRequest.objects.get(pk=1) self.failUnlessEqual(response.redirect_chain[0][0], 'http://testserver' + reverse('project_created', args=[project_request.id])) self.failUnlessEqual(response.status_code, 200) self.assertEquals(len(mail.outbox), 1) self.assertEquals(mail.outbox[0].subject, 'TestOrg new project request') self.assertEquals(mail.outbox[0].from_email, settings.ACCOUNTS_EMAIL) self.assertEquals(mail.outbox[0].to[0], '*****@*****.**') person = Person.objects.get(user__username='******') self.failUnlessEqual(project_request.needs_account, True) self.failUnlessEqual(person.is_active, False) project = Project.objects.get(name='Lasers') self.failUnlessEqual(project.is_active, False) self.failUnlessEqual(project.pid, 'pExam0001') self.failUnlessEqual(project.projectcreaterequest_set.all()[0], person.projectcreaterequest_set.all()[0]) lcon = LDAPClient() lgroup = lcon.get_group('cn=%s' % project.pid) self.failUnlessEqual(lgroup.cn, project.pid) # Delegate logs in to approve logged_in = self.client.login(username='******', password='******') self.failUnlessEqual(logged_in, True) response = self.client.get(reverse('user_project_request_detail', args=[project_request.id])) self.failUnlessEqual(response.status_code, 200) self.assertEquals(len(mail.outbox), 1) response = self.client.post(reverse('user_approve_project', args=[project_request.id])) self.failUnlessEqual(response.status_code, 302) self.failUnlessRaises(ProjectCreateRequest.DoesNotExist, ProjectCreateRequest.objects.get, pk=project_request.id) project = Project.objects.get(name='Lasers') self.failUnlessEqual(project.is_active, True) self.failUnlessEqual(project.users.all()[0], person) lgroup = lcon.get_group('cn=%s' % project.pid) lgroup_members = lcon.get_group_members('cn=%s' % project.pid) self.failUnlessEqual(lgroup_members[0].uid, project.users.all()[0].username) self.failUnlessEqual(lgroup.cn, project.pid) person = Person.objects.get(user__username='******') self.failUnlessEqual(person.is_active, True) self.assertEquals(len(mail.outbox), 2) self.assertEquals(mail.outbox[1].subject, 'TestOrg Project has been approved') self.assertEquals(mail.outbox[1].from_email, settings.ACCOUNTS_EMAIL) self.assertEquals(mail.outbox[1].to[0], '*****@*****.**')
def test_add_spaces(self): institute = Institute.objects.create(name='Test Institute 60') lcon = LDAPClient() lgroup = lcon.get_group('gidNumber=%s' % institute.gid) self.assertEqual(institute.name.lower().replace(' ' , ''), lgroup.cn)