class RecipeRevisionFactory(factory.DjangoModelFactory): class Meta: model = RecipeRevision name = FuzzyUnicode() action = factory.SubFactory(ActionFactory) recipe = factory.SubFactory(RecipeFactory) identicon_seed = FuzzyIdenticonSeed() comment = FuzzyUnicode() extra_filter_expression = factory.fuzzy.FuzzyChoice(["true", "false"]) extra_capabilities = [] @factory.lazy_attribute def filter_object_json(self): filters = [ ChannelFilterFactory(), LocaleFilterFactory(), CountryFilterFactory(), StableSampleFilterFactory(), BucketSampleFilterFactory(), ] return json.dumps(filters) @factory.post_generation def arguments(revision, create, extracted=None, **kwargs): arguments_factory = argument_factories.get(revision.action.name) if arguments_factory: if extracted is None: extracted = {} revision.arguments = arguments_factory(**kwargs, **extracted) elif extracted is not None: revision.arguments = {**extracted, **kwargs}
class ExtensionFactory(factory.DjangoModelFactory): name = FuzzyUnicode() xpi = factory.django.FileField( from_func=lambda: WebExtensionFileFactory().open()) class Meta: model = Extension
class RecipeRevisionFactory(factory.DjangoModelFactory): class Meta: model = RecipeRevision name = FuzzyUnicode() action = factory.SubFactory(ActionFactory) recipe = factory.SubFactory(RecipeFactory)
class RecipeFactory(factory.DjangoModelFactory): class Meta: model = Recipe name = FuzzyUnicode() action = factory.SubFactory(ActionFactory) enabled = True @factory.post_generation def countries(self, create, extracted, **kwargs): if not create: return if extracted: for country in extracted: self.countries.add(country) @factory.post_generation def locales(self, create, extracted, **kwargs): if not create: return if extracted: for locale in extracted: self.locales.add(locale) @factory.post_generation def release_channels(self, create, extracted, **kwargs): if not create: return if extracted: for channel in extracted: self.release_channels.add(channel)
class ActionFactory(factory.DjangoModelFactory): class Meta: model = Action name = FuzzyUnicode() implementation = 'console.log("test");' @factory.lazy_attribute def implementation_hash(action): if action.implementation is not None: return sri_hash(action.implementation.encode(), url_safe=True) # It is important that the signature be based on the actual data, and not # some static value so that tests can make assertions against what data was # signed. @factory.post_generation def signed(self, create, extracted=False, **kwargs): if extracted: self.signature = SignatureFactory(data=self.canonical_json()) self.signature.save() self.save() elif extracted is False: self.signature = None self.save()
class ExtensionFactory(factory.DjangoModelFactory): name = FuzzyUnicode() xpi = factory.django.FileField( from_path=os.path.join(DATA_DIR, "webext-signed.xpi")) class Meta: model = Extension
class ActionFactory(factory.DjangoModelFactory): class Meta: model = Action name = FuzzyUnicode() implementation = 'console.log("test");' @factory.lazy_attribute def implementation_hash(action): return hashlib.sha1(action.implementation.encode()).hexdigest()
class RecipeRevisionFactory(factory.DjangoModelFactory): class Meta: model = RecipeRevision name = FuzzyUnicode() action = factory.SubFactory(ActionFactory) recipe = factory.SubFactory(RecipeFactory) identicon_seed = FuzzyIdenticonSeed() comment = FuzzyUnicode() extra_filter_expression = factory.fuzzy.FuzzyChoice(["true", "false"]) @factory.lazy_attribute def filter_object_json(self): filters = [ ChannelFilterFactory(), LocaleFilterFactory(), CountryFilterFactory(), StableSampleFilterFactory(), BucketSampleFilterFactory(), ] return json.dumps(filters)
class LocaleFactory(factory.DjangoModelFactory): name = FuzzyUnicode() class Meta: model = Locale
class CountryFactory(factory.DjangoModelFactory): name = FuzzyUnicode() class Meta: model = Country
class ChannelFactory(factory.DjangoModelFactory): name = FuzzyUnicode() class Meta: model = Channel
class ActionFactory(factory.DjangoModelFactory): class Meta: model = Action name = FuzzyUnicode() implementation = 'console.log("test");'
class ReleaseChannelFactory(factory.DjangoModelFactory): class Meta: model = ReleaseChannel name = FuzzyUnicode() slug = factory.LazyAttribute(lambda o: slugify(o.name))
class ExtensionFactory(factory.DjangoModelFactory): name = FuzzyUnicode() xpi = factory.django.FileField() class Meta: model = Extension