Skip to content

Commit bca49f7

Browse files
committed
Add unit tests for ALTO exception handler
Signed-off-by: jensenzhang <[email protected]>
1 parent 381f252 commit bca49f7

File tree

2 files changed

+56
-0
lines changed

2 files changed

+56
-0
lines changed

etc/alto.conf.test

+9
Original file line numberDiff line numberDiff line change
@@ -156,6 +156,15 @@ resources = {
156156
"data_source": "geoip"
157157
}
158158
},
159+
"geoip-misconfig": {
160+
"type": "entity-prop",
161+
"path": "entityprop",
162+
"namespace": "default",
163+
"algorithm": "alto.server.components.backend.GeoIPPropertyService",
164+
"params": {
165+
"data_source": "geoip-not-exist"
166+
}
167+
},
159168
"ps": {
160169
"type": "endpoint-cost",
161170
"path": "endpointcost",

tests/test_server.py

+47
Original file line numberDiff line numberDiff line change
@@ -35,6 +35,7 @@
3535
from django.core import mail
3636
from django.test import TestCase
3737
from django.urls import URLResolver, resolve, Resolver404, get_resolver
38+
from rest_framework.test import APIClient
3839

3940
from alto.server.components.db import (data_broker_manager,
4041
Match,
@@ -50,6 +51,7 @@
5051
ALTO_CONTENT_TYPE_PROPMAP,
5152
ALTO_CONTENT_TYPE_TIPS,
5253
ALTO_CONTENT_TYPE_TIPS_VIEW,
54+
ALTO_CONTENT_TYPE_ERROR,
5355
ALTO_PARAMETER_TYPE_ECS,
5456
ALTO_PARAMETER_TYPE_PROPMAP,
5557
ALTO_PARAMETER_TYPE_TIPS)
@@ -174,6 +176,10 @@ def setUpTestData(cls) -> None:
174176
db_trans.commit()
175177

176178

179+
def setUp(self):
180+
self.client = APIClient(raise_request_exception=False)
181+
182+
177183
def test_northbound_routes(self):
178184
resources = self.config.get_configured_resources()
179185
tips_resources = [r for r in resources if resources[r]['type'] == 'tips']
@@ -275,6 +281,7 @@ def test_view_geodist(self):
275281
self.assertEqual(response.has_header('Content-Type'), True)
276282
self.assertEqual(response.get('Content-Type'), ALTO_CONTENT_TYPE_ECS)
277283

284+
278285
def test_view_perfsonar(self):
279286
response = self.client.post('/endpointcost/ps',
280287
data=json.dumps({
@@ -343,3 +350,43 @@ def test_view_tips(self):
343350
self.assertEqual(response.status_code, 200)
344351
self.assertEqual(response.has_header('Content-Type'), True)
345352
self.assertEqual(response.get('Content-Type'), 'application/merge-patch+json')
353+
354+
355+
def test_error_unsupported_media_type(self):
356+
response = self.client.post('/entityprop/geoip',
357+
data=json.dumps({
358+
'entities': [
359+
'ipv4:10.1.0.2',
360+
'ipv4:10.2.0.2',
361+
'ipv4:10.3.0.2'
362+
]
363+
}),
364+
content_type="application/json",
365+
accepts=ALTO_CONTENT_TYPE_PROPMAP)
366+
self.assertEqual(response.status_code, 415)
367+
self.assertEqual(response.has_header('Content-Type'), True)
368+
self.assertEqual(response.get('Content-Type'), ALTO_CONTENT_TYPE_ERROR)
369+
370+
371+
def test_error_not_found(self):
372+
response = self.client.get('/not_exist',
373+
accepts=ALTO_CONTENT_TYPE_IRD)
374+
self.assertEqual(response.status_code, 404)
375+
self.assertEqual(response.has_header('Content-Type'), True)
376+
self.assertEqual(response.get('Content-Type'), ALTO_CONTENT_TYPE_ERROR)
377+
378+
379+
def test_error_internal_error(self):
380+
response = self.client.post('/entityprop/geoip-misconfig',
381+
data=json.dumps({
382+
'entities': [
383+
'ipv4:10.1.0.2',
384+
'ipv4:10.2.0.2',
385+
'ipv4:10.3.0.2'
386+
]
387+
}),
388+
content_type=ALTO_PARAMETER_TYPE_PROPMAP,
389+
accepts=ALTO_CONTENT_TYPE_PROPMAP)
390+
self.assertEqual(response.status_code, 500)
391+
self.assertEqual(response.has_header('Content-Type'), True)
392+
self.assertEqual(response.get('Content-Type'), ALTO_CONTENT_TYPE_ERROR)

0 commit comments

Comments
 (0)