petale/tests/utils.py

72 lines
1.8 KiB
Python
Raw Normal View History

2017-02-20 19:11:56 +01:00
import os
import json
2020-04-06 12:14:01 +02:00
from io import BytesIO
2017-02-20 19:11:56 +01:00
import pytest
import mock
2017-02-20 19:11:56 +01:00
from django.contrib.auth.models import User
from django.core.files import File
from petale.models import Partner, CUT, AccessControlList, Petal
2017-03-29 17:13:54 +02:00
from petale.utils import etag
2017-02-20 19:11:56 +01:00
pytestmark = pytest.mark.django_db
def get_tests_file(filename):
return os.path.join(os.path.dirname(__file__), 'data', filename)
def get_tests_file_content(filename):
2020-04-06 12:14:01 +02:00
return open(get_tests_file(filename), 'rb').read()
2017-02-20 19:11:56 +01:00
2017-02-27 11:58:49 +01:00
def create_service(name, password=None):
2017-02-20 19:11:56 +01:00
if not password:
password = name
user = User.objects.create(username=name)
user.set_password(password)
user.save()
return user
2017-02-20 19:11:56 +01:00
2017-02-27 11:58:49 +01:00
def get_service(name):
return User.objects.get(username=name)
2017-02-20 19:11:56 +01:00
def create_partner(name, admins=None, hg=2, sg=1, hk=1, sk=1):
if not admins:
admins = 'e.cartman@southpark.com,t.blakc@southpark.com'
return Partner.objects.create(
name=name, admin_emails=admins,
hard_global_max_size=hg, soft_global_max_size=sg,
hard_per_key_max_size=hk, soft_per_key_max_size=sk)
2017-02-20 19:11:56 +01:00
2017-02-27 11:58:49 +01:00
2017-02-27 17:59:59 +01:00
def create_acl_record(order, partner, user, key, methods='*'):
return AccessControlList.objects.create(order=order, partner=partner, user=user, key=key, methods=methods)
2017-02-27 11:58:49 +01:00
def create_petal(cut_uuid, partner, name, data, content_type):
cut, created = CUT.objects.get_or_create(uuid=cut_uuid)
2017-03-29 17:13:54 +02:00
return Petal.objects.create(
cut=cut,
partner=partner,
2017-03-29 17:13:54 +02:00
name=name,
size=len(data),
etag=etag(data),
2020-04-06 12:14:01 +02:00
data=File(BytesIO(data), name),
2017-03-29 17:13:54 +02:00
content_type=content_type
)
class FakedResponse(mock.Mock):
def json(self):
return json.loads(self.content)
2017-06-07 05:54:14 +02:00
def create_cut(cut_uuid):
cut, created = CUT.objects.get_or_create(uuid=cut_uuid)
return cut