atos-genesys: normalize webservice url before use (#32618)
All web-services exposed does not have the same prefix some are under the path WSUsagerPublik/services/PublikService/ but those for intermediation will be under WSIntermed/services/IntermediationService/. As we used the URL with prefix included as base_url we must normalize it now (remove prefix from base_url).
This commit is contained in:
parent
765166fa6d
commit
33f2a98e25
|
@ -40,9 +40,15 @@ class Resource(BaseResource, HTTPResource):
|
|||
class Meta:
|
||||
verbose_name = _('ATOS Genesys')
|
||||
|
||||
@property
|
||||
def base_url(self):
|
||||
if 'WSUsagerPublik' in self.webservice_base_url:
|
||||
return self.webservice_base_url.split('WSUsagerPublik')[0]
|
||||
return self.webservice_base_url
|
||||
|
||||
@property
|
||||
def select_codifications_url(self):
|
||||
return urlparse.urljoin(self.webservice_base_url, 'selectCodifications')
|
||||
return urlparse.urljoin(self.base_url, 'WSUsagerPublik/services/PublikService/selectCodifications')
|
||||
|
||||
def xml_request(self, url, *args, **kwargs):
|
||||
try:
|
||||
|
@ -139,7 +145,7 @@ class Resource(BaseResource, HTTPResource):
|
|||
|
||||
@property
|
||||
def select_appairage_url(self):
|
||||
return urlparse.urljoin(self.webservice_base_url, 'selectAppairage')
|
||||
return urlparse.urljoin(self.base_url, 'WSUsagerPublik/services/PublikService/selectAppairage')
|
||||
|
||||
def call_select_appairage(self, login, password, email):
|
||||
row = self.xml_request(self.select_appairage_url, params={
|
||||
|
@ -226,7 +232,7 @@ class Resource(BaseResource, HTTPResource):
|
|||
|
||||
@property
|
||||
def select_usager_url(self):
|
||||
return urlparse.urljoin(self.webservice_base_url, 'selectUsager')
|
||||
return urlparse.urljoin(self.base_url, 'WSUsagerPublik/services/PublikService/selectUsager')
|
||||
|
||||
def call_select_usager(self, id_per):
|
||||
row = self.xml_request(self.select_usager_url, params={
|
||||
|
|
|
@ -9,7 +9,7 @@ from django.utils.http import urlencode
|
|||
|
||||
from passerelle.apps.atos_genesys.models import Resource, Link
|
||||
|
||||
FAKE_URL = 'https://sirus.fr/genesys/'
|
||||
FAKE_URL = 'https://sirus.fr/'
|
||||
|
||||
|
||||
@pytest.fixture
|
||||
|
@ -28,10 +28,21 @@ def mock_codifications_ok():
|
|||
os.path.dirname(__file__),
|
||||
'data',
|
||||
'genesys_select_codifications.xml')).read()
|
||||
with utils.mock_url(FAKE_URL + 'selectCodifications', response) as mock:
|
||||
with utils.mock_url(FAKE_URL, response) as mock:
|
||||
yield mock
|
||||
|
||||
|
||||
def test_base_url_normalization(db):
|
||||
# db is necessary because Resource.__init__ set resource.logger which does DB queries :/
|
||||
resource = Resource(title='t', slug='t', description='t')
|
||||
resource.webservice_base_url = 'http://localhost/WSUsagerPublik/services/PublikService/'
|
||||
assert (resource.select_usager_by_ref_url
|
||||
== 'http://localhost/WSUsagerPublik/services/PublikService/selectUsagerByRef')
|
||||
resource.webservice_base_url = 'http://localhost/'
|
||||
assert (resource.select_usager_by_ref_url
|
||||
== 'http://localhost/WSUsagerPublik/services/PublikService/selectUsagerByRef')
|
||||
|
||||
|
||||
def test_ws_categories(app, genesys, mock_codifications_ok):
|
||||
url = utils.generic_endpoint_url('atos-genesys', 'codifications', slug=genesys.slug)
|
||||
response = app.get(url)
|
||||
|
|
Loading…
Reference in New Issue