blob: 030338725c8c46660655d94cea686c41ac2a8edf [file] [log] [blame] [edit]
# Check that the LNT REST JSON API is working.
# create temporary instance
# RUN: rm -rf %t.instance
# RUN: python %{shared_inputs}/create_temp_instance.py \
# RUN: %s %{shared_inputs}/SmallInstance \
# RUN: %t.instance %S/Inputs/V4Pages_extra_records.sql
#
# RUN: python %s %t.instance %{tidylib}
import unittest
import logging
import sys
import lnt.server.db.migrate
import lnt.server.ui.app
from V4Pages import check_code, check_html
from V4Pages import HTTP_REDIRECT, HTTP_BAD_REQUEST, HTTP_NOT_FOUND
logging.basicConfig(level=logging.DEBUG)
class MatrixViewTester(unittest.TestCase):
"""Test the Matrix view."""
def setUp(self):
"""Bind to the LNT test instance."""
instance_path = sys.argv[1]
app = lnt.server.ui.app.App.create_standalone(instance_path)
app.testing = True
app.config['WTF_CSRF_ENABLED'] = False
self.client = app.test_client()
def test_config_errors(self):
"""Does passing bad arguments to matrix view error correctly.
"""
client = self.client
reply = check_code(client, '/v4/nts/matrix',
expected_code=HTTP_NOT_FOUND)
self.assertIn("Request requires some plot arguments.",
reply.get_data(as_text=True))
reply = check_code(client, '/v4/nts/matrix?plot.0=1.1.1',
expected_code=HTTP_NOT_FOUND)
self.assertIn("No orders found.", reply.get_data(as_text=True))
reply = check_code(client, '/v4/nts/matrix?plot.0=a.2.0',
expected_code=HTTP_BAD_REQUEST)
self.assertIn("malformed", reply.get_data(as_text=True))
reply = check_code(client, '/v4/nts/matrix?plot.0=999.0.0',
expected_code=HTTP_NOT_FOUND)
self.assertIn("Invalid machine", reply.get_data(as_text=True))
reply = check_code(client, '/v4/nts/matrix?plot.0=1.999.0',
expected_code=HTTP_NOT_FOUND)
self.assertIn("Invalid test", reply.get_data(as_text=True))
reply = check_code(client, '/v4/nts/matrix?plot.0=1.1.999',
expected_code=HTTP_NOT_FOUND)
self.assertIn("Invalid field", reply.get_data(as_text=True))
def test_matrix_view(self):
"""Does the page load with the data as expected.
"""
client = self.client
reply = check_html(client, '/v4/nts/matrix?plot.0=2.6.2')
# Set a baseline and run again.
form_data = dict(name="foo_baseline",
description="foo_description",
prmote=True)
rc = client.post('/v4/nts/order/6', data=form_data)
self.assertEqual(rc.status_code, HTTP_REDIRECT)
check_code(client, '/v4/nts/set_baseline/1',
expected_code=HTTP_REDIRECT)
reply = check_html(client, '/v4/nts/matrix?plot.0=2.6.2')
# Make sure the data is in the page.
data = reply.get_data(as_text=True)
self.assertIn("test6", data)
self.assertIn("1.0000", data)
self.assertIn("1.2000", data)
reply = check_html(client, '/v4/nts/matrix?plot.0=2.6.2&limit=1')
if __name__ == '__main__':
unittest.main(argv=[sys.argv[0], ])