Skip to content
Snippets Groups Projects
Commit fe65f4eb authored by James Graham's avatar James Graham
Browse files

Remove redundant HyperCat connector tests and change data for API test

parent 665d1cad
No related branches found
No related tags found
No related merge requests found
......@@ -482,8 +482,8 @@ class DataSourceApiIoTUKTest(TestCase):
class DataSourceApiHyperCatTest(TestCase):
test_name = 'HyperCat'
plugin_name = 'HyperCat'
test_url = 'https://api.cityverve.org.uk/v1/cat/polling-station'
dataset = 'https://api.cityverve.org.uk/v1/entity/polling-station/5'
test_url = 'https://api.cityverve.org.uk/v1/cat'
dataset = 'https://api.cityverve.org.uk/v1/cat/polling-station'
@classmethod
def setUpTestData(cls):
......
......@@ -2,7 +2,6 @@ import itertools
import typing
from django.test import TestCase
from requests.auth import HTTPBasicAuth
from datasources.connectors.base import AuthMethod, BaseDataConnector, HttpHeaderAuth
......@@ -27,15 +26,15 @@ def _count_items_by_key_value(collection: typing.Iterable[typing.Mapping],
class ConnectorHyperCatTest(TestCase):
url = 'https://portal.bt-hypercat.com/cat'
# Met Office dataset for weather at Heathrow
dataset = 'http://api.bt-hypercat.com/sensors/feeds/c7f361c6-7cb7-4ef5-aed9-397a0c0c4088'
# TODO find working dataset
url = 'https://api.cityverve.org.uk/v1/cat'
subcatalogue = 'https://api.cityverve.org.uk/v1/cat/polling-station'
dataset = 'https://api.cityverve.org.uk/v1/entity/polling-station/5'
def _get_connection(self) -> BaseDataConnector:
return self.plugin(self.url,
api_key=self.api_key,
auth=HTTPBasicAuth)
auth=HttpHeaderAuth)
def setUp(self):
from decouple import config
......@@ -43,7 +42,8 @@ class ConnectorHyperCatTest(TestCase):
BaseDataConnector.load_plugins('datasources/connectors')
self.plugin = BaseDataConnector.get_plugin('HyperCat')
self.api_key = config('HYPERCAT_BT_API_KEY')
self.api_key = config('HYPERCAT_CISCO_API_KEY')
self.auth = None
def test_get_plugin(self):
self.assertIsNotNone(self.plugin)
......@@ -58,7 +58,14 @@ class ConnectorHyperCatTest(TestCase):
self.assertTrue(connection.is_catalogue)
def test_plugin_get_metadata(self):
def test_determine_auth(self):
connection = self._get_connection()
auth_method = connection.determine_auth_method(connection.location, connection.api_key)
self.assertEqual(AuthMethod.HEADER, auth_method)
def test_plugin_get_catalogue_metadata(self):
connection = self._get_connection()
result = connection.get_metadata()
......@@ -67,15 +74,19 @@ class ConnectorHyperCatTest(TestCase):
for property in [
'urn:X-hypercat:rels:hasDescription:en',
'urn:X-hypercat:rels:isContentType',
'urn:X-hypercat:rels:hasHomepage',
]:
self.assertIn(property, relations)
self.assertEqual('BT Hypercat DataHub Catalog',
self.assertEqual('CityVerve Public API - master catalogue',
_get_item_by_key_value(result, 'rel', 'urn:X-hypercat:rels:hasDescription:en')['val'])
self.assertEqual('application/vnd.hypercat.catalogue+json',
_get_item_by_key_value(result, 'rel', 'urn:X-hypercat:rels:isContentType')['val'])
self.assertEqual('https://developer.cityverve.org.uk',
_get_item_by_key_value(result, 'rel', 'urn:X-hypercat:rels:hasHomepage')['val'])
def test_plugin_get_datasets(self):
connection = self._get_connection()
......@@ -87,8 +98,16 @@ class ConnectorHyperCatTest(TestCase):
self.assertLessEqual(1,
len(datasets))
self.assertIn(self.dataset,
datasets)
# Only check a couple of expected results are present - there's too many to list here
expected = {
'https://api.cityverve.org.uk/v1/cat/accident',
'https://api.cityverve.org.uk/v1/cat/advertising-board',
'https://api.cityverve.org.uk/v1/cat/advertising-post',
# And because later tests rely on it...
'https://api.cityverve.org.uk/v1/cat/polling-station',
}
for exp in expected:
self.assertIn(exp, datasets)
def test_plugin_iter_datasets(self):
connection = self._get_connection()
......@@ -127,7 +146,7 @@ class ConnectorHyperCatTest(TestCase):
This process is relatively slow so we only do a couple of iterations.
"""
with self.plugin(self.url, api_key=self.api_key, auth=HTTPBasicAuth) as connection:
with self._get_connection() as connection:
for k, v in itertools.islice(connection.items(), 5):
self.assertEqual(str,
type(k))
......@@ -138,132 +157,6 @@ class ConnectorHyperCatTest(TestCase):
self.assertEqual(k,
v.location)
def test_plugin_get_dataset_metadata(self):
connection = self._get_connection()
result = connection[self.dataset].get_metadata()
relations = [relation['rel'] for relation in result]
for property in [
'urn:X-bt:rels:feedTitle',
'urn:X-hypercat:rels:hasDescription:en',
'urn:X-bt:rels:feedTag',
'urn:X-bt:rels:hasSensorStream',
'urn:X-hypercat:rels:isContentType',
]:
self.assertIn(property, relations)
self.assertIn('Met Office',
_get_item_by_key_value(result, 'rel', 'urn:X-bt:rels:feedTitle')['val'])
self.assertIn('Met Office',
_get_item_by_key_value(result, 'rel', 'urn:X-hypercat:rels:hasDescription:en')['val'])
self.assertEqual(1,
_count_items_by_key_value(result, 'rel', 'urn:X-bt:rels:feedTag'))
self.assertGreaterEqual(_count_items_by_key_value(result, 'rel', 'urn:X-bt:rels:hasSensorStream'),
1)
def test_plugin_get_dataset_data(self):
"""
Test that we can get data from a single dataset within the catalogue.
"""
connection = self._get_connection()
dataset = connection[self.dataset]
result = dataset.get_data()
self.assertIsInstance(result, str)
self.assertGreaterEqual(len(result), 1)
self.assertIn('c7f361c6-7cb7-4ef5-aed9-397a0c0c4088',
result)
class ConnectorHyperCatCiscoTest(TestCase):
# TODO find working dataset
url = 'https://api.cityverve.org.uk/v1/cat'
subcatalogue = 'https://api.cityverve.org.uk/v1/cat/polling-station'
dataset = 'https://api.cityverve.org.uk/v1/entity/polling-station/5'
def _get_connection(self) -> BaseDataConnector:
return self.plugin(self.url,
api_key=self.api_key,
auth=HttpHeaderAuth)
def setUp(self):
from decouple import config
BaseDataConnector.load_plugins('datasources/connectors')
self.plugin = BaseDataConnector.get_plugin('HyperCat')
self.api_key = config('HYPERCAT_CISCO_API_KEY')
self.auth = None
def test_get_plugin(self):
self.assertIsNotNone(self.plugin)
def test_plugin_init(self):
connection = self._get_connection()
self.assertEqual(connection.location, self.url)
def test_plugin_type(self):
connection = self._get_connection()
self.assertTrue(connection.is_catalogue)
def test_determine_auth(self):
connection = self._get_connection()
auth_method = connection.determine_auth_method(connection.location, connection.api_key)
self.assertEqual(AuthMethod.HEADER, auth_method)
def test_plugin_get_catalogue_metadata(self):
connection = self._get_connection()
result = connection.get_metadata()
relations = [relation['rel'] for relation in result]
for property in [
'urn:X-hypercat:rels:hasDescription:en',
'urn:X-hypercat:rels:isContentType',
'urn:X-hypercat:rels:hasHomepage',
]:
self.assertIn(property, relations)
self.assertEqual('CityVerve Public API - master catalogue',
_get_item_by_key_value(result, 'rel', 'urn:X-hypercat:rels:hasDescription:en')['val'])
self.assertEqual('application/vnd.hypercat.catalogue+json',
_get_item_by_key_value(result, 'rel', 'urn:X-hypercat:rels:isContentType')['val'])
self.assertEqual('https://developer.cityverve.org.uk',
_get_item_by_key_value(result, 'rel', 'urn:X-hypercat:rels:hasHomepage')['val'])
def test_plugin_get_datasets(self):
connection = self._get_connection()
datasets = connection.get_datasets()
self.assertEqual(list,
type(datasets))
self.assertLessEqual(1,
len(datasets))
# Only check a couple of expected results are present - there's too many to list here
expected = {
'https://api.cityverve.org.uk/v1/cat/accident',
'https://api.cityverve.org.uk/v1/cat/advertising-board',
'https://api.cityverve.org.uk/v1/cat/advertising-post',
# And because later tests rely on it...
'https://api.cityverve.org.uk/v1/cat/polling-station',
}
for exp in expected:
self.assertIn(exp, datasets)
def test_plugin_get_subcatalogue_metadata(self):
connection = self._get_connection()
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment