def get_members(self, software): conn = LDAPClient() try: return conn.get_group_members('gidNumber=%s' % software.gid) except: return [] del(conn)
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], '*****@*****.**')