Example #1
0
    def test_generate_junit_for_playbook(self):
        """ Roughly ensures the expected xml is generated properly """
        tdir = self.generate_dir

        # Record two separate playbooks
        ctx = ansible_run()
        ansible_run()
        cmd = ara.cli.generate.GenerateJunit(None, None)
        parser = cmd.get_parser('test')

        junit_file = "{tdir}/junit-playbook.xml".format(tdir=tdir)
        playbook = ctx['playbook'].id
        args = parser.parse_args([junit_file, '--playbook', playbook])
        cmd.take_action(args)

        # Test that we effectively have two playbooks
        playbooks = m.Playbook.query.all()
        all_tasks = m.Task.query.all()
        tasks = (m.Task.query
                 .filter(m.Task.playbook_id == ctx['playbook'].id).all())
        self.assertEqual(len(playbooks), 2)
        self.assertNotEqual(len(all_tasks), len(tasks))

        self.assertTrue(os.path.exists(junit_file))

        tree = etree.parse(junit_file)
        self.assertEqual(tree.getroot().tag, "testsuites")
        self.assertEqual(tree.getroot()[0].tag, "testsuite")
        self.assertEqual(tree.getroot()[0][0].tag, "testcase")
        self.assertEqual(int(tree.getroot().get('tests')), len(tasks))
Example #2
0
    def test_fast_count(self):
        ansible_run()
        query = m.Task.query

        normal_count = query.count()
        fast_count = u.fast_count(query)

        self.assertEqual(normal_count, fast_count)
Example #3
0
    def test_stats_show_non_existing(self):
        ansible_run()

        cmd = ara.cli.stats.StatsShow(None, None)
        parser = cmd.get_parser('test')
        args = parser.parse_args(['foo'])

        with self.assertRaises(RuntimeError):
            cmd.take_action(args)
Example #4
0
    def test_task_list_non_existing_playbook(self):
        ansible_run()

        cmd = ara.cli.task.TaskList(None, None)
        parser = cmd.get_parser('test')
        args = parser.parse_args(['--playbook', 'foo'])
        res = cmd.take_action(args)

        self.assertEqual(res[1], [])
Example #5
0
    def test_result_list_non_existing_task(self):
        ansible_run()

        cmd = ara.cli.result.ResultList(None, None)
        parser = cmd.get_parser('test')
        args = parser.parse_args(['--task', 'foo'])
        res = cmd.take_action(args)

        self.assertEqual(res[1], [])
Example #6
0
    def test_data_list_for_non_existing_playbook(self):
        ansible_run(ara_record=True)

        cmd = ara.cli.data.DataList(None, None)
        parser = cmd.get_parser('test')
        args = parser.parse_args(['--playbook', 'foo'])
        res = cmd.take_action(args)

        self.assertEqual(res[1], [])
Example #7
0
    def test_playbook_list_incomplete_with_no_incomplete(self):
        ansible_run()

        cmd = ara.cli.playbook.PlaybookList(None, None)
        parser = cmd.get_parser('test')
        args = parser.parse_args(['--incomplete'])
        res = cmd.take_action(args)

        self.assertEqual(res[1], [])
Example #8
0
    def test_result_show_long_non_existing(self):
        ansible_run()

        cmd = ara.cli.result.ResultShow(None, None)
        parser = cmd.get_parser('test')
        args = parser.parse_args(['foo', '--long'])

        with self.assertRaises(RuntimeError):
            cmd.take_action(args)
Example #9
0
    def test_host_fact_non_existing_host(self):
        ansible_run()

        cmd = ara.cli.host.HostFacts(None, None)
        parser = cmd.get_parser('test')
        args = parser.parse_args('foo')

        with self.assertRaises(RuntimeError):
            cmd.take_action(args)
Example #10
0
    def test_data_show_for_non_existing_data(self):
        ansible_run(ara_record=True)

        cmd = ara.cli.data.DataShow(None, None)
        parser = cmd.get_parser('test')
        args = parser.parse_args(['foo'])

        with self.assertRaises(RuntimeError):
            cmd.take_action(args)
Example #11
0
    def test_generate_html_no_destination(self):
        """ Ensures generating without a destination fails """
        ansible_run()

        cmd = ara.cli.generate.GenerateHtml(None, None)
        parser = cmd.get_parser('test')

        with self.assertRaises(SystemExit):
            args = parser.parse_args([])
            cmd.take_action(args)
Example #12
0
    def test_playbook_delete(self):
        # Run two playbook runs
        ctx = ansible_run(ara_record=True)
        ansible_run(gather_facts=False)

        # Assert that we have two playbooks and that we have valid data for
        # the first playbook
        playbooks = m.Playbook.query.all()
        self.assertTrue(len(playbooks) == 2)

        d = m.Data.query.filter(m.Data.playbook_id.in_([ctx['playbook'].id]))
        self.assertNotEqual(d.count(), 0)
        f = m.File.query.filter(m.File.playbook_id.in_([ctx['playbook'].id]))
        self.assertNotEqual(f.count(), 0)
        p = m.Play.query.filter(m.Play.playbook_id.in_([ctx['playbook'].id]))
        self.assertNotEqual(p.count(), 0)
        t = m.Task.query.filter(m.Task.playbook_id.in_([ctx['playbook'].id]))
        self.assertNotEqual(t.count(), 0)
        tr = m.TaskResult.query.count()  # compared later
        h = m.Host.query.filter(m.Host.playbook_id.in_([ctx['playbook'].id]))
        self.assertNotEqual(h.count(), 0)
        hf = m.HostFacts.query
        self.assertNotEqual(hf.count(), 0)
        s = m.Stats.query.filter(m.Stats.playbook_id.in_([ctx['playbook'].id]))
        self.assertNotEqual(s.count(), 0)

        # Delete the first playbook
        cmd = ara.cli.playbook.PlaybookDelete(None, None)
        parser = cmd.get_parser('test')
        args = parser.parse_args([ctx['playbook'].id])
        cmd.take_action(args)

        # Assert that we only have one playbook left and that records have been
        # deleted
        playbooks = m.Playbook.query.all()
        self.assertTrue(len(playbooks) == 1)

        d = m.Data.query.filter(m.Data.playbook_id.in_([ctx['playbook'].id]))
        self.assertEqual(d.count(), 0)
        f = m.File.query.filter(m.File.playbook_id.in_([ctx['playbook'].id]))
        self.assertEqual(f.count(), 0)
        p = m.Play.query.filter(m.Play.playbook_id.in_([ctx['playbook'].id]))
        self.assertEqual(p.count(), 0)
        t = m.Task.query.filter(m.Task.playbook_id.in_([ctx['playbook'].id]))
        self.assertEqual(t.count(), 0)
        new_tr = m.TaskResult.query.count()  # compare before and after
        self.assertNotEqual(tr, new_tr)
        h = m.Host.query.filter(m.Host.playbook_id.in_([ctx['playbook'].id]))
        self.assertEqual(h.count(), 0)
        hf = m.HostFacts.query
        self.assertEqual(hf.count(), 0)
        s = m.Stats.query.filter(m.Stats.playbook_id.in_([ctx['playbook'].id]))
        self.assertEqual(s.count(), 0)
Example #13
0
    def test_reports_with_pagination(self):
        ansible_run()
        ansible_run()
        self.app.config['ARA_PLAYBOOK_PER_PAGE'] = 1
        res = self.client.get('/reports/')
        self.assertEqual(res.status_code, 200)

        res = self.client.get('/reports/list/1.html')
        self.assertEqual(res.status_code, 200)

        res = self.client.get('/reports/list/2.html')
        self.assertEqual(res.status_code, 200)
Example #14
0
    def test_data_show_by_id(self):
        ctx = ansible_run(ara_record=True)

        cmd = ara.cli.data.DataShow(None, None)
        parser = cmd.get_parser('test')
        args = parser.parse_args([ctx['data'].id])
        res = cmd.take_action(args)

        self.assertEqual(res[1][0], ctx['data'].id)
Example #15
0
    def test_result_list_task(self):
        ctx = ansible_run()

        cmd = ara.cli.result.ResultList(None, None)
        parser = cmd.get_parser('test')
        args = parser.parse_args(['--task', ctx['task'].id])
        res = cmd.take_action(args)

        self.assertEqual(res[1][0][0], ctx['result'].id)
Example #16
0
    def test_playbook_show(self):
        ctx = ansible_run()

        cmd = ara.cli.playbook.PlaybookShow(None, None)
        parser = cmd.get_parser('test')
        args = parser.parse_args([ctx['playbook'].id])
        res = cmd.take_action(args)

        self.assertEqual(res[1][0], ctx['playbook'].id)
Example #17
0
    def test_play_list_all(self):
        ctx = ansible_run()

        cmd = ara.cli.play.PlayList(None, None)
        parser = cmd.get_parser('test')
        args = parser.parse_args(['--all'])
        res = cmd.take_action(args)

        self.assertEqual(res[1][0][0], ctx['play'].id)
Example #18
0
    def test_host_fact_existing_host_non_existing_facts(self):
        ctx = ansible_run(gather_facts=False)

        cmd = ara.cli.host.HostFacts(None, None)
        parser = cmd.get_parser('test')
        args = parser.parse_args([ctx['host'].id])

        with self.assertRaises(RuntimeError):
            cmd.take_action(args)
Example #19
0
    def test_host_show_by_id(self):
        ctx = ansible_run()

        cmd = ara.cli.host.HostShow(None, None)
        parser = cmd.get_parser('test')
        args = parser.parse_args([ctx['host'].id])
        res = cmd.take_action(args)

        self.assertEqual(res[1][0], ctx['host'].id)
Example #20
0
    def test_host_list(self):
        ctx = ansible_run()

        cmd = ara.cli.host.HostList(None, None)
        parser = cmd.get_parser('test')
        args = parser.parse_args(['-a'])
        res = cmd.take_action(args)

        self.assertEqual(res[1][0][0], ctx['host'].id)
Example #21
0
    def test_playbook_list_incomplete(self):
        ctx = ansible_run(complete=False)

        cmd = ara.cli.playbook.PlaybookList(None, None)
        parser = cmd.get_parser('test')
        args = parser.parse_args(['--incomplete'])
        res = cmd.take_action(args)

        self.assertEqual(res[1][0][0], ctx['playbook'].id)
Example #22
0
    def test_stats_show(self):
        ctx = ansible_run()

        cmd = ara.cli.stats.StatsShow(None, None)
        parser = cmd.get_parser('test')
        args = parser.parse_args([ctx['stats'].id])
        res = cmd.take_action(args)

        self.assertEqual(res[1][0], ctx['stats'].id)
Example #23
0
    def test_data_list_for_playbook(self):
        ctx = ansible_run(ara_record=True)

        cmd = ara.cli.data.DataList(None, None)
        parser = cmd.get_parser('test')
        args = parser.parse_args(['--playbook', ctx['playbook'].id])
        res = cmd.take_action(args)

        self.assertEqual(res[1][0][0], ctx['data'].id)
Example #24
0
    def test_task_list_playbook(self):
        ctx = ansible_run()

        cmd = ara.cli.task.TaskList(None, None)
        parser = cmd.get_parser('test')
        args = parser.parse_args(['--playbook', ctx['playbook'].id])
        res = cmd.take_action(args)

        self.assertEqual(res[1][0][0], ctx['task'].id)
Example #25
0
    def test_host_show_by_name(self):
        ctx = ansible_run()

        cmd = ara.cli.host.HostShow(None, None)
        parser = cmd.get_parser('test')
        args = parser.parse_args(
            ['-b', ctx['host'].playbook.id, ctx['host'].name])
        res = cmd.take_action(args)

        self.assertEqual(res[1][0], ctx['host'].id)
Example #26
0
    def test_host_fact_by_id(self):
        ctx = ansible_run()

        cmd = ara.cli.host.HostFacts(None, None)
        parser = cmd.get_parser('test')
        args = parser.parse_args([ctx['host'].id])
        res = cmd.take_action(args)

        facts = json.loads(ctx['facts'].values)
        self.assertEqual(res, zip(*sorted(six.iteritems(facts))))
Example #27
0
    def test_result_show_long(self):
        ctx = ansible_run()

        cmd = ara.cli.result.ResultShow(None, None)
        parser = cmd.get_parser('test')
        args = parser.parse_args([ctx['result'].id, '--long'])
        res = cmd.take_action(args)

        self.assertEqual(res[1][0], ctx['result'].id)
        self.assertEqual(res[1][-1], json.dumps(ctx['result'].result))
Example #28
0
    def test_data_show_by_key(self):
        ctx = ansible_run(ara_record=True)

        cmd = ara.cli.data.DataShow(None, None)
        parser = cmd.get_parser('test')
        args = parser.parse_args(
            ['-b', ctx['data'].playbook.id, ctx['data'].key])
        res = cmd.take_action(args)

        self.assertEqual(res[1][0], ctx['data'].id)
Example #29
0
    def test_result_show_long(self):
        ctx = ansible_run()

        cmd = ara.cli.result.ResultShow(None, None)
        parser = cmd.get_parser('test')
        args = parser.parse_args([ctx['result'].id, '--long'])
        res = cmd.take_action(args)

        self.assertEqual(res[1][0], ctx['result'].id)
        self.assertEqual(res[1][-1], jsonutils.dumps(ctx['result'].result))
Example #30
0
    def test_generate_html_for_playbook(self):
        """ Roughly ensures the expected files are generated properly """
        dir = self.generate_dir

        # Record two separate playbooks
        ctx = ansible_run()
        ansible_run()
        cmd = ara.cli.generate.GenerateHtml(None, None)
        parser = cmd.get_parser('test')

        args = parser.parse_args([dir, '--playbook', ctx['playbook'].id])
        cmd.take_action(args)

        file_id = ctx['task'].file_id
        host_id = ctx['host'].id
        result_id = ctx['result'].id
        paths = [
            os.path.join(dir, 'index.html'),
            os.path.join(dir, 'static'),
            os.path.join(dir, 'file/index.html'),
            os.path.join(dir, 'file/{0}'.format(file_id)),
            os.path.join(dir, 'host/index.html'),
            os.path.join(dir, 'host/{0}'.format(host_id)),
            os.path.join(dir, 'reports/index.html'),
            os.path.join(dir, 'playbook/index.html'),
            os.path.join(dir, 'result/index.html'),
            os.path.join(dir, 'result/{0}'.format(result_id))
        ]

        for path in paths:
            self.assertTrue(os.path.exists(path))

        # Test that we effectively have two playbooks
        playbooks = m.Playbook.query.all()
        self.assertTrue(len(playbooks) == 2)

        # Retrieve the other playbook and validate that we haven't generated
        # files for it
        playbook_two = (m.Playbook.query
                        .filter(m.Playbook.id != ctx['playbook'].id).one())
        path = os.path.join(dir, 'playbook/{0}'.format(playbook_two.id))
        self.assertFalse(os.path.exists(path))
Example #31
0
    def test_get_summary_stats_failed(self):
        ctx = ansible_run(failed=True)
        playbook = ctx['playbook'].id
        res = u.get_summary_stats([ctx['playbook']], 'playbook_id')

        self.assertEqual(1, res[playbook]['ok'])
        self.assertEqual(1, res[playbook]['changed'])
        self.assertEqual(1, res[playbook]['failed'])
        self.assertEqual(1, res[playbook]['skipped'])
        self.assertEqual(0, res[playbook]['unreachable'])
        self.assertEqual('failed', res[playbook]['status'])
    def test_get_summary_stats_failed(self):
        ctx = ansible_run(failed=True)
        playbook = ctx['playbook'].id
        res = u.get_summary_stats([ctx['playbook']], 'playbook_id')

        self.assertEqual(1, res[playbook]['ok'])
        self.assertEqual(1, res[playbook]['changed'])
        self.assertEqual(1, res[playbook]['failed'])
        self.assertEqual(1, res[playbook]['skipped'])
        self.assertEqual(0, res[playbook]['unreachable'])
        self.assertEqual('failed', res[playbook]['status'])
Example #33
0
    def test_get_summary_stats_incomplete(self):
        ctx = ansible_run(complete=False)
        playbook = ctx['playbook'].id
        res = u.get_summary_stats([ctx['playbook']], 'playbook_id')

        self.assertEqual(0, res[playbook]['ok'])
        self.assertEqual(0, res[playbook]['changed'])
        self.assertEqual(0, res[playbook]['failed'])
        self.assertEqual(0, res[playbook]['skipped'])
        self.assertEqual(0, res[playbook]['unreachable'])
        self.assertEqual('incomplete', res[playbook]['status'])
    def test_get_summary_stats_incomplete(self):
        ctx = ansible_run(complete=False)
        playbook = ctx['playbook'].id
        res = u.get_summary_stats([ctx['playbook']], 'playbook_id')

        self.assertEqual(0, res[playbook]['ok'])
        self.assertEqual(0, res[playbook]['changed'])
        self.assertEqual(0, res[playbook]['failed'])
        self.assertEqual(0, res[playbook]['skipped'])
        self.assertEqual(0, res[playbook]['unreachable'])
        self.assertEqual('incomplete', res[playbook]['status'])
Example #35
0
    def test_host_fact_by_id(self):
        ctx = ansible_run()

        cmd = ara.cli.host.HostFacts(None, None)
        parser = cmd.get_parser('test')
        args = parser.parse_args([ctx['host'].id])
        res = cmd.take_action(args)

        facts = jsonutils.loads(ctx['facts'].values)
        expected = six.moves.zip(*sorted(six.iteritems(facts)))
        self.assertSequenceEqual(list(res), list(expected))
Example #36
0
    def test_host_fact_by_id(self):
        ctx = ansible_run()

        cmd = ara.cli.host.HostFacts(None, None)
        parser = cmd.get_parser('test')
        args = parser.parse_args([ctx['host'].id])
        res = cmd.take_action(args)

        facts = jsonutils.loads(ctx['facts'].values)
        expected = six.moves.zip(*sorted(six.iteritems(facts)))
        self.assertSequenceEqual(list(res), list(expected))
Example #37
0
    def test_generate_html(self):
        """ Roughly ensures the expected files are generated properly """
        dir = self.generate_dir
        ansible_run()

        shell = ara.shell.AraCli()
        shell.prepare_to_run_command(ara.cli.generate.GenerateHtml)
        cmd = ara.cli.generate.GenerateHtml(shell, None)
        parser = cmd.get_parser('test')

        args = parser.parse_args([dir])
        cmd.take_action(args)

        paths = [
            os.path.join(dir, 'index.html'),
            os.path.join(dir, 'static'),
            os.path.join(dir, 'file/index.html'),
            os.path.join(dir, 'host/index.html'),
            os.path.join(dir, 'reports/index.html'),
            os.path.join(dir, 'result/index.html'),
        ]

        for path in paths:
            self.assertTrue(os.path.exists(path))
Example #38
0
    def test_generate_html(self):
        """ Roughly ensures the expected files are generated properly """
        dir = self.generate_dir
        ansible_run()

        shell = ara.shell.AraCli()
        shell.prepare_to_run_command(ara.cli.generate.GenerateHtml)
        cmd = ara.cli.generate.GenerateHtml(shell, None)
        parser = cmd.get_parser('test')

        args = parser.parse_args([dir])
        cmd.take_action(args)

        paths = [
            os.path.join(dir, 'index.html'),
            os.path.join(dir, 'static'),
            os.path.join(dir, 'file/index.html'),
            os.path.join(dir, 'host/index.html'),
            os.path.join(dir, 'reports/index.html'),
            os.path.join(dir, 'result/index.html'),
        ]

        for path in paths:
            self.assertTrue(os.path.exists(path))
Example #39
0
    def test_playbook_treeview(self):
        ctx = ansible_run()
        treeview = jsonutils.loads(u.playbook_treeview(ctx['playbook'].id))

        # ansible_run provides two fake files:
        # /some/path/main.yml and /playbook.yml
        for f in treeview:
            if f['text'] == 'some':
                self.assertEqual(f['text'], 'some')
                child = f['nodes'][0]
                self.assertEqual(child['text'], 'path')
                child = child['nodes'][0]
                self.assertEqual(child['text'], 'main.yml')
                self.assertEqual(child['dataAttr']['load'],
                                 ctx['task_file'].id)
            else:
                self.assertEqual(f['text'], 'playbook.yml')
                self.assertEqual(f['dataAttr']['load'], ctx['pb_file'].id)
Example #40
0
    def test_playbook_treeview(self):
        ctx = ansible_run()
        treeview = jsonutils.loads(u.playbook_treeview(ctx['playbook'].id))

        # ansible_run provides two fake files:
        # /some/path/main.yml and /playbook.yml
        for f in treeview:
            if f['text'] == 'some':
                self.assertEqual(f['text'], 'some')
                child = f['nodes'][0]
                self.assertEqual(child['text'], 'path')
                child = child['nodes'][0]
                self.assertEqual(child['text'], 'main.yml')
                self.assertEqual(child['dataAttr']['load'],
                                 ctx['task_file'].id + '/')
            else:
                self.assertEqual(f['text'], 'playbook.yml')
                self.assertEqual(
                    f['dataAttr']['load'], ctx['pb_file'].id + '/'
                )
Example #41
0
    def test_generate_junit(self):
        """ Roughly ensures the expected xml is generated properly """
        tdir = self.generate_dir

        ctx = ansible_run()
        cmd = ara.cli.generate.GenerateJunit(None, None)
        parser = cmd.get_parser('test')

        junit_file = '{tdir}/junit.xml'.format(tdir=tdir)
        args = parser.parse_args([junit_file])
        cmd.take_action(args)

        self.assertTrue(os.path.exists(junit_file))

        tasks = m.Task.query.all()
        tree = etree.parse(junit_file)
        self.assertEqual(tree.getroot().tag, "testsuites")
        self.assertEqual(tree.getroot()[0].tag, "testsuite")
        self.assertEqual(tree.getroot()[0][0].tag, "testcase")
        self.assertEqual(int(tree.getroot().get('tests')), len(tasks))
        self.assertEqual(int(tree.getroot().get('failures')),
                         ctx['stats'].failed)
Example #42
0
 def test_reports_with_override(self):
     ctx = ansible_run()
     self.app.config['ARA_PLAYBOOK_OVERRIDE'] = [ctx['playbook'].id]
     res = self.client.get('/reports/')
     self.assertEqual(res.status_code, 200)
Example #43
0
 def test_reports_with_bad_override(self):
     ansible_run()
     self.app.config['ARA_PLAYBOOK_OVERRIDE'] = ['uuuu-iiii-dddd-0000']
     res = self.client.get('/reports/')
     self.assertEqual(res.status_code, 302)
Example #44
0
 def test_reports(self):
     ansible_run()
     res = self.client.get('/reports/')
     self.assertEqual(res.status_code, 200)
Example #45
0
 def test_reports_with_incomplete(self):
     ansible_run(complete=False)
     res = self.client.get('/reports/')
     self.assertEqual(res.status_code, 200)
Example #46
0
 def test_show_host_exists_facts_missing(self):
     ctx = ansible_run(gather_facts=False)
     res = self.client.get('/host/{}/'.format(ctx['host'].id))
     self.assertEqual(res.status_code, 404)
Example #47
0
 def test_home_with_data(self):
     ansible_run()
     res = self.client.get('/')
     self.assertEqual(res.status_code, 200)
Example #48
0
 def test_show_playbook_incomplete(self):
     ctx = ansible_run(complete=False)
     res = self.client.get('/playbook/{}/'.format(
         ctx['playbook'].id))
     self.assertEqual(res.status_code, 200)
Example #49
0
    def test_generate_subunit(self):
        """ Roughly ensures the expected subunit is generated properly """
        tdir = self.generate_dir

        ansible_run()
        cmd = ara.cli.generate.GenerateSubunit(None, None)
        parser = cmd.get_parser('test')

        subunit_file = os.path.join(tdir, 'test.subunit')
        subunit_dir = os.path.join(tdir, 'subunit_dir')
        args = parser.parse_args([subunit_file])
        cmd.take_action(args)

        self.assertTrue(os.path.exists(subunit_file))
        # Dump the subunit binary stream to some files we can read and assert
        with open(subunit_file, 'r') as f:
            to_disk(['-d', subunit_dir], stdin=f)

        # Get *.json files, load them and test them
        data = []
        testfiles = glob("%s/%s" % (subunit_dir, '*/*.json'))
        for testfile in testfiles:
            with open(testfile, 'rb') as f:
                data.append(jsonutils.load(f))

        keys = ['status', 'tags', 'stop', 'start', 'details', 'id']
        for result in data:
            # Test that we have the expected keys, no more, no less
            for key in keys:
                self.assertTrue(key in result.keys())
            for key in result.keys():
                self.assertTrue(key in keys)

        # Get non-json files, load them and test them
        data = []
        testfiles = [fn for fn in glob("%s/%s" % (subunit_dir, '*/*'))
                     if not os.path.basename(fn).endswith('json')]
        for testfile in testfiles:
            with open(testfile, 'rb') as f:
                data.append(jsonutils.load(f))

        keys = ['host', 'playbook_id', 'playbook_path', 'play_name',
                'task_action', 'task_action_lineno', 'task_id', 'task_name',
                'task_path']
        for result in data:
            # Test that we have the expected keys, no more, no less
            for key in keys:
                self.assertTrue(key in result.keys())
            for key in result.keys():
                self.assertTrue(key in keys)

            # Test that we have matching data for playbook records
            playbook = m.Playbook.query.get(result['playbook_id'])
            self.assertEqual(playbook.id, result['playbook_id'])
            self.assertEqual(playbook.path, result['playbook_path'])

            # Test that we have matchin gdata for task records
            task = m.Task.query.get(result['task_id'])
            self.assertEqual(task.id, result['task_id'])
            self.assertEqual(task.action, result['task_action'])
            self.assertEqual(task.file.path, result['task_path'])
            self.assertEqual(task.lineno, result['task_action_lineno'])
            self.assertEqual(task.name, result['task_name'])
Example #50
0
 def test_list_playbook(self):
     ansible_run()
     res = self.client.get('/playbook/')
     self.assertEqual(res.status_code, 200)
Example #51
0
 def test_list_playbook_incomplete(self):
     ansible_run(complete=False)
     res = self.client.get('/playbook/')
     self.assertEqual(res.status_code, 200)
Example #52
0
 def test_show_file(self):
     ctx = ansible_run()
     res = self.client.get('/file/{0}/'.format(ctx['pb_file'].id))
     self.assertEqual(res.status_code, 200)
Example #53
0
 def test_show_result_missing(self):
     ansible_run()
     res = self.client.get('/result/foo/')
     self.assertEqual(res.status_code, 404)
Example #54
0
 def test_show_result_index(self):
     ansible_run()
     res = self.client.get('/result/')
     self.assertEqual(res.status_code, 200)
Example #55
0
 def test_report_ajax_no_plays(self):
     ansible_run()
     res = self.client.get('/reports/ajax/plays/uuid.txt')
     self.assertEqual(res.status_code, 404)
Example #56
0
 def test_show_playbook_results_host_status(self):
     ctx = ansible_run()
     res = self.client.get('/playbook/{}/host/{}/ok/'.format(
         ctx['playbook'].id,
         ctx['host'].name))
     self.assertEqual(res.status_code, 200)
Example #57
0
 def test_report_ajax_records(self):
     ctx = ansible_run(ara_record=True)
     pbid = ctx['playbook'].id
     res = self.client.get('/reports/ajax/records/{0}.txt'.format(pbid))
     self.assertEqual(res.status_code, 200)
Example #58
0
 def test_show_playbook_results_task(self):
     ctx = ansible_run()
     res = self.client.get('/playbook/{}/task/{}/'.format(
         ctx['playbook'].id,
         ctx['task'].id))
     self.assertEqual(res.status_code, 200)
Example #59
0
 def test_show_result_incomplete(self):
     ctx = ansible_run(complete=False)
     res = self.client.get('/result/{}/'.format(ctx['result'].id))
     self.assertEqual(res.status_code, 200)
Example #60
0
 def test_show_host(self):
     ctx = ansible_run()
     res = self.client.get('/host/{}/'.format(ctx['host'].id))
     self.assertEqual(res.status_code, 200)