예제 #1
0
    def test_move_video_allowed(self):
        # Check that moving works when the user has permission.
        video = test_factories.create_video()
        old_team = test_factories.create_team(video_policy=Team.VP_MANAGER)
        new_team = test_factories.create_team(video_policy=Team.VP_MANAGER)
        team_video = test_factories.create_team_video(old_team, self.user,
                                                      video)
        # Convenient functions for pulling models fresh from the DB.
        get_video = lambda: Video.objects.get(pk=video.pk)
        get_team_video = lambda: get_video().get_team_video()

        # Create a member that's an admin of BOTH teams.
        # This member should be able to move the video.
        member = self._create_member(old_team, TeamMember.ROLE_ADMIN)
        self._create_member(new_team, TeamMember.ROLE_ADMIN, member.user)

        self.assertEqual(get_team_video().team.pk, old_team.pk,
                         "Video did not start in the correct team.")

        # Move the video.
        self.client.login(username=member.user.username,
                          password=member.user.username)
        url = reverse("teams:move_video")
        response = self.client.post(url, {'team_video': get_team_video().pk,
                                          'team': new_team.pk,})
        self.assertEqual(response.status_code, 302)

        self.assertEqual(get_team_video().team.pk, new_team.pk,
                         "Video was not moved to the new team.")

        self.assertEqual(get_team_video().project.team, new_team,
                         "Video ended up with a project for the first team")
예제 #2
0
    def test_move_video_disallowed_new(self):
        # Check that moving does not work when the user is blocked by the new
        # team.
        video = test_factories.create_video()
        old_team = test_factories.create_team(video_policy=Team.VP_MANAGER)
        new_team = test_factories.create_team(video_policy=Team.VP_MANAGER)
        team_video = test_factories.create_team_video(old_team, self.user,
                                                      video)
        # Convenient functions for pulling models fresh from the DB.
        get_video = lambda: Video.objects.get(pk=video.pk)
        get_team_video = lambda: get_video().get_team_video()

        # Create a member that's a contributor to the new/target team.
        # This member should NOT be able to move the video because they cannot
        # add it to the second team.
        member = self._create_member(old_team, TeamMember.ROLE_ADMIN)
        self._create_member(new_team, TeamMember.ROLE_CONTRIBUTOR, member.user)

        self.assertEqual(get_team_video().team.pk, old_team.pk,
                         "Video did not start in the correct team.")

        # Try to move the video.
        self.client.login(username=member.user.username,
                          password=member.user.username)
        url = reverse("teams:move_video")
        response = self.client.post(url, {'team_video': get_team_video().pk,
                                          'team': new_team.pk,})
        self.assertEqual(response.status_code, 302)

        self.assertEqual(get_team_video().team.pk, old_team.pk,
                         "Video did not stay in the old team.")
예제 #3
0
 def setUp(self):
     TestCase.setUp(self)
     self.team = test_factories.create_team()
     self.project = Project.objects.create(team=self.team, name='project1')
     self.team2 = test_factories.create_team()
     self.project2 = Project.objects.create(team=self.team2,
                                            name='project2')
     self.video = test_factories.create_video()
     self.team_video = test_factories.create_team_video(self.team,
                                                        video=self.video)
예제 #4
0
 def setUp(self):
     self.team = test_factories.create_team()
     self.report = BillingReport.objects.create(
         start_date=datetime(2013, 1, 1),
         end_date=datetime(2013, 2, 1),
         type=BillingReport.TYPE_APPROVAL)
     self.report.teams.add(self.team)
예제 #5
0
 def setUp(self):
     self.team = test_factories.create_team(workflow_enabled=True)
     w = test_factories.create_workflow(self.team, autocreate_subtitle=True)
     self.admin = test_factories.create_team_member(
         self.team, role=TeamMember.ROLE_ADMIN)
     self.client.login(username=self.admin.user.username,
                       password='******')
예제 #6
0
 def setup_team(self):
     self.team = test_factories.create_team(workflow_enabled=True)
     test_factories.create_workflow(
         self.team,
         review_allowed=20,  # manager must review
         approve_allowed=20,  # admin must approve
     )
예제 #7
0
 def setUp(self):
     self.team = test_factories.create_team(workflow_enabled=True)
     w = test_factories.create_workflow(self.team,
                                        autocreate_subtitle=True,
                                        autocreate_translate=True)
     self.admin = test_factories.create_team_member(
         self.team, role=TeamMember.ROLE_ADMIN)
예제 #8
0
 def test_noop_for_non_team_feed(self):
     team = test_factories.create_team()
     user = test_factories.create_user()
     videos = [test_factories.create_video() for i in xrange(5)]
     feed = mock.Mock(team=None, user=user)
     feed_imported.send(sender=feed, new_videos=videos)
     for video in videos:
         self.assertEquals(video.get_team_video(), None)
예제 #9
0
 def setup_team(self):
     self.team = test_factories.create_team(workflow_enabled=True)
     workflow = self.team.get_workflow()
     workflow.review_allowed = workflow.REVIEW_IDS['Admin must review']
     workflow.approve_allowed = workflow.APPROVE_IDS['Admin must approve']
     workflow.save()
     self.user = test_factories.create_team_member(self.team).user
     self.team_video = test_factories.create_team_video(
         self.team, self.user, self.video)
예제 #10
0
    def test_check_authorization_team(self):
        # test check_authorization when linked to a team
        team = test_factories.create_team()
        tpa = test_factories.create_third_party_account(self.vurl)
        tpa.teams.add(team)

        self.assertEquals(check_authorization(self.video), (False, False))
        test_factories.create_team_video(team, video=self.video)
        self.assertEquals(check_authorization(self.video), (True, True))
예제 #11
0
파일: forms.py 프로젝트: Harpreetkk/Amara
 def test_user_permissions_check(self):
     team = test_factories.create_team(subtitle_policy=40)
     test_factories.create_team_video(team=team, video=self.video)
     form = self.make_form({
         'primary_audio_language_code': 'en',
         'subtitle_language_code': 'fr',
     })
     # The form should be invalid, because our user doesn't have
     # permissions to subtitle the video.
     self.assertEquals(form.is_valid(), False)
예제 #12
0
 def setUp(self, mock_now):
     self.date_maker = DateMaker()
     mock_now.side_effect = self.date_maker.next_date
     self.team = test_factories.create_team(workflow_enabled=True)
     test_factories.create_workflow(
         self.team,
         review_allowed=0,  # no review
         approve_allowed=20,  # admin must approve
     )
     self.admin = test_factories.create_team_member(team=self.team,
                                                    role=ROLE_ADMIN).user
     self.video = test_factories.create_team_video(self.team).video
예제 #13
0
 def setUp(self):
     self.team = test_factories.create_team(workflow_enabled=True)
     self.workflow = test_factories.create_workflow(
         self.team,
         review_allowed=DONT_REQUIRE_REVIEW,
         approve_allowed=DONT_REQUIRE_APPROVAL)
     self.admin = test_factories.create_team_member(
         self.team, role=TeamMember.ROLE_ADMIN)
     self.team_video = test_factories.create_team_video(
         self.team, self.admin.user)
     self.client = Client()
     self.login(self.admin.user)
예제 #14
0
 def setUp(self):
     self.team = test_factories.create_team(workflow_enabled=True)
     self.workflow = test_factories.create_workflow(self.team)
     self.user = test_factories.create_user(is_staff=True)
     self.member = test_factories.create_team_member(self.team,
                                                     self.user,
                                                     role=ROLE_ADMIN)
     self.video = test_factories.create_video()
     self.team_video = test_factories.create_team_video(
         self.team, self.user, self.video)
     self.non_team_video = test_factories.create_video()
     # create a bunch of versions
     self.versions = [
         pipeline.add_subtitles(self.video, 'en', None) for i in xrange(5)
     ]
     self.language = self.video.get_primary_audio_subtitle_language()
예제 #15
0
파일: feeds.py 프로젝트: itsbenweeks/Amara
    def test_video_feed_submit(self):
        team = test_factories.create_team()
        user = test_factories.create_team_member(team).user
        self.client.login(username=user.username, password='******')
        feed_url = u'http://example.com/feed'
        url = reverse('teams:add_videos', kwargs={'slug': team.slug})
        data = {
            'feed_url': feed_url,
        }

        response = self.client.post(url, data)

        self.assertEqual(team.videos.count(), 2)
        for video in team.videos.all():
            self.assertEquals(video.user, user)
            self.assertEquals(video.get_team_video().added_by, user)
예제 #16
0
파일: syncing.py 프로젝트: Harpreetkk/Amara
 def setUp(self):
     TestCase.setUp(self)
     self.partner_id = 1234
     self.secret = 'Secret'
     self.account = KalturaAccount.objects.create(
         team=test_factories.create_team(),
         partner_id=self.partner_id,
         secret=self.secret)
     self.entry_id = 'EntryId'
     url = ('http://cdnbakmi.kaltura.com'
            '/p/1492321/sp/149232100/serveFlavor/entryId/'
            '%s/flavorId/1_dqgopb2z/name/video.mp4') % self.entry_id
     self.video = test_factories.create_video(url=url, video_type='K')
     self.video_url = self.video.get_primary_videourl_obj()
     self.version = pipeline.add_subtitles(self.video, 'en',
                                           [(100, 200, "sub 1")])
     self.language = self.version.subtitle_language
예제 #17
0
    def test_team_permission(self):
        team = test_factories.create_team(slug="private-team",
                                          name="Private Team",
                                          is_visible=False)
        TeamMember.objects.create_first_member(team, self.user)
        video = test_factories.create_video()
        test_factories.create_team_video(team, self.user, video)

        url = reverse("videos:video", kwargs={"video_id": video.video_id})

        response = self.client.get(url, follow=True)
        self.assertEqual(response.status_code, 404)

        self.client.login(**self.auth)

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

        self.client.logout()
예제 #18
0
    def test_create_team_videos_for_team_feed(self):
        api_teamvideo_new_handler = mock.Mock()
        api_teamvideo_new.connect(api_teamvideo_new_handler, weak=False)
        self.addCleanup(api_teamvideo_new.disconnect,
                        api_teamvideo_new_handler)

        team = test_factories.create_team()
        user = test_factories.create_team_member(team).user
        videos = [test_factories.create_video() for i in xrange(5)]
        feed = mock.Mock(team=team, user=user)
        feed_imported.send(sender=feed, new_videos=videos)
        for video in videos:
            self.assertNotEquals(video.get_team_video(), None)
            self.assertEquals(video.get_team_video().team, team)

        correct_api_calls = [
            mock.call(signal=api_teamvideo_new, sender=video.get_team_video())
            for video in videos
        ]

        api_teamvideo_new_handler.assert_has_calls(correct_api_calls,
                                                   any_order=True)
예제 #19
0
 def setUp(self):
     self.video = test_factories.create_video()
     self.team = test_factories.create_team()
     self.member = test_factories.create_team_member(self.team)
     self.team_video = test_factories.create_team_video(
         self.team, self.member.user, self.video)
예제 #20
0
파일: syncing.py 프로젝트: Harpreetkk/Amara
 def test_tasks_not_called_if_no_account(self):
     # for non-team videos, we shouldn't schedule a task
     video = create_kaltura_video('video2')
     other_team = test_factories.create_team()
     test_factories.create_team_video(other_team, video=video)
     self.check_tasks_not_called(video)
예제 #21
0
    def test_remove_video(self):
        team = test_factories.create_team(slug="new-team",
                                          membership_policy=4,
                                          video_policy=1,
                                          name="New-name")

        def create_member(role):
            user = test_factories.create_user(username='******' + role,
                                              password='******' + role)
            return TeamMember.objects.create(user=user, role=role, team=team)

        admin = create_member(TeamMember.ROLE_ADMIN)
        contributor = create_member(TeamMember.ROLE_CONTRIBUTOR)
        manager = create_member(TeamMember.ROLE_MANAGER)
        owner = create_member(TeamMember.ROLE_OWNER)

        def create_team_video():
            return test_factories.create_team_video(team, owner.user)

        # The video policy determines who can remove videos from teams.
        for member in [contributor, manager, admin, owner]:
            self.client.login(username=member.user.username,
                              password=member.user.username)
            tv = create_team_video()
            video_url = tv.video.get_video_url()

            url = reverse("teams:remove_video", kwargs={"team_video_pk": tv.pk})
            response = self.client.post(url)

            self.assertEqual(response.status_code, 302)
            self.assertFalse(TeamVideo.objects.filter(pk=tv.pk).exists())
            self.assertTrue(VideoUrl.objects.get(url=video_url).video)

        # Only owners can delete videos entirely.
        for role in [owner]:
            self.client.login(username=role.user.username,
                              password=role.user.username)
            tv = create_team_video()
            video_url = tv.video.get_video_url()

            url = reverse("teams:remove_video", kwargs={"team_video_pk": tv.pk})
            response = self.client.post(url, {'del-opt': 'total-destruction'})

            self.assertEqual(response.status_code, 302)
            self.assertFalse(TeamVideo.objects.filter(pk=tv.pk).exists())
            self.assertFalse(VideoUrl.objects.filter(url=video_url).exists())

        for role in [contributor, manager, admin]:
            self.client.login(username=role.user.username,
                              password=role.user.username)
            tv = create_team_video()
            video_url = tv.video.get_video_url()

            url = reverse("teams:remove_video", kwargs={"team_video_pk": tv.pk})
            response = self.client.post(url, {'del-opt': 'total-destruction'})

            self.assertEqual(response.status_code, 302)
            self.assertTrue(TeamVideo.objects.filter(pk=tv.pk).exists())
            self.assertTrue(VideoUrl.objects.filter(url=video_url).exists())

        # POST request required
        tv = create_team_video()
        video_url = tv.video.get_video_url()
        url = reverse("teams:remove_video", kwargs={"team_video_pk": tv.pk})
        self.client.login(username=self.user.username,
                          password=self.user.username)
        response = self.client.get(url)

        self.assertEqual(response.status_code, 302)
        self.assertTrue(TeamVideo.objects.filter(pk=tv.pk).exists())
        self.assertTrue(VideoUrl.objects.filter(url=video_url).exists())
예제 #22
0
 def setup_team(self):
     self.team = test_factories.create_team()
     self.owner = test_factories.create_team_member(
         self.team, self.owner_account, role=TeamMember.ROLE_OWNER)
     self.test_project = test_factories.create_project(self.team)
     self.default_project = self.team.default_project
예제 #23
0
 def setUp(self):
     self.team = test_factories.create_team()
     self.user = test_factories.create_team_member(self.team).user
예제 #24
0
 def setUp(self):
     self.team = test_factories.create_team()