From fb6b8d2c0edc1213d47b2b4285b2dad5ea38d0dc Mon Sep 17 00:00:00 2001 From: Mike Terzo Date: Wed, 4 Jan 2017 01:47:57 -0500 Subject: [PATCH] Adding testing for radiator view. Signed-off-by: Mike Terzo --- test/test_app.py | 88 ++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 88 insertions(+) diff --git a/test/test_app.py b/test/test_app.py index 21d8565..1d6d25a 100644 --- a/test/test_app.py +++ b/test/test_app.py @@ -98,3 +98,91 @@ def test_offline_mode(client, mocker): assert "//" not in script['src'] assert rv.status_code == 200 + + +def test_default_node_view(client, mocker, + mock_puppetdb_environments, + mock_puppetdb_default_nodes): + + rv = client.get('/nodes') + soup = BeautifulSoup(rv.data, 'html.parser') + assert soup.title.contents[0] == 'Puppetboard' + + for label in ['failed', 'changed', 'unreported', 'noop']: + vals = soup.find_all('a', + {"class": "ui %s label status" % label}) + assert len(vals) == 1 + assert 'node-%s' % (label) in vals[0].attrs['href'] + + assert rv.status_code == 200 + + +def test_radiator_view(client, mocker, + mock_puppetdb_environments, + mock_puppetdb_default_nodes): + query_data = { + 'nodes': [[{'count': 10}]], + 'resources': [[{'count': 40}]], + } + + dbquery = MockDbQuery(query_data) + + mocker.patch.object(app.puppetdb, '_query', side_effect=dbquery.get) + + rv = client.get('/radiator') + + assert rv.status_code == 200 + + soup = BeautifulSoup(rv.data, 'html.parser') + assert soup.title.contents[0] == 'Puppetboard' + assert soup.h1 != 'Not Found' + total = soup.find(class_='total') + + assert '10' in total.text + + +def test_radiator_view_bad_env(client, mocker): + mock_puppetdb_environments(mocker) + mock_puppetdb_default_nodes(mocker) + + query_data = { + 'nodes': [[{'count': 10}]], + 'resources': [[{'count': 40}]], + } + + dbquery = MockDbQuery(query_data) + + mocker.patch.object(app.puppetdb, '_query', side_effect=dbquery.get) + + rv = client.get('/nothere/radiator') + + assert rv.status_code == 404 + soup = BeautifulSoup(rv.data, 'html.parser') + assert soup.title.contents[0] == 'Puppetboard' + assert soup.h1.text == 'Not Found' + + +@pytest.mark.xfail +def test_radiator_view_division_by_zero(client, mocker): + mock_puppetdb_environments(mocker) + mock_puppetdb_default_nodes(mocker) + + query_data = { + 'nodes': [[{'count': 0}]], + 'resources': [[{'count': 40}]], + } + + dbquery = MockDbQuery(query_data) + + mocker.patch.object(app.puppetdb, '_query', side_effect=dbquery.get) + + rv = client.get('/radiator') + + assert rv.status_code == 200 + + soup = BeautifulSoup(rv.data, 'html.parser') + assert soup.title.contents[0] == 'Puppetboard' + assert soup.h1.text != 'Not Found' + + total = soup.find(class_='total') + assert '0' in total.text