Ejemplo n.º 1
0
 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)
Ejemplo n.º 2
0
    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)
Ejemplo n.º 3
0
    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)
Ejemplo n.º 4
0
 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'
Ejemplo n.º 5
0
    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
Ejemplo n.º 6
0
    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) 
Ejemplo n.º 7
0
    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) 
Ejemplo n.º 8
0
    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
Ejemplo n.º 9
0
    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], '*****@*****.**')
Ejemplo n.º 10
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)