combo/tests/test_assets.py

45 lines
1.5 KiB
Python

# -*- coding: utf-8 -*-
import base64
from django.core.urlresolvers import reverse
import pytest
from combo.apps.assets.models import Asset
pytestmark = pytest.mark.django_db
def test_asset_set_api(app, john_doe):
app.authorization = ('Basic', (john_doe.username, john_doe.username))
resp = app.post_json(reverse('api-assets-set', kwargs={'key': 'plop'}), params={
'asset': {
'content': base64.encodestring(b'plop').decode('ascii'),
'content_type': 'text/plain',
'filename': 'plop.txt',
}
})
assert Asset.objects.get(key='plop').asset.read() == b'plop'
resp = app.post_json(reverse('api-assets-set', kwargs={'key': 'plop'}), params={
'asset': {
'content': base64.encodestring(b'plop2').decode('ascii'),
'content_type': 'text/plain',
'filename': 'plop.txt',
}
})
assert Asset.objects.get(key='plop').asset.read() == b'plop2'
resp = app.post_json(reverse('api-assets-set', kwargs={'key': 'plop'}), params={}, status=400)
assert resp.json.get('err') == 1
for invalid_value in (None, 'not base 64', u'éléphant'):
resp = app.post_json(reverse('api-assets-set', kwargs={'key': 'plop'}), params={
'asset': {
'content': invalid_value,
'content_type': 'text/plain',
'filename': 'plop.txt',
}
}, status=400)
assert resp.json.get('err') == 1