diff --git a/awx/main/tests/factories/tower.py b/awx/main/tests/factories/tower.py index 5d780fb76f..43793a0d7a 100644 --- a/awx/main/tests/factories/tower.py +++ b/awx/main/tests/factories/tower.py @@ -14,9 +14,11 @@ from awx.main.models import ( Label, ) + def instance(): return Instance.objects.get_or_create(uuid=settings.SYSTEM_UUID, primary=True, hostname="instance.example.org") + def mk_organization(name, desc, persisted=True): org = Organization(name=name, description=desc) if persisted: @@ -24,62 +26,84 @@ def mk_organization(name, desc, persisted=True): org.save() return org -def mk_label(name, organization=None, persisted=True): + +def mk_label(name, **kwargs): label = Label(name=name, description="%s-desc".format(name)) + organization = kwargs.get('organization') if organization is not None: label.organization = organization - if persisted: + if kwargs.get('persisted', True): label.save() return label -def mk_team(name, organization=None, persisted=True): + +def mk_team(name, **kwargs): team = Team(name=name) + organization = kwargs.get('organization') if organization is not None: team.organization = organization - if persisted: + if kwargs.get('persisted', True): instance() team.save() return team -def mk_user(name, organization=None, team=None, is_superuser=False, persisted=True): - user = User(username=name) +def mk_user(name, **kwargs): + user = User(username=name, is_superuser=kwargs.get('is_superuser', False)) - if persisted: + if kwargs.get('persisted', True): user.save() + organization = kwargs.get('organization') if organization is not None: organization.member_role.members.add(user) + team = kwargs.get('team') if team is not None: team.member_role.members.add(user) return user -def mk_project(name, organization=None, persisted=True): +def mk_project(name, **kwargs): project = Project(name=name) - + organization = kwargs.get('organization') if organization is not None: project.organization = organization - if persisted: + if kwargs.get('persisted', True): project.save() return project -def mk_credential(name, *args, **kwargs): - return None +def mk_credential(name, **kwargs): + cred = Credential(name=name) + cred.cloud = kwargs.get('cloud', False) + cred.kind = kwargs.get('kind', 'ssh') + if kwargs.get('persisted', True): + cred.save() + return cred -def mk_inventory(name, organization=None, persisted=True): + +def mk_inventory(name, **kwargs): inv = Inventory(name=name) - inv.organization = organization - if persisted: + organization = kwargs.get('organization', None) + if organization is not None: + inv.organization = organization + if kwargs.get('persisted', True): inv.save() return inv -def mk_job_template(name, project=None, inventory=None, credential=None, job_type='run', persisted=True): - jt = JobTemplate(name=name, job_type=job_type) - jt.project = project - jt.inventory = inventory - jt.credential = credential - if persisted: +def mk_job_template(name, **kwargs): + jt = JobTemplate(name=name, job_type=kwargs.get('job_type', 'run')) + + jt.inventory = kwargs.get('inventory', None) + if jt.inventory is None: + jt.ask_inventory_on_launch = True + + jt.credential = kwargs.get('credential', None) + if jt.credential is None: + jt.ask_credential_on_launch = True + + jt.project = kwargs.get('project', None) + + if kwargs.get('persisted', True): jt.save() return jt @@ -93,42 +117,47 @@ class _Mapped(object): def all(self): return self.d.values() -def create_job_template(name, *args, **kwargs): - Objects = namedtuple("Objects", "organization, job_template, inventory, project, credential") +def create_job_template(name, **kwargs): + Objects = namedtuple("Objects", "job_template, inventory, project, credential, job_type") org = None proj = None inv = None cred = None + job_type = kwargs.get('job_type', 'run') + persisted = kwargs.get('persisted', True) if 'organization' in kwargs: org = kwargs['organization'] if type(org) is not Organization: - org = mk_organization(org, '%s-desc'.format(org)) + org = mk_organization(org, '%s-desc'.format(org), persisted=persisted) if 'credential' in kwargs: cred = kwargs['credential'] if type(cred) is not Credential: - cred = mk_credential(cred) + cred = mk_credential(cred, persisted=persisted) if 'project' in kwargs: proj = kwargs['project'] if type(proj) is not Project: - proj = mk_project(proj, org) + proj = mk_project(proj, organization=org, persisted=persisted) if 'inventory' in kwargs: inv = kwargs['inventory'] if type(inv) is not Inventory: - inv = mk_inventory(inv, org) + inv = mk_inventory(inv, organization=org, persisted=persisted) - jt = mk_job_template(name, proj, inv, cred) + jt = mk_job_template(name, project=proj, + inventory=inv, credential=cred, + job_type=job_type, persisted=persisted) return Objects(job_template=jt, project=proj, inventory=inv, - credential=cred) + credential=cred, + job_type=job_type) -def create_organization(name, *args, **kwargs): +def create_organization(name, **kwargs): Objects = namedtuple("Objects", "organization,teams,users,superusers,projects,labels") org = mk_organization(name, '%s-desc'.format(name)) @@ -138,20 +167,21 @@ def create_organization(name, *args, **kwargs): teams = {} projects = {} labels = {} + persisted = kwargs.get('persisted', True) if 'teams' in kwargs: for t in kwargs['teams']: if type(t) is Team: teams[t.name] = t else: - teams[t] = mk_team(t, org) + teams[t] = mk_team(t, organization=org, persisted=persisted) if 'projects' in kwargs: for p in kwargs['projects']: if type(p) is Project: projects[p.name] = p else: - projects[p] = mk_project(p, org) + projects[p] = mk_project(p, organization=org, persisted=persisted) if 'superusers' in kwargs: # remove this duplication eventually @@ -162,9 +192,9 @@ def create_organization(name, *args, **kwargs): p1, sep, p2 = u.partition(':') if p2: t = teams[p1] - superusers[p2] = mk_user(p2, org, t, True) + superusers[p2] = mk_user(p2, organization=org, team=t, is_superuser=True, persisted=persisted) else: - superusers[p1] = mk_user(p1, org, None, True) + superusers[p1] = mk_user(p1, organization=org, team=None, is_superuser=True, persisted=persisted) if 'users' in kwargs: # remove this duplication eventually @@ -175,16 +205,16 @@ def create_organization(name, *args, **kwargs): p1, sep, p2 = u.partition(':') if p2: t = teams[p1] - users[p2] = mk_user(p2, org, t) + users[p2] = mk_user(p2, organization=org, team=t, is_superuser=False, persisted=persisted) else: - users[p1] = mk_user(p1, org) + users[p1] = mk_user(p1, organization=org, is_superuser=False, persisted=persisted) if 'labels' in kwargs: for l in kwargs['labels']: if type(l) is Label: labels[l.name] = l else: - labels[l] = mk_label(l, org) + labels[l] = mk_label(l, org, persisted=persisted) return Objects(organization=org, superusers=_Mapped(superusers), diff --git a/awx/main/tests/functional/test_fixture_factories.py b/awx/main/tests/functional/test_fixture_factories.py index ea8220f177..d1cd39f89e 100644 --- a/awx/main/tests/functional/test_fixture_factories.py +++ b/awx/main/tests/functional/test_fixture_factories.py @@ -22,4 +22,4 @@ def test_job_template_factory(job_template_factory): assert jt_objects.project.name == 'proj1' assert jt_objects.inventory.name == 'inventory1' assert jt_objects.credential.name == 'cred1' - assert jt_objects.organization.name == 'org1' + assert jt_objects.inventory.organization.name == 'org1'