# Copyright (c) 2018 Red Hat, Inc. # # This file is part of ARA Records Ansible. # # ARA is free software: you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation, either version 3 of the License, or # (at your option) any later version. # # ARA is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with ARA. If not, see . import factory from ara.api import models from ara.api.tests import utils # constants for things like compressed byte strings or objects FILE_CONTENTS = "---\n# Example file" HOST_FACTS = {"ansible_fqdn": "hostname", "ansible_distribution": "CentOS"} PLAYBOOK_ARGUMENTS = {"ansible_version": "2.5.5", "inventory": "/etc/ansible/hosts"} RESULT_CONTENTS = {"results": [{"msg": "something happened"}]} LABEL_DESCRIPTION = "label description" TASK_TAGS = ["always", "never"] class FileContentFactory(factory.DjangoModelFactory): class Meta: model = models.FileContent django_get_or_create = ("sha1",) sha1 = utils.sha1(FILE_CONTENTS) contents = utils.compressed_str(FILE_CONTENTS) class FileFactory(factory.DjangoModelFactory): class Meta: model = models.File path = "/path/playbook.yml" content = factory.SubFactory(FileContentFactory) class LabelFactory(factory.DjangoModelFactory): class Meta: model = models.Label name = "test label" description = utils.compressed_str(LABEL_DESCRIPTION) class PlaybookFactory(factory.DjangoModelFactory): class Meta: model = models.Playbook ansible_version = "2.4.0" status = "running" arguments = utils.compressed_obj(PLAYBOOK_ARGUMENTS) file = factory.SubFactory(FileFactory) class PlayFactory(factory.DjangoModelFactory): class Meta: model = models.Play name = "test play" completed = True uuid = "5c5f67b9-e63c-6297-80da-000000000005" playbook = factory.SubFactory(PlaybookFactory) class TaskFactory(factory.DjangoModelFactory): class Meta: model = models.Task name = "test task" completed = True action = "setup" lineno = 2 handler = False tags = utils.compressed_obj(TASK_TAGS) play = factory.SubFactory(PlayFactory) file = factory.SubFactory(FileFactory) playbook = factory.SubFactory(PlaybookFactory) class HostFactory(factory.DjangoModelFactory): class Meta: model = models.Host facts = utils.compressed_obj(HOST_FACTS) name = "hostname" alias = "9f5d3ba7-e43d-4f3b-ab17-f90c39e43d07" playbook = factory.SubFactory(PlaybookFactory) class ResultFactory(factory.DjangoModelFactory): class Meta: model = models.Result content = utils.compressed_obj(RESULT_CONTENTS) status = "ok" host = factory.SubFactory(HostFactory) task = factory.SubFactory(TaskFactory) playbook = factory.SubFactory(PlaybookFactory) class RecordFactory(factory.DjangoModelFactory): class Meta: model = models.Record key = "record-key" value = "some-value" type = "text" playbook = factory.SubFactory(PlaybookFactory) class StatsFactory(factory.DjangoModelFactory): class Meta: model = models.Stats changed = 1 failed = 0 ok = 2 skipped = 1 unreachable = 0 playbook = factory.SubFactory(PlaybookFactory) host = factory.SubFactory(HostFactory)