mirror of
				https://github.com/peeringdb/peeringdb.git
				synced 2024-05-11 05:55:09 +00:00 
			
		
		
		
	* use new peeringdb client (1.0.0) for pdb_load_data sync (#599) * drop django-mobi for lack of py3/dj2 support (#492) remove django-forms-bootstrap for lack of py3/dj2 support (#492) * black formatted * django2.2 and py3 upgrade (#492) * drop ixlans (#21) ui and api changes * drop local_asn (#168) * org search (#193) * phone number validation (#50) * implement help text tooltips (#228) * Mark own ASN as transit-free (#394) * py3 fix for `pdb_migrate_ixlans` command when writing migration report * pdb_migrate_ixlans: properly handle py3 Runtime error if ixlan dict changes during iteration * set rest DEFAULT_SCHEMA_CLASS to coreapi to fix swagger apidocs fix migration 0027 missing from facsimile manifest * fix swagger doc strings * fix tests that were broken from api doc fixes * fix UniqueFieldValidator for netixlan ipaddress validation that broke during django/drf upgrade * fix org merge tool layout issues * travis config * update pipfile and lock * black formatting * update travis dist * beta mode banner (#411) * add beta banner template (#411) * automatically scheduled sync may not always be on, add a flag that lets us reflect that state in the beta banner message clean up beta banner implementation (#411) * add tests for beta banner (#411)
		
			
				
	
	
		
			86 lines
		
	
	
		
			3.0 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
			
		
		
	
	
			86 lines
		
	
	
		
			3.0 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
| import json
 | |
| import pytest
 | |
| 
 | |
| from .util import ClientCase
 | |
| from .test_api import setup_module, teardown_module
 | |
| from peeringdb_server.models import REFTAG_MAP, User
 | |
| from rest_framework.test import APIClient, force_authenticate
 | |
| 
 | |
| 
 | |
| class TestAPIClientCompat(ClientCase):
 | |
|     @classmethod
 | |
|     def setUpTestData(cls):
 | |
|         super(TestAPIClientCompat, cls).setUpTestData()
 | |
|         cls.superuser = User.objects.create_user(
 | |
|             "su", "su@localhost", "su", is_superuser=True
 | |
|         )
 | |
|         cls.org = REFTAG_MAP["org"].objects.create(name="Test Org", status="ok")
 | |
| 
 | |
|     @property
 | |
|     def expected_compat_err_str(self):
 | |
|         return "Your client version is incompatible with server version of the api, please install peeringdb>={},<={} {}>={},<={}".format(
 | |
|             "0.6", "0.6.5", "django_peeringdb", "0.6", "0.6.5"
 | |
|         )
 | |
| 
 | |
|     def _compat(self, ua_c, ua_be, error):
 | |
|         if ua_c and ua_be:
 | |
|             useragent = "PeeringDB/{} django_peeringdb/{}".format(ua_c, ua_be)
 | |
|             self.client = APIClient(HTTP_USER_AGENT=useragent)
 | |
|         else:
 | |
|             self.client = APIClient()
 | |
|         self.client.force_authenticate(self.superuser)
 | |
| 
 | |
|         r = self.client.get("/api/org/1", format="json")
 | |
|         content = json.loads(r.content)
 | |
|         if error:
 | |
|             assert r.status_code == 400
 | |
|             assert content["meta"]["error"] == self.expected_compat_err_str
 | |
|         else:
 | |
|             assert r.status_code == 200
 | |
| 
 | |
|         r = self.client.post(
 | |
|             "/api/net", {"org_id": 1, "name": "Test net", "asn": 9000000}, format="json"
 | |
|         )
 | |
|         content = json.loads(r.content)
 | |
|         if error:
 | |
|             assert r.status_code == 400
 | |
|             assert content["meta"]["error"] == self.expected_compat_err_str
 | |
|             net = {"id": 1}
 | |
|         else:
 | |
|             assert r.status_code == 201
 | |
|             net = content["data"][0]
 | |
|             del net["org"]
 | |
| 
 | |
|         r = self.client.put("/api/net/{}".format(net["id"]), net, format="json")
 | |
|         content = json.loads(r.content)
 | |
|         if error:
 | |
|             assert r.status_code == 400
 | |
|             assert content["meta"]["error"] == self.expected_compat_err_str
 | |
|         else:
 | |
|             assert r.status_code == 200
 | |
| 
 | |
|         r = self.client.delete("/api/net/{}".format(net["id"]), {}, format="json")
 | |
|         if error:
 | |
|             content = json.loads(r.content)
 | |
|             assert r.status_code == 400
 | |
|             assert content["meta"]["error"] == self.expected_compat_err_str
 | |
|         else:
 | |
|             assert r.status_code == 204
 | |
| 
 | |
|         REFTAG_MAP["net"].objects.all().delete()
 | |
| 
 | |
|     def test_incompatible(self):
 | |
|         self._compat("0.5.0", "0.4.0", True)
 | |
|         self._compat("0.6.0", "0.5.0", True)
 | |
|         self._compat("0.5.0", "0.6.0", True)
 | |
|         self._compat("0.7.0", "0.6.0", True)
 | |
|         self._compat("0.6.0", "0.7.0", True)
 | |
| 
 | |
|     def test_compatible(self):
 | |
|         self._compat("0.6.0", "0.6.0", False)
 | |
|         self._compat("0.6", "0.6", False)
 | |
|         self._compat("0.6.1", "0.6.1", False)
 | |
|         self._compat("0.6", "0.6.1", False)
 | |
|         self._compat("0.6.1", "0.6", False)
 | |
|         self._compat(None, None, False)
 |