Skip to content
Snippets Groups Projects
Commit 90a28d9d authored by Stéphane Schoorens's avatar Stéphane Schoorens
Browse files

add first get test refs #29848

parent b03b6baa
No related branches found
No related tags found
No related merge requests found
......@@ -29,7 +29,7 @@ endif
test:
ifndef CI
docker run -e CI='1' -v ${CURDIR}:/src -w /src --rm ${DOCKER_IMG} make test
docker run -e CI='1' -e POD_UNIT_TEST_API_KEY=${POD_UNIT_TEST_API_KEY} -v ${CURDIR}:/src -w /src --rm ${DOCKER_IMG} make test
else
TOXENV=test tox -- ${PYTEST_ARGS}
endif
\ No newline at end of file
......@@ -5,10 +5,14 @@ from .Resource import API_URLS, Resource
class PodClient:
host_url = ''
api_key = ''
def __init__(self, host_url):
def __init__(self, host_url, api_key):
self.host_url = host_url
if not self.host_url:
raise Exception('Pod host url required')
for key in API_URLS.keys():
self.__dict__[key] = Resource(host_url, key)
self.api_key = api_key
if not self.api_key:
raise Exception('Pod api key required')
for resource_name in API_URLS.keys():
self.__dict__[resource_name] = Resource(self.host_url, self.api_key, resource_name)
......@@ -35,39 +35,43 @@ API_URLS = {
class Resource:
host_url = ''
name = ''
api_key = ''
def __init__(self, host_url, resource_name):
def __init__(self, host_url, api_key, resource_name):
self.host_url = host_url
if not self.host_url:
raise Exception('Pod host url required')
self.api_key = api_key
if not self.api_key:
raise Exception('Pod api key missing')
self.name = resource_name
if not API_URLS.get(self.name):
raise Exception('Resource url not supported')
def _do(self, method='GET', params={}, data={}, **request_params):
url = API_URLS[self.name]
def _request(self, method='GET', headers={}, params={}, data={}, **request_params):
url = '%s/%s' % (self.host_url, API_URLS[self.name])
headers['Authorization'] = 'Token %s' % self.api_key
try:
response = requests.request(method, url, params, data, request_params)
response = requests.request(method, url, headers=headers, params=params, data=data, **request_params)
except (requests.RequestException,
requests.ConnectionError,
requests.HTTPError,
requests.URLRequired,
requests.TooManyRedirectsas) as e:
requests.URLRequired) as e:
logging.error(e)
return
return response
def get(self, data=None, **request_params):
return self._do('GET', params=data, request_params=request_params)
return self._request('GET', params=data, **request_params)
def post(self, data=None, **request_params):
return self._do('GET', data=data, request_params=request_params)
return self._request('POST', data=data, **request_params)
def put(self, data=None, **request_params):
return self._do('GET', data=data, request_params=request_params)
return self._request('PUT', data=data, **request_params)
def patch(self, data=None, **request_params):
return self._do('GET', data=data, request_params=request_params)
return self._request('PATCH', data=data, **request_params)
def delete(self, data=None, **request_params):
return self._do('GET', data=data, request_params=request_params)
return self._request('DELETE', data=data, **request_params)
#!/usr/bin/env python3
# -*- coding: utf-8 -*-
import os
from unittest import TestCase
from pod_client.PodClient import PodClient
from pod_client.Resource import Resource, API_URLS
HOST = 'http://pod.ubicast.net'
API_KEY = os.environ.get('POD_UNIT_TEST_API_KEY')
def setUpModule():
......@@ -19,13 +21,20 @@ def tearDownModule():
class PodClientTest(TestCase):
def test_init(self):
pod_client = PodClient(HOST)
self.assertTrue(API_KEY)
pod_client = PodClient(HOST, API_KEY)
for key in API_URLS.keys():
self.assertTrue(hasattr(pod_client, key))
self.assertTrue(isinstance(getattr(pod_client, key), Resource))
success = True
try:
pod_client = PodClient('')
pod_client = PodClient('', API_KEY)
except Exception:
success = False
self.assertFalse(success)
success = True
try:
pod_client = PodClient(HOST, '')
except Exception:
success = False
self.assertFalse(success)
#!/usr/bin/env python3
# -*- coding: utf-8 -*-
import os
from unittest import TestCase
from pod_client.Resource import Resource
HOST = 'http://pod.ubicast.net'
API_KEY = os.environ.get('POD_UNIT_TEST_API_KEY')
def setUpModule():
......@@ -18,24 +20,32 @@ class ResourceTest(TestCase):
def test_init(self):
resource_name = 'files'
resource_file = Resource(HOST, resource_name)
resource_file = Resource(HOST, API_KEY, resource_name)
self.assertEqual(HOST, resource_file.host_url)
self.assertEqual(resource_name, resource_file.name)
success = True
try:
resource_file = Resource('', resource_name)
resource_file = Resource('', API_KEY, resource_name)
except Exception:
success = False
self.assertFalse(success)
success = True
try:
resource_file = Resource(HOST, 'fake')
resource_file = Resource(HOST, API_KEY, 'fake')
except Exception:
success = False
self.assertFalse(success)
success = True
try:
resource_file = Resource(HOST, '', 'fake')
except Exception:
success = False
self.assertFalse(success)
def test_get(self):
pass
resource = Resource(HOST, API_KEY, 'videos')
response = resource.get()
self.assertEqual(response.status_code, 200, response.text)
def test_post(self):
pass
......
......@@ -32,6 +32,7 @@ deps = vulture
commands = vulture . {[vulture]parameters}
[testenv:test]
passenv = POD_UNIT_TEST_API_KEY
deps =
pytest >= 4.5.0
pytest-cov >= 2.7.1
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment