aboutsummaryrefslogtreecommitdiffstats
path: root/tests
diff options
context:
space:
mode:
Diffstat (limited to 'tests')
-rw-r--r--tests/test_api.py2
-rw-r--r--tests/test_api_docs.py95
2 files changed, 96 insertions, 1 deletions
diff --git a/tests/test_api.py b/tests/test_api.py
index a0b22846..b20dc0c5 100644
--- a/tests/test_api.py
+++ b/tests/test_api.py
@@ -1,6 +1,6 @@
from tests import SiteTest, app
-class ApiEndpointsRootEndpoints(SiteTest):
+class ApiEndpoints(SiteTest):
""" Test cases for the api subdomain """
def test_api_unknown_route(self):
""" Check api unknown route """
diff --git a/tests/test_api_docs.py b/tests/test_api_docs.py
new file mode 100644
index 00000000..945a73bc
--- /dev/null
+++ b/tests/test_api_docs.py
@@ -0,0 +1,95 @@
+import json
+
+from tests import SiteTest, app
+
+
+class ApiDocsEndpoint(SiteTest):
+ """ Check documentation metadata API """
+
+ bad_data = json.dumps({'package': 'whatever', 'correct format': False})
+ unknown_package_json = json.dumps({'package': "whatever"})
+
+ def test_api_docs_get_all(self):
+ """ GET - all entries """
+ response = self.client.get('/bot/docs', app.config['API_SUBDOMAIN'], headers=app.config['TEST_HEADER'])
+ self.assertEqual(response.status_code, 200)
+ self.assertIsInstance(response.json, list)
+
+ def test_api_docs_get_unknown(self):
+ """ GET - unknown package """
+ response = self.client.get('/bot/docs?package=whatever', app.config['API_SUBDOMAIN'], headers=app.config['TEST_HEADER'])
+ self.assertEqual(response.status_code, 200)
+ self.assertEqual(response.json, [])
+
+ def test_api_docs_get_multi_unknown(self):
+ """ GET - multiple unknown packages """
+ response = self.client.get('/bot/docs?package=whatever&package=everwhat', app.config['API_SUBDOMAIN'], headers=app.config['TEST_HEADER'])
+ self.assertEqual(response.status_code, 200)
+ self.assertIsInstance(response.json, list)
+
+ def test_api_docs_post_no_data(self):
+ """ POST - no data """
+ response = self.client.post('/bot/docs', app.config['API_SUBDOMAIN'], headers=app.config['TEST_HEADER'])
+ self.assertEqual(response.status_code, 400)
+
+ def test_api_docs_post_bad_data(self):
+ """ POST - malformed data """
+ response = self.client.post('/bot/docs', app.config['API_SUBDOMAIN'], headers=app.config['TEST_HEADER'], data=self.bad_data)
+ self.assertEqual(response.status_code, 400)
+
+ def test_api_docs_delete_bad(self):
+ """ DELETE - missing request body """
+ response = self.client.delete('/bot/docs', app.config['API_SUBDOMAIN'], headers=app.config['TEST_HEADER'])
+ self.assertEqual(response.status_code, 400)
+
+ def test_api_docs_delete_unknown(self):
+ """ DELETE - unknown package """
+ response = self.client.delete('/bot/docs', app.config['API_SUBDOMAIN'], headers=app.config['TEST_HEADER'], data=self.unknown_package_json)
+ self.assertEqual(response.status_code, 200)
+ self.assertEqual(response.json['deleted'], 0)
+
+
+class SinglePackageApiDocsEndpointTests(SiteTest):
+ """ Test the API docs endpoint with a single package added """
+
+ valid_data = {
+ 'package': "lemonapi",
+ 'base_url': "http://example.com/",
+ 'inventory_url': "http://example.com/object.inv"
+ }
+ delete_data_json = json.dumps({'package': valid_data['package']})
+ valid_data_json = json.dumps(valid_data)
+
+ def setUp(self):
+ """ POST valid data to the server for use in this test case """
+ response = self.client.post('/bot/docs', app.config['API_SUBDOMAIN'], headers=app.config['TEST_HEADER'], data=self.valid_data_json)
+ self.assertEqual(response.status_code, 200)
+ self.assertEqual(response.json, {"success": True})
+
+ def test_api_docs_get_valid(self):
+ """ GET - added package is in all entries """
+ response = self.client.get('/bot/docs', app.config['API_SUBDOMAIN'], headers=app.config['TEST_HEADER'])
+ self.assertEqual(response.status_code, 200)
+ self.assertIn(self.valid_data, response.json)
+
+ def test_api_docs_get_detail(self):
+ """ GET - added package detail """
+ response = self.client.get(
+ f'/bot/docs?package={self.valid_data["package"]}', app.config['API_SUBDOMAIN'], headers=app.config['TEST_HEADER']
+ )
+ self.assertEqual(response.status_code, 200)
+ self.assertEqual(response.json, [self.valid_data])
+
+ def test_api_docs_get_partly_known(self):
+ """ GET - added package is the only package for query with another unknown package """
+ response = self.client.get(
+ f'/bot/docs?package={self.valid_data["package"]}&package=whatever', app.config['API_SUBDOMAIN'], headers=app.config['TEST_HEADER']
+ )
+ self.assertEqual(response.status_code, 200)
+ self.assertEqual(response.json, [self.valid_data])
+
+ def test_api_docs_delete_all(self):
+ """ DELETE - added package """
+ response = self.client.delete('/bot/docs', app.config['API_SUBDOMAIN'], headers=app.config['TEST_HEADER'], data=self.delete_data_json)
+ self.assertEqual(response.status_code, 200)
+ self.assertEqual(response.json['deleted'], 1)