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_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'])
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"])
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'])
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'])
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)
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)
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)
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)
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)
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)
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())
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)
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())
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'])
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'])
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'])
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)
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"])