示例#1
0
    def test_post_video_with_urls(self):
        """Test that authenticated user can create videos."""
        cat = category(save=True)
        person = speaker(save=True)
        tag1 = tag(save=True)
        tag2 = tag(save=True)
        lang = language(save=True)

        data = {'title': 'Creating delicious APIs for Django apps since 2010.',
                'category': '/api/v1/category/%d/' % cat.pk,
                'speakers': ['/api/v1/speaker/%d/' % person.pk],
                'tags': ['/api/v1/tag/%d/' % tag1.pk,
                         '/api/v1/tag/%d/' % tag2.pk],
                'language': lang.name,
                'state': Video.STATE_LIVE}

        resp = self.auth_post('/api/v1/video/', json.dumps(data),
                                content_type='application/json')
        eq_(resp.status_code, 201)

        # Get the created video
        resp = self.auth_get(resp['Location'], {'format': 'json'})
        eq_(resp.status_code, 200)
        eq_(json.loads(resp.content)['title'], data['title'])

        # Verify the data
        vid = Video.objects.get(title=data['title'])
        eq_(vid.title, data['title'])
        eq_(list(vid.speakers.values_list('name', flat=True)), [person.name])
        eq_(sorted(vid.tags.values_list('tag', flat=True)),
            sorted([tag1.tag, tag2.tag]))
        eq_(vid.language.name, lang.name)
示例#2
0
    def test_post_video_with_urls(self):
        """Test that authenticated user can create videos."""
        cat = category(save=True)
        person = speaker(save=True)
        tag1 = tag(save=True)
        tag2 = tag(save=True)
        lang = language(save=True)

        data = {
            "title": "Creating delicious APIs for Django apps since 2010.",
            "category": "/api/v1/category/%d/" % cat.pk,
            "speakers": ["/api/v1/speaker/%d/" % person.pk],
            "tags": ["/api/v1/tag/%d/" % tag1.pk, "/api/v1/tag/%d/" % tag2.pk],
            "language": lang.name,
            "state": Video.STATE_LIVE,
        }

        resp = self.auth_post("/api/v1/video/", json.dumps(data), content_type="application/json")
        eq_(resp.status_code, 201)

        # Get the created video
        resp = self.auth_get(resp["Location"], {"format": "json"})
        eq_(resp.status_code, 200)
        eq_(json.loads(resp.content)["title"], data["title"])

        # Verify the data
        vid = Video.objects.get(title=data["title"])
        eq_(vid.title, data["title"])
        eq_(list(vid.speakers.values_list("name", flat=True)), [person.name])
        eq_(sorted(vid.tags.values_list("tag", flat=True)), sorted([tag1.tag, tag2.tag]))
        eq_(vid.language.name, lang.name)
        def test_create_and_update_video(self):
            cat = category(save=True)
            lang = language(name=u'English 2', save=True)

            ret = richardapi.create_video(
                self.api_url,
                auth_token=self.token.key,
                video_data={
                    'title': 'Test video create and update',
                    'language': lang.name,
                    'category': cat.title,
                    'state': richardapi.STATE_DRAFT,
                    'speakers': ['Jimmy'],
                    'tags': ['foo'],
                })

            video = Video.objects.get(title='Test video create and update')

            eq_(video.title, ret['title'])
            eq_(video.state, ret['state'])
            eq_(video.id, ret['id'])

            ret['title'] = 'Video Test'
            ret = richardapi.update_video(
                self.api_url,
                auth_token=self.token.key,
                video_id=ret['id'],
                video_data=ret
            )

            video = Video.objects.get(title='Video Test')
            eq_(video.title, ret['title'])
示例#4
0
    def test_put(self):
        """Test that passing in an id, but no slug with a PUT works."""
        cat = category(save=True)
        lang = language(save=True)
        vid = video(title="test1", save=True)

        data = {
            "id": vid.pk,
            "title": vid.title,
            "category": cat.title,
            "language": lang.name,
            "speakers": ["Guido"],
            "tags": ["foo"],
            "state": Video.STATE_DRAFT,
        }

        resp = self.auth_put("/api/v2/video/%d/" % vid.pk, json.dumps(data), content_type="application/json")
        eq_(resp.status_code, 200)

        # Get the video from the db and compare data.
        vid = Video.objects.get(pk=vid.pk)
        eq_(vid.title, u"test1")
        eq_(vid.slug, u"test1")
        eq_(list(vid.speakers.values_list("name", flat=True)), ["Guido"])
        eq_(list(vid.tags.values_list("tag", flat=True)), ["foo"])
示例#5
0
    def test_put(self):
        """Test that passing in an id, but no slug with a PUT works."""
        cat = category(save=True)
        lang = language(save=True)
        vid = video(title='test1', save=True)

        data = {'id': vid.pk,
                'title': vid.title,
                'category': cat.title,
                'language': lang.name,
                'speakers': ['Guido'],
                'tags': ['foo'],
                'state': Video.STATE_DRAFT}

        resp = self.auth_put('/api/v2/video/%d/' % vid.pk,
                             json.dumps(data),
                             content_type='application/json')
        eq_(resp.status_code, 200)

        # Get the video from the db and compare data.
        vid = Video.objects.get(pk=vid.pk)
        eq_(vid.title, u'test1')
        eq_(vid.slug, u'test1')
        eq_(list(vid.speakers.values_list('name', flat=True)), ['Guido'])
        eq_(list(vid.tags.values_list('tag', flat=True)), ['foo'])
示例#6
0
        def test_create_and_update_video(self):
            cat = category(save=True)
            lang = language(name=u'English', save=True)

            ret = richardapi.create_video(
                self.api_url,
                auth_token=self.token.key,
                video_data={
                    'title': 'Test video',
                    'language': lang.name,
                    'category': cat.title,
                    'state': 2,  # Has to be draft so update works
                    'speakers': ['Jimmy'],
                    'tags': ['foo'],
                })

            video = Video.objects.get(title='Test video')

            eq_(video.title, ret['title'])
            eq_(video.state, ret['state'])
            eq_(video.id, ret['id'])

            ret['title'] = 'Video Test'
            ret = richardapi.update_video(self.api_url,
                                          auth_token=self.token.key,
                                          video_id=ret['id'],
                                          video_data=ret)

            video = Video.objects.get(title='Video Test')
            eq_(video.title, ret['title'])
示例#7
0
    def test_put(self):
        """Test that passing in an id, but no slug with a PUT works."""
        cat = category(save=True)
        lang = language(save=True)
        vid = video(title='test1', save=True)

        data = {'id': vid.pk,
                'title': vid.title,
                'category': cat.title,
                'language': lang.name,
                'speakers': ['Guido'],
                'tags': ['foo'],
                'state': Video.STATE_DRAFT}

        resp = self.auth_put('/api/v2/video/%d/' % vid.pk,
                             json.dumps(data),
                             content_type='application/json')
        eq_(resp.status_code, 200)

        # Get the video from the db and compare data.
        vid = Video.objects.get(pk=vid.pk)
        eq_(vid.title, u'test1')
        eq_(vid.slug, u'test1')
        eq_(list(vid.speakers.values_list('name', flat=True)), ['Guido'])
        eq_(list(vid.tags.values_list('tag', flat=True)), ['foo'])
示例#8
0
    def test_post_with_category_title(self):
        """Test that a category title works"""
        cat = category(title='testcat', save=True)
        lang = language(name='English', save=True)

        data = {'title': 'test1',
                'language': lang.name,
                'category': cat.title,
                'state': Video.STATE_DRAFT,
                'slug': 'foo'}

        resp = self.auth_post('/api/v2/video/', json.dumps(data),
                              content_type='application/json')
        eq_(resp.status_code, 201)
示例#9
0
    def test_post_with_category_title(self):
        """Test that a category title works"""
        cat = category(title='testcat', save=True)
        lang = language(name='English', save=True)

        data = {'title': 'test1',
                'language': lang.name,
                'category': cat.title,
                'state': Video.STATE_DRAFT,
                'slug': 'foo'}

        resp = self.auth_post('/api/v2/video/', json.dumps(data),
                              content_type='application/json')
        eq_(resp.status_code, 201)
示例#10
0
    def test_post_with_category_title(self):
        """Test that a category title works"""
        cat = category(title="testcat", save=True)
        lang = language(name="English", save=True)

        data = {
            "title": "test1",
            "language": lang.name,
            "category": cat.title,
            "state": Video.STATE_DRAFT,
            "slug": "foo",
        }

        resp = self.auth_post("/api/v2/video/", json.dumps(data), content_type="application/json")
        eq_(resp.status_code, 201)
示例#11
0
    def test_post_with_used_slug(self):
        """Test that already used slug creates second video with new slug."""
        cat = category(save=True)
        lang = language(save=True)
        video(title='test1', slug='test1', save=True)

        data = {'title': 'test1',
                'category': cat.title,
                'language': lang.name,
                'state': Video.STATE_DRAFT,
                'slug': 'test1'}

        resp = self.auth_post('/api/v2/video/', json.dumps(data),
                              content_type='application/json')
        eq_(resp.status_code, 201)
示例#12
0
    def test_post_with_used_slug(self):
        """Test that already used slug creates second video with new slug."""
        cat = category(save=True)
        lang = language(save=True)
        video(title='test1', slug='test1', save=True)

        data = {'title': 'test1',
                'category': cat.title,
                'language': lang.name,
                'state': Video.STATE_DRAFT,
                'slug': 'test1'}

        resp = self.auth_post('/api/v2/video/', json.dumps(data),
                              content_type='application/json')
        eq_(resp.status_code, 201)
示例#13
0
    def test_post_with_used_slug(self):
        """Test that already used slug creates second video with new slug."""
        cat = category(save=True)
        lang = language(save=True)
        video(title="test1", slug="test1", save=True)

        data = {
            "title": "test1",
            "category": cat.title,
            "language": lang.name,
            "state": Video.STATE_DRAFT,
            "slug": "test1",
        }

        resp = self.auth_post("/api/v2/video/", json.dumps(data), content_type="application/json")
        eq_(resp.status_code, 201)
示例#14
0
    def test_put_fails_with_live_videos(self):
        """Test that passing in an id, but no slug with a PUT works."""
        cat = category(save=True)
        lang = language(save=True)
        vid = video(title="test1", category=cat, language=lang, state=Video.STATE_LIVE, save=True)

        data = {
            "id": vid.pk,
            "title": "new title",
            "category": cat.title,
            "language": lang.name,
            "speakers": ["Guido"],
            "tags": ["foo"],
            "state": Video.STATE_DRAFT,
        }

        resp = self.auth_put("/api/v2/video/%d/" % vid.pk, json.dumps(data), content_type="application/json")
        eq_(resp.status_code, 403)
示例#15
0
    def test_post_with_tag_name(self):
        """Test that you can post video with url tags or real tags"""
        cat = category(save=True)
        lang = language(save=True)

        footag = u"footag"
        data = {
            "title": "test1",
            "category": cat.title,
            "language": lang.name,
            "state": Video.STATE_DRAFT,
            "tags": [footag],
        }

        resp = self.auth_post("/api/v2/video/", json.dumps(data), content_type="application/json")
        eq_(resp.status_code, 201)

        # Verify the tag
        vid = Video.objects.get(title=data["title"])
        eq_(vid.tags.values_list("tag", flat=True)[0], footag)
示例#16
0
    def test_post_with_speaker_with_extra_spaces(self):
        """Test that you can post videos with speaker names"""
        cat = category(save=True)
        lang = language(save=True)

        fooperson = u" Carl "
        data = {
            "title": "test1",
            "category": cat.title,
            "language": lang.name,
            "state": Video.STATE_DRAFT,
            "speakers": [fooperson],
        }

        resp = self.auth_post("/api/v2/video/", json.dumps(data), content_type="application/json")
        eq_(resp.status_code, 201)

        # Verify the speaker
        vid = Video.objects.get(title=data["title"])
        eq_(vid.speakers.values_list("name", flat=True)[0], fooperson.strip())
示例#17
0
    def test_post_with_tag_name(self):
        """Test that you can post video with url tags or real tags"""
        cat = category(save=True)
        lang = language(save=True)

        footag = u'footag'
        data = {
            'title': 'test1',
            'category': cat.title,
            'language': lang.name,
            'state': Video.STATE_DRAFT,
            'tags': [footag],
        }

        resp = self.auth_post('/api/v2/video/', json.dumps(data),
                              content_type='application/json')
        eq_(resp.status_code, 201)

        # Verify the tag
        vid = Video.objects.get(title=data['title'])
        eq_(vid.tags.values_list('tag', flat=True)[0], footag)
示例#18
0
    def test_post_with_speaker_with_extra_spaces(self):
        """Test that you can post videos with speaker names"""
        cat = category(save=True)
        lang = language(save=True)

        fooperson = u' Carl '
        data = {
            'title': 'test1',
            'category': cat.title,
            'language': lang.name,
            'state': Video.STATE_DRAFT,
            'speakers': [fooperson],
        }

        resp = self.auth_post('/api/v2/video/', json.dumps(data),
                              content_type='application/json')
        eq_(resp.status_code, 201)

        # Verify the speaker
        vid = Video.objects.get(title=data['title'])
        eq_(vid.speakers.values_list('name', flat=True)[0], fooperson.strip())
示例#19
0
    def test_post_with_speaker_with_extra_spaces(self):
        """Test that you can post videos with speaker names"""
        cat = category(save=True)
        lang = language(save=True)

        fooperson = u' Carl '
        data = {
            'title': 'test1',
            'category': cat.title,
            'language': lang.name,
            'state': Video.STATE_DRAFT,
            'speakers': [fooperson],
        }

        resp = self.auth_post('/api/v2/video/', json.dumps(data),
                              content_type='application/json')
        eq_(resp.status_code, 201)

        # Verify the speaker
        vid = Video.objects.get(title=data['title'])
        eq_(vid.speakers.values_list('name', flat=True)[0], fooperson.strip())
示例#20
0
    def test_post_with_tag_name(self):
        """Test that you can post video with url tags or real tags"""
        cat = category(save=True)
        lang = language(save=True)

        footag = u'footag'
        data = {
            'title': 'test1',
            'category': cat.title,
            'language': lang.name,
            'state': Video.STATE_DRAFT,
            'tags': [footag],
        }

        resp = self.auth_post('/api/v2/video/', json.dumps(data),
                              content_type='application/json')
        eq_(resp.status_code, 201)

        # Verify the tag
        vid = Video.objects.get(title=data['title'])
        eq_(vid.tags.values_list('tag', flat=True)[0], footag)
示例#21
0
        def test_create_and_get_video(self):
            cat = category(save=True)
            lang = language(name=u'English 1', save=True)

            ret = richardapi.create_video(self.api_url,
                                          auth_token=self.token.key,
                                          video_data={
                                              'title':
                                              'Test video create and get',
                                              'language': lang.name,
                                              'category': cat.title,
                                              'state': richardapi.STATE_DRAFT,
                                              'speakers': ['Jimmy'],
                                              'tags': ['foo'],
                                          })

            vid = richardapi.get_video(self.api_url,
                                       auth_token=self.token.key,
                                       video_id=ret['id'])
            eq_(vid['id'], ret['id'])
            eq_(vid['title'], ret['title'])
示例#22
0
        def test_create_and_get_video(self):
            cat = category(save=True)
            lang = language(name=u'English 1', save=True)

            ret = richardapi.create_video(
                self.api_url,
                auth_token=self.token.key,
                video_data={
                    'title': 'Test video create and get',
                    'language': lang.name,
                    'category': cat.title,
                    'state': richardapi.STATE_DRAFT,
                    'speakers': ['Jimmy'],
                    'tags': ['foo'],
                })

            vid = richardapi.get_video(
                self.api_url,
                auth_token=self.token.key,
                video_id=ret['id'])
            eq_(vid['id'], ret['id'])
            eq_(vid['title'], ret['title'])
示例#23
0
    def test_post_video(self):
        """Test that authenticated user can create videos."""
        cat = category(save=True)
        lang = language(name='English', save=True)

        data = {'title': 'Creating delicious APIs for Django apps since 2010.',
                'language': lang.name,
                'category': cat.title,
                'speakers': ['Guido'],
                'tags': ['django', 'api'],
                'state': Video.STATE_LIVE}

        resp = self.auth_post('/api/v2/video/', json.dumps(data),
                              content_type='application/json')
        eq_(resp.status_code, 201)
        eq_(json.loads(smart_text(resp.content))['title'], data['title'])

        vid = Video.objects.get(title=data['title'])
        eq_(vid.title, data['title'])
        eq_(vid.slug, u'creating-delicious-apis-for-django-apps-since-201')
        eq_(list(vid.speakers.values_list('name', flat=True)), ['Guido'])
        eq_(sorted(vid.tags.values_list('tag', flat=True)),
            [u'api', u'django'])
示例#24
0
    def test_put_fails_with_live_videos(self):
        """Test that passing in an id, but no slug with a PUT works."""
        cat = category(save=True)
        lang = language(save=True)
        vid = video(
            title='test1',
            category=cat,
            language=lang,
            state=Video.STATE_LIVE,
            save=True)

        data = {'id': vid.pk,
                'title': 'new title',
                'category': cat.title,
                'language': lang.name,
                'speakers': ['Guido'],
                'tags': ['foo'],
                'state': Video.STATE_DRAFT}

        resp = self.auth_put('/api/v2/video/%d/' % vid.pk,
                             json.dumps(data),
                             content_type='application/json')
        eq_(resp.status_code, 403)
示例#25
0
    def test_post_video(self):
        """Test that authenticated user can create videos."""
        cat = category(save=True)
        lang = language(name="English", save=True)

        data = {
            "title": "Creating delicious APIs for Django apps since 2010.",
            "language": lang.name,
            "category": cat.title,
            "speakers": ["Guido"],
            "tags": ["django", "api"],
            "state": Video.STATE_LIVE,
        }

        resp = self.auth_post("/api/v2/video/", json.dumps(data), content_type="application/json")
        eq_(resp.status_code, 201)
        eq_(json.loads(resp.content)["title"], data["title"])

        vid = Video.objects.get(title=data["title"])
        eq_(vid.title, data["title"])
        eq_(vid.slug, u"creating-delicious-apis-for-django-apps-since-201")
        eq_(list(vid.speakers.values_list("name", flat=True)), ["Guido"])
        eq_(sorted(vid.tags.values_list("tag", flat=True)), [u"api", u"django"])
示例#26
0
    def test_post_video(self):
        """Test that authenticated user can create videos."""
        cat = category(save=True)
        lang = language(name='English', save=True)

        data = {'title': 'Creating delicious APIs for Django apps since 2010.',
                'language': lang.name,
                'category': cat.title,
                'speakers': ['Guido'],
                'tags': ['django', 'api'],
                'state': Video.STATE_LIVE}

        resp = self.auth_post('/api/v2/video/', json.dumps(data),
                              content_type='application/json')
        eq_(resp.status_code, 201)
        eq_(json.loads(smart_text(resp.content))['title'], data['title'])

        vid = Video.objects.get(title=data['title'])
        eq_(vid.title, data['title'])
        eq_(vid.slug, u'creating-delicious-apis-for-django-apps-since-201')
        eq_(list(vid.speakers.values_list('name', flat=True)), ['Guido'])
        eq_(sorted(vid.tags.values_list('tag', flat=True)),
            [u'api', u'django'])
示例#27
0
    def test_put_fails_with_live_videos(self):
        """Test that passing in an id, but no slug with a PUT works."""
        cat = category(save=True)
        lang = language(save=True)
        vid = video(
            title='test1',
            category=cat,
            language=lang,
            state=Video.STATE_LIVE,
            save=True)

        data = {'id': vid.pk,
                'title': 'new title',
                'category': cat.title,
                'language': lang.name,
                'speakers': ['Guido'],
                'tags': ['foo'],
                'state': Video.STATE_DRAFT}

        resp = self.auth_put('/api/v2/video/%d/' % vid.pk,
                             json.dumps(data),
                             content_type='application/json')
        eq_(resp.status_code, 403)