Exemplo n.º 1
0
    def test_render_list(self):
        u = UserFactory(username='******', first_name='Student',
                        last_name='One')
        u.set_password('test')
        u.save()
        self.assertTrue(
            self.api_client.client.login(username="******",
                                         password="******"))

        g1 = GroupFactory(name="group1")
        g2 = GroupFactory(name="group2")
        CourseFactory(title="Sample Course", faculty_group=g1, group=g2)
        u.groups.add(g2)
        UserFactory(username='******',
                    first_name='Instructor', last_name='One').groups.add(g2)
        UserFactory(username='******').groups.add(g2)
        UserFactory(username='******').groups.add(g2)
        UserFactory(username='******', first_name='Student',
                    last_name='Two').groups.add(g2)
        UserFactory(username='******',
                    first_name="Teacher's",
                    last_name=" Assistant").groups.add(g2)

        sample_course = Course.objects.get(title="Sample Course")

        members = UserResource().render_list(None, sample_course.members)

        self.assertEquals(len(members), 6)
        self.assertEquals(members[0]['public_name'], "test_instructor_two")
        self.assertEquals(members[1]['public_name'], "test_student_three")
        self.assertEquals(members[2]['public_name'], "Instructor One")
        self.assertEquals(members[3]['public_name'], "Student One")
        self.assertEquals(members[4]['public_name'], "Student Two")
        self.assertEquals(members[5]['public_name'], "Teacher's  Assistant")
Exemplo n.º 2
0
    def test_private_editors_are_owners(self):
        policy = PrivateEditorsAreOwners()
        collaboration = CollaborationFactory()
        course = None

        user = collaboration.user
        self.assertTrue(policy.read(collaboration, course, user))
        self.assertTrue(policy.edit(collaboration, course, user))
        self.assertTrue(policy.manage(collaboration, course, user))
        self.assertTrue(policy.delete(collaboration, course, user))

        user = UserFactory()  # random user
        self.assertFalse(policy.read(collaboration, course, user))
        self.assertFalse(policy.edit(collaboration, course, user))
        self.assertFalse(policy.manage(
            collaboration, course, user))
        self.assertFalse(policy.delete(
            collaboration, course, user))

        collaboration.group.user_set.add(user)  # now a group member
        self.assertTrue(policy.read(collaboration, course, user))
        self.assertTrue(policy.edit(collaboration, course, user))
        self.assertTrue(policy.manage(collaboration, course, user))
        self.assertTrue(policy.delete(collaboration, course, user))

        user = UserFactory(is_staff=True)
        self.assertTrue(policy.read(collaboration, course, user))
        self.assertFalse(policy.edit(collaboration, course, user))
        self.assertFalse(policy.manage(
            collaboration, course, user))
        self.assertFalse(policy.delete(
            collaboration, course, user))
Exemplo n.º 3
0
class LoggedInUserTestMixin(object):
    def setUp(self):
        self.u = UserFactory(username='******')
        self.u.set_password('test')
        self.u.save()
        login = self.client.login(username='******', password='******')
        assert(login is True)
Exemplo n.º 4
0
class LoggedInTestMixin(object):
    def setUp(self):
        self.u = UserFactory(username='******')
        self.u.set_password('test')
        self.u.save()
        login = self.client.login(username='******', password='******')
        assert (login is True)
Exemplo n.º 5
0
    def setUp(self):
        self.setup_sample_course()
        self.setup_alternate_course()

        self.superuser = UserFactory(is_staff=True, is_superuser=True)

        # instructor that sees both Sample Course & Alternate Course
        self.instructor_three = UserFactory(username='******')
        self.add_as_faculty(self.sample_course, self.instructor_three)
        self.add_as_faculty(self.alt_course, self.instructor_three)
Exemplo n.º 6
0
    def test_render_one(self):
        u = UserFactory(username='******', first_name='Student',
                        last_name='One')
        u.set_password('test')
        u.save()
        self.assertTrue(
            self.api_client.client.login(username="******",
                                         password="******"))

        student_one = User.objects.get(username='******')

        member = UserResource().render_one(None, student_one)

        self.assertEquals(member['public_name'], "Student One")
Exemplo n.º 7
0
    def test_update_someone_elses_sequence_asset(self):
        someone_else = UserFactory()
        sa = SequenceAssetFactory(author=someone_else)
        psa = ProjectSequenceAssetFactory(sequence_asset=sa)
        note = SherdNoteFactory()
        r = self.client.put(
            reverse('sequenceasset-detail', args=(sa.pk,)),
            {
                'course': sa.course.pk,
                'project': psa.project.pk,
                'spine': note.pk,
                'spine_volume': 100,
                'media_elements': [],
                'text_elements': [
                    {
                        'text': 'My text',
                        'start_time': Decimal('0'),
                        'end_time': Decimal('10'),
                    }
                ],
            }, format='json')

        self.assertEqual(r.status_code, 403)

        sa.refresh_from_db()
        self.assertEqual(sa.course, sa.course)
        self.assertEqual(sa.author, someone_else)
        self.assertEqual(sa.spine, None)
        self.assertEqual(sa.spine_volume, 80)
        self.assertEqual(SequenceAsset.objects.count(), 1)
        self.assertEqual(ProjectSequenceAsset.objects.count(), 1)
        self.assertEqual(SequenceTextElement.objects.count(), 0)
Exemplo n.º 8
0
 def setUp(self):
     self.u = UserFactory(username='******')
     self.u.set_password('test')
     self.u.save()
     login = self.client.login(username='******',
                               password='******')
     assert(login is True)
Exemplo n.º 9
0
    def test_user_activated_callback(self):
        course = CourseFactory(title='Mediathread Guest Sandbox')
        user = UserFactory()

        user_activated_callback(None, user, None)

        self.assertTrue(course.is_member(user))
Exemplo n.º 10
0
    def test_user_registered_callback(self):
        user = UserFactory()
        data = {'first_name': 'John',
                'last_name': 'Doe',
                'title': 'Professor',
                'institution': 'Columbia University',
                'referred_by': 'Sam Smith',
                'user_story': 'Sample user story'}

        request = RequestFactory().post('/', data)
        user_registered_callback(None, user, request)

        user.refresh_from_db()
        self.assertEquals(user.first_name, 'John')
        self.assertEquals(user.last_name, 'Doe')
        self.assertEquals(user.profile.title, 'Professor')
        self.assertEquals(user.profile.institution, 'Columbia University')
        self.assertEquals(user.profile.referred_by, 'Sam Smith')
        self.assertEquals(user.profile.user_story, 'Sample user story')
Exemplo n.º 11
0
    def test_request_superuser_nonclassmember_projectlist(self):
        su = UserFactory(is_staff=True, is_superuser=True)
        self.client.login(username=su.username, password='******')
        self.switch_course(self.client, self.sample_course)

        url = '/api/project/user/%s/' % su.username
        response = self.client.get(url, {},
                                   HTTP_X_REQUESTED_WITH='XMLHttpRequest')
        self.assertEquals(response.status_code, 200)
        the_json = json.loads(response.content)
        self.assertFalse('compositions' in the_json)
Exemplo n.º 12
0
    def test_render_one(self):
        u = UserFactory(username='******',
                        first_name='Student', last_name='One')
        self.assertTrue(
            self.client.login(username=u.username, password="******"))

        student_one = User.objects.get(username='******')

        member = UserResource().render_one(None, student_one)

        self.assertEquals(member['public_name'], "Student One")
Exemplo n.º 13
0
    def test_get_course_list(self):
        g1 = GroupFactory(name="group1")
        g2 = GroupFactory(name="group2")
        CourseFactory(title="Sample Course", faculty_group=g1, group=g2)
        UserFactory(username='******',
                    first_name='Instructor', last_name='One').groups.add(g2)

        secrets = {'http://testserver/': 'foobar'}
        with self.settings(SERVER_ADMIN_SECRETKEYS=secrets):
            url = '/api/user/courses?user=instructor_one&secret=foobar'
            response = self.client.get(url)
            self.assertEquals(response.status_code, 200)
Exemplo n.º 14
0
    def test_user_courses(self):

        # instructor that sees both Sample Course & Alternate Course
        self.instructor_three = UserFactory(username='******')
        self.add_as_faculty(self.sample_course, self.instructor_three)
        self.add_as_faculty(self.alt_course, self.instructor_three)

        out = Template("{% load user_projects %}"
                       "{% num_courses for user as user_courses %}"
                       "{{user_courses}}").render(
                           Context({'user': self.instructor_three}))
        self.assertEqual(out, "2")
Exemplo n.º 15
0
    def test_render_list(self):
        u = UserFactory(username='******',
                        first_name='Student',
                        last_name='One')

        self.assertTrue(self.client.login(username=u.username,
                                          password="******"))

        g1 = GroupFactory(name="group1")
        g2 = GroupFactory(name="group2")
        CourseFactory(title="Sample Course", faculty_group=g1, group=g2)
        u.groups.add(g2)
        UserFactory(username='******',
                    first_name='Instructor',
                    last_name='One').groups.add(g2)
        UserFactory(username='******').groups.add(g2)
        UserFactory(username='******').groups.add(g2)
        UserFactory(username='******',
                    first_name='Student',
                    last_name='Two').groups.add(g2)
        UserFactory(username='******',
                    first_name="Teacher's",
                    last_name="Assistant").groups.add(g2)

        sample_course = Course.objects.get(title="Sample Course")

        members = UserResource().render_list(None, sample_course.members)

        self.assertEquals(len(members), 6)
        self.assertEquals(members[0]['public_name'], "test_instructor_two")
        self.assertEquals(members[1]['public_name'], "test_student_three")
        self.assertEquals(members[2]['public_name'], "Assistant, Teacher's")
        self.assertEquals(members[3]['public_name'], "One, Instructor")
        self.assertEquals(members[4]['public_name'], "One, Student")
        self.assertEquals(members[5]['public_name'], "Two, Student")
Exemplo n.º 16
0
    def test_redirect_uploader(self):
        # no collection id
        request = RequestFactory().post('/upload/redirect')
        request.user = self.student_one
        request.course = self.sample_course

        view = RedirectToUploaderView()
        view.request = request

        with self.assertRaises(Http404):
            view.post(request, [], **{'collection_id': 123})

        secret_keys = {'http://ccnmtl.columbia.edu': 'a very good secret'}
        with self.settings(SERVER_ADMIN_SECRETKEYS=secret_keys):
            # invalid uploader url
            as_user = '******' % self.student_one.username
            exc = ExternalCollectionFactory(url='http://abc.def.ghi')
            with self.assertRaises(Http404):
                view.post(request, [], **{'collection_id': exc.id})

            # successful redirect
            exc = ExternalCollectionFactory(url='http://ccnmtl.columbia.edu')
            response = view.post(request, [], **{'collection_id': exc.id})
            self.assertEquals(response.status_code, 302)
            self.assertTrue(response.url.startswith(exc.url))
            self.assertTrue('nonce' in response.url)
            self.assertTrue('hmac' in response.url)
            self.assertTrue('redirect_url' in response.url)
            self.assertTrue(as_user in response.url)

            # "as" without permissions + audio
            data = {'as': self.student_two.username, 'audio': 'mp4'}
            request = RequestFactory().post('/upload/redirect', data)
            request.user = self.student_one
            request.course = self.sample_course
            response = view.post(request, [], **{'collection_id': exc.id})
            self.assertEquals(response.status_code, 302)
            self.assertTrue(as_user in response.url)
            self.assertTrue('audio=mp4' in response.url)

            # "as" with permissions
            data = {'as': self.student_one.username}
            request = RequestFactory().post('/upload/redirect', data)
            request.user = UserFactory(is_staff=True)
            request.course = self.sample_course
            self.add_as_faculty(request.course, request.user)

            response = view.post(request, [], **{'collection_id': exc.id})
            self.assertEquals(response.status_code, 302)
            self.assertTrue(as_user in response.url)
Exemplo n.º 17
0
    def test_update(self):
        author = UserFactory()
        sa = SequenceAssetFactory(author=author)
        note = SherdNoteFactory()
        r = self.client.put(
            reverse('sequenceasset-detail', args=(sa.pk,)),
            {
                'course': sa.course.pk,
                'author': sa.author.pk,
                'spine': note.pk,
                'media_elements': [],
                'text_elements': [],
            }, format='json')

        self.assertEqual(r.status_code, 403)
Exemplo n.º 18
0
    def test_create(self):
        course = CourseFactory()
        author = UserFactory()
        note = SherdNoteFactory()
        r = self.client.post(
            reverse('sequenceasset-list'),
            {
                'course': course.pk,
                'author': author.pk,
                'spine': note.pk,
                'media_elements': [],
                'text_elements': [],
            }, format='json')

        self.assertEqual(r.status_code, 403)
Exemplo n.º 19
0
    def test_mediathread_activity_report_staff(self):
        url = reverse('mediathread-activity-by-course')

        # as superuser
        staff = UserFactory(is_staff=True, is_superuser=True)
        self.assertTrue(self.client.login(username=staff.username,
                                          password='******'))

        set_course_url = '/?set_course=%s&next=/' % \
            self.sample_course.group.name
        response = self.client.get(set_course_url, follow=True)
        self.assertEquals(response.status_code, 200)

        response = self.client.get(url)
        self.assertEquals(response.status_code, 200)
Exemplo n.º 20
0
    def test_accept_invitation_form_duplicate_username(self):
        user = UserFactory()
        form = AcceptInvitationForm()

        # required fields
        form._errors = {}
        form.cleaned_data = {
            'first_name': 'Foo',
            'last_name': 'Bar',
            'password1': 'test',
            'password2': 'test',
            'username': user.username
        }
        form.clean()
        self.assertEquals(len(form._errors.keys()), 1)
        self.assertTrue('username' in form._errors)
Exemplo n.º 21
0
    def test_course_manage_materials_form(self):
        user = UserFactory()
        request = RequestFactory().post('/')
        request.user = user

        form = CourseDeleteMaterialsForm(request=request)
        form._errors = {}
        form.cleaned_data = {'username': '******', 'clear_all': True}

        form.clean()
        self.assertEquals(len(form._errors.keys()), 1)
        self.assertTrue('username' in form._errors)

        form = CourseDeleteMaterialsForm(request=request)
        form._errors = {}
        form.cleaned_data = {'username': user.username, 'clear_all': True}

        form.clean()
        self.assertEquals(len(form._errors.keys()), 0)
Exemplo n.º 22
0
    def setUp(self):
        self.setup_sample_course()
        self.setup_alternate_course()

        # instructor that sees both Sample Course & Alternate Course
        self.instructor_three = UserFactory(username='******')
        self.add_as_faculty(self.sample_course, self.instructor_three)
        self.add_as_faculty(self.alt_course, self.instructor_three)

        # Sample Course Image Asset
        self.asset1 = AssetFactory.create(course=self.sample_course,
                                          primary_source='image',
                                          author=self.instructor_one)

        self.student_note = SherdNoteFactory(asset=self.asset1,
                                             author=self.student_one,
                                             tags=',student_one_selection',
                                             body='student one selection note',
                                             range1=0,
                                             range2=1)
        self.student_ga = SherdNoteFactory(asset=self.asset1,
                                           author=self.student_one,
                                           tags=',student_one_item',
                                           body='student one item note',
                                           title=None,
                                           range1=None,
                                           range2=None)
        self.instructor_note = SherdNoteFactory(
            asset=self.asset1,
            author=self.instructor_one,
            tags=',image, instructor_one_selection,',
            body='instructor one selection note',
            range1=0,
            range2=1)
        self.instructor_ga = SherdNoteFactory(
            asset=self.asset1,
            author=self.instructor_one,
            tags=',image, instructor_one_item,',
            body='instructor one item note',
            title=None,
            range1=None,
            range2=None)
Exemplo n.º 23
0
    def test_parse_user(self):
        view = AssetCreateView()
        request = RequestFactory().get('/')
        request.course = self.sample_course

        # regular path
        request.user = self.student_one
        self.assertEquals(view.parse_user(request), self.student_one)

        # "as" without permissions
        request = RequestFactory().get('/', {'as': self.student_two.username})
        request.user = self.student_one
        request.course = self.sample_course
        self.assertEquals(view.parse_user(request), self.student_one)

        # "as" with permissions
        request.user = UserFactory(is_staff=True)
        request.course = self.sample_course
        self.add_as_faculty(request.course, request.user)
        self.assertEquals(view.parse_user(request), self.student_two)
Exemplo n.º 24
0
    def test_self_registration_report(self):
        UserProfileFactory(user=self.student_one)
        RegistrationProfileFactory(user=self.student_one)
        url = reverse('mediathread-self-registration',
                      args=[self.sample_course.id])

        # as student
        self.client.login(username=self.student_one.username, password='******')
        response = self.client.get(url)
        self.assertEquals(response.status_code, 302)

        # as instructor
        self.client.login(username=self.instructor_one.username,
                          password='******')
        self.switch_course(self.client, self.sample_course)
        response = self.client.get(url)
        self.assertEquals(response.status_code, 302)

        # as superuser
        staff = UserFactory(is_staff=True, is_superuser=True)
        self.assertTrue(self.client.login(username=staff.username,
                                          password='******'))

        set_course_url = '/?set_course=%s&next=/' % \
            self.sample_course.group.name
        response = self.client.get(set_course_url, follow=True)
        self.assertEquals(response.status_code, 200)

        response = self.client.get(url)
        self.assertEquals(response.status_code, 200)

        header = ("First Name,Last Name,Email,Title,Institution,"
                  "Referred_By,User Story,Created")
        data = ("Student,One,[email protected],Title,"
                "Columbia University,Pablo Picasso,User Story,")

        self.assertContains(response, header)
        self.assertContains(response, data)
Exemplo n.º 25
0
 def setUp(self):
     self.u = UserFactory(username='******')
     self.u.set_password('test')
     self.u.save()
     login = self.client.login(username='******', password='******')
     assert (login is True)
Exemplo n.º 26
0
 def setUp(self):
     self.user = UserFactory()
     self.course = CourseFactory()
Exemplo n.º 27
0
    def setUp(self):
        self.setup_sample_course()
        self.setup_alternate_course()

        # instructor that sees both Sample Course & Alternate Course
        self.instructor_three = UserFactory(username='******')
        self.add_as_faculty(self.sample_course, self.instructor_three)
        self.add_as_faculty(self.alt_course, self.instructor_three)

        # Sample Course Image Asset
        self.asset1 = AssetFactory.create(course=self.sample_course,
                                          primary_source='image')

        self.student_note = SherdNoteFactory(asset=self.asset1,
                                             author=self.student_one,
                                             tags=',student_one_selection',
                                             body='student one selection note',
                                             range1=0,
                                             range2=1)
        self.student_ga = SherdNoteFactory(asset=self.asset1,
                                           author=self.student_one,
                                           tags=',student_one_item',
                                           body='student one item note',
                                           title=None,
                                           range1=None,
                                           range2=None)
        self.instructor_note = SherdNoteFactory(
            asset=self.asset1,
            author=self.instructor_one,
            tags=',image, instructor_one_selection,',
            body='instructor one selection note',
            range1=0,
            range2=1)
        self.instructor_ga = SherdNoteFactory(
            asset=self.asset1,
            author=self.instructor_one,
            tags=',image, instructor_one_item,',
            body='instructor one item note',
            title=None,
            range1=None,
            range2=None)

        # Sample Course Projects
        self.project_private = ProjectFactory.create(
            course=self.sample_course,
            author=self.student_one,
            policy='PrivateEditorsAreOwners')
        self.add_citation(self.project_private, self.student_note)
        self.add_citation(self.project_private, self.student_ga)

        self.project_instructor_shared = ProjectFactory.create(
            course=self.sample_course,
            author=self.student_one,
            policy='InstructorShared')
        self.add_citation(self.project_instructor_shared, self.student_note)
        self.add_citation(self.project_instructor_shared, self.student_ga)

        self.project_class_shared = ProjectFactory.create(
            course=self.sample_course,
            author=self.student_one,
            policy='CourseProtected')
        self.add_citation(self.project_class_shared, self.student_note)
        self.add_citation(self.project_class_shared, self.student_ga)

        self.assignment = ProjectFactory.create(course=self.sample_course,
                                                author=self.instructor_one,
                                                policy='CourseProtected',
                                                project_type='assignment')

        # Alt Course Projects
        self.project_private_alt_course = ProjectFactory.create(
            course=self.alt_course,
            author=self.alt_student,
            policy='PrivateEditorsAreOwners')

        self.project_public_alt_course = ProjectFactory.create(
            course=self.alt_course,
            author=self.alt_student,
            policy='PrivateEditorsAreOwners')
Exemplo n.º 28
0
    def setUp(self):
        self.setup_sample_course()
        self.setup_alternate_course()

        # instructor that sees both Sample Course & Alternate Course
        self.instructor_three = UserFactory(username='******')
        self.add_as_faculty(self.sample_course, self.instructor_three)
        self.add_as_faculty(self.alt_course, self.instructor_three)

        self.sample_course = Course.objects.get(title='Sample Course')
        self.alt_course = Course.objects.get(title="Alternate Course")

        self.asset1 = AssetFactory.create(course=self.sample_course,
                                          author=self.instructor_one,
                                          primary_source='image')

        self.student_note = SherdNoteFactory(asset=self.asset1,
                                             author=self.student_one,
                                             tags=',student_one_selection',
                                             body='student one selection note',
                                             range1=0,
                                             range2=1)
        self.student_ga = SherdNoteFactory(asset=self.asset1,
                                           author=self.student_one,
                                           tags=',image, student_one_global,',
                                           body='student one global note',
                                           title=None,
                                           range1=None,
                                           range2=None)
        self.instructor_note = SherdNoteFactory(
            asset=self.asset1,
            author=self.instructor_one,
            tags=',image, instructor_one_selection,',
            body='instructor one selection note',
            range1=1,
            range2=2)
        self.instructor_ga = SherdNoteFactory(
            asset=self.asset1,
            author=self.instructor_one,
            tags=',image, instructor_one_global,',
            body='instructor one global note',
            title=None,
            range1=None,
            range2=None)

        self.asset2 = AssetFactory.create(course=self.sample_course,
                                          author=self.instructor_one,
                                          primary_source='video')
        self.asset2_instructor_note = SherdNoteFactory(
            asset=self.asset2,
            author=self.instructor_one,
            tags=',video, instructor_one_selection,',
            body='instructor one selection note',
            range1=0,
            range2=1)
        self.asset2_instructor_ga = SherdNoteFactory(
            asset=self.asset2,
            author=self.instructor_one,
            tags=',video, instructor_one_global,',
            body='instructor one global note',
            title=None,
            range1=None,
            range2=None)
Exemplo n.º 29
0
 def setUp(self):
     self.setup_sample_course()
     self.superuser = UserFactory(is_superuser=True, is_staff=True)
Exemplo n.º 30
0
    def test_user_display_name(self):
        user = UserFactory()
        self.assertEquals(user_display_name(user), user.username)

        user = UserFactory(first_name='John', last_name='Smith')
        self.assertEquals(user_display_name(user), 'John Smith')
Exemplo n.º 31
0
 def test_unicode(self):
     user = UserFactory(username='******')
     profile = UserProfileFactory(user=user)
     self.assertEquals(smart_text(profile), 'johndoe')
Exemplo n.º 32
0
 def setUp(self):
     super(AssetTestsAsNonAuthor, self).setUp()
     self.setup_sample_course()
     self.add_as_student(self.sample_course, self.u)
     self.author = UserFactory()
     self.add_as_student(self.sample_course, self.author)