petale/tests/utils.py

72 lines
1.8 KiB
Python

import os
import json
from io import BytesIO
import pytest
import mock
from django.contrib.auth.models import User
from django.core.files import File
from petale.models import Partner, CUT, AccessControlList, Petal
from petale.utils import etag
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):
return open(get_tests_file(filename), 'rb').read()
def create_service(name, password=None):
if not password:
password = name
user = User.objects.create(username=name)
user.set_password(password)
user.save()
return user
def get_service(name):
return User.objects.get(username=name)
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)
def create_acl_record(order, partner, user, key, methods='*'):
return AccessControlList.objects.create(order=order, partner=partner, user=user, key=key, methods=methods)
def create_petal(cut_uuid, partner, name, data, content_type):
cut, created = CUT.objects.get_or_create(uuid=cut_uuid)
return Petal.objects.create(
cut=cut,
partner=partner,
name=name,
size=len(data),
etag=etag(data),
data=File(BytesIO(data), name),
content_type=content_type
)
class FakedResponse(mock.Mock):
def json(self):
return json.loads(self.content)
def create_cut(cut_uuid):
cut, created = CUT.objects.get_or_create(uuid=cut_uuid)
return cut