From 87daa81762d0b8fd7c4a34671a8f6173a7921e5e Mon Sep 17 00:00:00 2001 From: Eliot Berriot <contact@eliotberriot.com> Date: Thu, 5 Apr 2018 23:27:19 +0200 Subject: [PATCH] More factories --- api/funkwhale_api/federation/factories.py | 47 +++++++++++++++++++++++ api/funkwhale_api/music/factories.py | 18 +++++++++ 2 files changed, 65 insertions(+) diff --git a/api/funkwhale_api/federation/factories.py b/api/funkwhale_api/federation/factories.py index 277b9ce0..63d40aff 100644 --- a/api/funkwhale_api/federation/factories.py +++ b/api/funkwhale_api/federation/factories.py @@ -1,6 +1,7 @@ import factory import requests import requests_http_signature +import uuid from django.utils import timezone from django.conf import settings @@ -52,6 +53,21 @@ class SignedRequestFactory(factory.Factory): self.headers.update(default_headers) +@registry.register(name='federation.Link') +class LinkFactory(factory.Factory): + type = 'Link' + href = factory.Faker('url') + mediaType = 'text/html' + + class Meta: + model = dict + + class Params: + audio = factory.Trait( + mediaType=factory.Iterator(['audio/mp3', 'audio/ogg']) + ) + + @registry.register class ActorFactory(factory.DjangoModelFactory): public_key = None @@ -135,3 +151,34 @@ class ActivityFactory(factory.Factory): class Meta: model = dict + + +@registry.register(name='federation.AudioMetadata') +class AudioMetadataFactory(factory.Factory): + recording = factory.LazyAttribute( + lambda o: 'https://musicbrainz.org/recording/{}'.format(uuid.uuid4()) + ) + artist = factory.LazyAttribute( + lambda o: 'https://musicbrainz.org/artist/{}'.format(uuid.uuid4()) + ) + release = factory.LazyAttribute( + lambda o: 'https://musicbrainz.org/release/{}'.format(uuid.uuid4()) + ) + + class Meta: + model = dict + + +@registry.register(name='federation.Audio') +class AudioFactory(factory.Factory): + type = 'Audio' + id = factory.Faker('url') + published = factory.LazyFunction( + lambda: timezone.now().isoformat() + ) + actor = factory.Faker('url') + url = factory.SubFactory(LinkFactory, audio=True) + metadata = factory.SubFactory(AudioMetadataFactory) + + class Meta: + model = dict diff --git a/api/funkwhale_api/music/factories.py b/api/funkwhale_api/music/factories.py index 303e4522..27387ca9 100644 --- a/api/funkwhale_api/music/factories.py +++ b/api/funkwhale_api/music/factories.py @@ -2,6 +2,10 @@ import factory import os from funkwhale_api.factories import registry, ManyToManyFromList +from funkwhale_api.federation.factories import ( + AudioMetadataFactory, + ActorFactory, +) from funkwhale_api.users.factories import UserFactory SAMPLES_PATH = os.path.join( @@ -61,6 +65,13 @@ class ImportBatchFactory(factory.django.DjangoModelFactory): class Meta: model = 'music.ImportBatch' + class Params: + federation = factory.Trait( + submitted_by=None, + federation_actor=factory.SubFactory(ActorFactory), + source='federation', + ) + @registry.register class ImportJobFactory(factory.django.DjangoModelFactory): @@ -71,6 +82,13 @@ class ImportJobFactory(factory.django.DjangoModelFactory): class Meta: model = 'music.ImportJob' + class Params: + federation = factory.Trait( + batch=factory.SubFactory(ImportBatchFactory, federation=True), + federation_source=factory.Faker('url'), + metadata=factory.SubFactory(AudioMetadataFactory), + ) + @registry.register(name='music.FileImportJob') class FileImportJobFactory(ImportJobFactory): -- GitLab