Beispiel #1
0
    def test_course_page(self):
        """
        Check out a course front-page
        """
        _, c = create_offering()
        
        client = Client()
        # not logged in: should be redirected to login page
        response = client.get(c.get_absolute_url())
        self.assertEqual(response.status_code, 302)

        # log in as student "0aaa0"
        client.login_user("0aaa0")
        p = Person.objects.get(userid="0aaa0")

        # not in the course: should get 403 Forbidden
        response = client.get(c.get_absolute_url())
        self.assertEqual(response.status_code, 403)
        
        # add to course and try again
        m = Member(person=p, offering=c, role="STUD", credits=3, career="UGRD", added_reason="UNK")
        m.save()
        response = client.get(c.get_absolute_url())
        self.assertEqual(response.status_code, 200)
        validate_content(self, response.content, c.get_absolute_url())

        # dropped students should be forbidden
        m.role="DROP"
        m.save()
        response = client.get(c.get_absolute_url())
        self.assertEqual(response.status_code, 403)
Beispiel #2
0
    def test_course_page(self):
        """
        Check out a course front-page
        """
        _, c = create_offering()
        
        client = Client()
        # not logged in: should be redirected to login page
        response = client.get(c.get_absolute_url())
        self.assertEqual(response.status_code, 302)

        # log in as student "0aaa0"
        client.login_user("0aaa0")
        p = Person.objects.get(userid="0aaa0")

        # not in the course: should get 403 Forbidden
        response = client.get(c.get_absolute_url())
        self.assertEqual(response.status_code, 403)
        
        # add to course and try again
        m = Member(person=p, offering=c, role="STUD", credits=3, career="UGRD", added_reason="UNK")
        m.save()
        response = client.get(c.get_absolute_url())
        self.assertEqual(response.status_code, 200)
        validate_content(self, response.content, c.get_absolute_url())

        # dropped students should be forbidden
        m.role="DROP"
        m.save()
        response = client.get(c.get_absolute_url())
        self.assertEqual(response.status_code, 403)
Beispiel #3
0
    def test_staff_page(self):
        """
        Check the requires_course_staff_by_slug decorator.
        """
        # a URL and some members/non-members
        url = reverse('grades.views.class_list', kwargs={'course_slug': TEST_COURSE_SLUG})
        instr = "ggbaker"
        ta = Member.objects.filter(offering__slug=TEST_COURSE_SLUG, role='TA')[0].person.userid
        student = "0aaa0"
        nobody = "0bbb6"
        
        client = Client()

        # try without logging in
        response = client.get(url)
        self.assertEquals(response.status_code, 302)
        # try as instructor
        client.login_user(instr)
        response = client.get(url)
        self.assertEquals(response.status_code, 200)
        validate_content(self, response.content, url)
        # try as TA
        client.login_user(ta)
        response = client.get(url)
        self.assertEquals(response.status_code, 200)
        # try as student
        client.login_user(student)
        response = client.get(url)
        self.assertEquals(response.status_code, 403)
        # try as non-member
        client.login_user(nobody)
        response = client.get(url)
        self.assertEquals(response.status_code, 403)
Beispiel #4
0
    def test_staff_page(self):
        """
        Check the requires_course_staff_by_slug decorator.
        """
        # a URL and some members/non-members
        url = reverse('grades.views.class_list', kwargs={'course_slug': TEST_COURSE_SLUG})
        instr = "ggbaker"
        ta = Member.objects.filter(offering__slug=TEST_COURSE_SLUG, role='TA')[0].person.userid
        student = "0aaa0"
        nobody = "0bbb6"
        
        client = Client()

        # try without logging in
        response = client.get(url)
        self.assertEquals(response.status_code, 302)
        # try as instructor
        client.login_user(instr)
        response = client.get(url)
        self.assertEquals(response.status_code, 200)
        validate_content(self, response.content, url)
        # try as TA
        client.login_user(ta)
        response = client.get(url)
        self.assertEquals(response.status_code, 200)
        # try as student
        client.login_user(student)
        response = client.get(url)
        self.assertEquals(response.status_code, 403)
        # try as non-member
        client.login_user(nobody)
        response = client.get(url)
        self.assertEquals(response.status_code, 403)
Beispiel #5
0
    def test_roles(self):
        # create person an give sysadmin role
        p1 = Person(emplid=210012345,
                    userid="test1",
                    last_name="Lname",
                    first_name="Fname",
                    pref_first_name="Fn",
                    middle_name="M")
        p1.save()

        unit = Unit.objects.get(label="UNIV")
        r = Role(person=p1, role="SYSA", unit=unit, expiry=TEST_ROLE_EXPIRY)
        r.save()
        self.assertEqual(str(r), "Lname, Fname (System Administrator, UNIV)")

        # check the front end
        client = Client()
        client.login_user("test1")

        url = reverse('sysadmin:role_list')
        response = basic_page_tests(self, client, url)
        self.assertContains(
            response, 'Lname, Fname</a></td>\n  <td>System Administrator</td>')

        # add a new role with the front end
        oldcount = Role.objects.filter(role='FAC').count()
        url = reverse('sysadmin:new_role')
        response = basic_page_tests(self, client, url)

        response = client.post(url, {
            'person': '33333333',
            'role': 'FAC',
            'unit': 2
        })
        self.assertEqual(response.status_code, 200)
        validate_content(self, response.content, url)
        self.assertTrue(
            b"could not import DB2 module" in response.content
            or b"could not connect to reporting database" in response.content
            or b"Could not find this emplid." in response.content or
            b"Reporting database access has been disabled" in response.content
            or b"Could not communicate with reporting database"
            in response.content)

        response = client.post(
            url, {
                'person': p1.emplid,
                'role': 'FAC',
                'unit': unit.id,
                'expiry': str(TEST_ROLE_EXPIRY)
            })
        self.assertEqual(response.status_code, 302)

        # make sure the role is now there
        self.assertEqual(Role.objects.filter(role='FAC').count(), oldcount + 1)
Beispiel #6
0
    def test_staff_page(self):
        """
        Check the requires_course_staff_by_slug decorator.
        """
        # force the test course's semester to be "current" so the TA still has access
        semester = CourseOffering.objects.get(slug=TEST_COURSE_SLUG).semester
        today = datetime.date.today()
        semester.start = today
        semester.end = today + datetime.timedelta(days=90)
        semester.save()

        # a URL and some members/non-members
        url = reverse('offering:class_list',
                      kwargs={'course_slug': TEST_COURSE_SLUG})
        instr = "ggbaker"
        ta = Member.objects.filter(offering__slug=TEST_COURSE_SLUG,
                                   role='TA')[0].person.userid
        student = "0aaa0"
        nobody = "0bbb6"

        client = Client()

        # try without logging in
        response = client.get(url)
        self.assertEqual(response.status_code, 302)
        # try as instructor
        client.login_user(instr)
        response = client.get(url)
        self.assertEqual(response.status_code, 200)
        validate_content(self, response.content, url)
        # try as TA.
        client.login_user(ta)
        response = client.get(url)
        self.assertEqual(response.status_code, 200)
        # try as student
        client.login_user(student)
        response = client.get(url)
        self.assertEqual(response.status_code, 403)
        # try as non-member
        client.login_user(nobody)
        response = client.get(url)
        self.assertEqual(response.status_code, 403)
        # try again as TA, but cheat by changing the semester for the course first.  We also have to change something
        # else, in this case, the section, in order to avoid violating unique constraints when saving it.
        c = CourseOffering.objects.get(slug=TEST_COURSE_SLUG)
        c.semester = Semester.current()
        c.section = 'q100'
        c.save()
        client.login_user(ta)
        response = client.get(url)
        self.assertEqual(response.status_code, 200)
Beispiel #7
0
    def test_front_page(self):
        # log in as student in the course
        userid = Member.objects.filter(offering__slug=TEST_COURSE_SLUG, role="STUD")[0].person.userid
        client = Client()
        client.login_user(userid)

        response = client.get("/")
        self.assertEqual(response.status_code, 200)
        
        # this student is in this course: check for a link to its page (but it only appears after start of semester)
        c = CourseOffering.objects.get(slug=TEST_COURSE_SLUG)
        if c.semester.start < datetime.date.today():
            self.assertContains(response, '<a href="%s"' % (c.get_absolute_url()) )

        validate_content(self, response.content, "index page")
Beispiel #8
0
    def test_front_page(self):
        # log in as student in the course
        userid = Member.objects.filter(offering__slug=TEST_COURSE_SLUG, role="STUD")[0].person.userid
        client = Client()
        client.login_user(userid)

        response = client.get("/")
        self.assertEqual(response.status_code, 200)
        
        # this student is in this course: check for a link to its page (but it only appears after start of semester)
        c = CourseOffering.objects.get(slug=TEST_COURSE_SLUG)
        if c.semester.start < datetime.date.today():
            self.assertContains(response, '<a href="%s"' % (c.get_absolute_url()) )

        validate_content(self, response.content, "index page")
Beispiel #9
0
    def test_staff_page(self):
        """
        Check the requires_course_staff_by_slug decorator.
        """
        # a URL and some members/non-members
        url = reverse('offering:class_list', kwargs={'course_slug': TEST_COURSE_SLUG})
        instr = "ggbaker"
        ta = Member.objects.filter(offering__slug=TEST_COURSE_SLUG, role='TA')[0].person.userid
        student = "0aaa0"
        nobody = "0bbb6"
        
        client = Client()

        # try without logging in
        response = client.get(url)
        self.assertEqual(response.status_code, 302)
        # try as instructor
        client.login_user(instr)
        response = client.get(url)
        self.assertEqual(response.status_code, 200)
        validate_content(self, response.content, url)
        # try as TA.
        client.login_user(ta)
        response = client.get(url)
        self.assertEqual(response.status_code, 200)
        # try as student
        client.login_user(student)
        response = client.get(url)
        self.assertEqual(response.status_code, 403)
        # try as non-member
        client.login_user(nobody)
        response = client.get(url)
        self.assertEqual(response.status_code, 403)
        # try again as TA, but cheat by changing the semester for the course first.  We also have to change something
        # else, in this case, the section, in order to avoid violating unique constraints when saving it.
        c = CourseOffering.objects.get(slug=TEST_COURSE_SLUG)
        c.semester = Semester.current()
        c.section = 'q100'
        c.save()
        client.login_user(ta)
        response = client.get(url)
        self.assertEqual(response.status_code, 200)
Beispiel #10
0
    def test_roles(self):
        # create person an give sysadmin role
        p1 = Person(emplid=210012345, userid="test1",
                last_name="Lname", first_name="Fname", pref_first_name="Fn", middle_name="M")
        p1.save()
        
        unit = Unit.objects.get(label="UNIV")
        r = Role(person=p1, role="SYSA", unit=unit)
        r.save()
        self.assertEqual( str(r), "Lname, Fname (System Administrator, UNIV)")

        # check the front end
        client = Client()
        client.login_user("test1")

        url = reverse('coredata.views.role_list')
        response = basic_page_tests(self, client, url)
        self.assertContains(response, 'Lname, Fname</a></td><td>System Administrator</td>')

        # add a new role with the front end
        oldcount = Role.objects.filter(role='FAC').count()
        url = reverse('coredata.views.new_role')
        response = basic_page_tests(self, client, url)
        
        response = client.post(url, {'person':'33333333', 'role':'FAC', 'unit': 2})
        self.assertEquals(response.status_code, 200)
        validate_content(self, response.content, url)
        self.assertTrue("could not import DB2 module" in response.content
                        or "could not connect to reporting database" in response.content
                        or "Could not find this emplid." in response.content
                        or "Reporting database access has been disabled" in response.content
                        or "Could not communicate with reporting database" in response.content)

        response = client.post(url, {'person':p1.emplid, 'role':'FAC', 'unit':unit.id})
        self.assertEquals(response.status_code, 302)
        
        # make sure the role is now there
        self.assertEquals( Role.objects.filter(role='FAC').count(), oldcount+1)