Skip to content

Commit 221f6e2

Browse files
author
Kevin D Smith
committed
Fix issues with the base path being dropped in CAS URLs
1 parent 23acdfb commit 221f6e2

File tree

3 files changed

+15
-19
lines changed

3 files changed

+15
-19
lines changed

swat/tests/cas/test_basics.py

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -26,6 +26,7 @@
2626
import datetime
2727
import os
2828
import pandas
29+
import re
2930
import six
3031
import swat
3132
import swat.utils.testing as tm
@@ -108,7 +109,7 @@ def tearDown(self):
108109
swat.reset_option()
109110

110111
def test_basic_connection(self):
111-
self.assertEqual(self.s._hostname, HOST)
112+
self.assertRegex(HOST, r'(\w+://)?%s(:|/|$)' % self.s._hostname)
112113
self.assertEqual(self.s._port, PORT)
113114
self.assertRegex(self.s._session, UUID_RE)
114115
if self.s._protocol == 'http':
@@ -122,7 +123,7 @@ def test_connection_failure(self):
122123
user, passwd = tm.get_user_pass()
123124
with captured_stderr() as out:
124125
with self.assertRaises(swat.SWATError):
125-
swat.CAS(HOST, 1999, USER, PASSWD, protocol=PROTOCOL)
126+
swat.CAS(re.sub(r':\d+(/|$)', r'\1', HOST), 1999, USER, PASSWD, protocol=PROTOCOL)
126127

127128
def test_copy_connection(self):
128129
s2 = self.s.copy()
@@ -178,7 +179,7 @@ def test_connect_existing_session(self):
178179
user, passwd = tm.get_user_pass()
179180
t = swat.CAS(HOST, PORT, USER, PASSWD, protocol=PROTOCOL, session=self.s._session)
180181

181-
self.assertEqual(t._hostname, HOST)
182+
self.assertRegex(HOST, r'(\w+://)?%s(:|/|$)' % t._hostname)
182183
self.assertEqual(t._port, PORT)
183184
self.assertEqual(t._session, self.s._session)
184185
if self.s._protocol == 'http':

swat/tests/cas/test_connection.py

Lines changed: 2 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -160,16 +160,12 @@ def test_str(self):
160160
s = str(self.s)
161161

162162
self.assertTrue(type(s) == str)
163-
self.assertTrue(HOST in s)
164-
# self.assertTrue(USERNAME in s)
165-
self.assertTrue(str(PORT) in s)
163+
self.assertRegex(s, r'''^CAS\(.+?, name='[^\']+', session='[^\']+'\)$''')
166164

167165
r = repr(self.s)
168166

169167
self.assertTrue(type(r) == str)
170-
self.assertTrue(HOST in r)
171-
# self.assertTrue(USERNAME in r)
172-
self.assertTrue(str(PORT) in r)
168+
self.assertRegex(r, r'''^CAS\(.+?, name='[^\']+', session='[^\']+'\)$''')
173169

174170
def test_formatter(self):
175171
f = self.s.SASFormatter()

swat/utils/testing.py

Lines changed: 9 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -31,6 +31,7 @@
3131
import warnings
3232
from six.moves.urllib.parse import urlparse
3333
from swat.config import OptionWarning
34+
from swat.cas.connection import CAS
3435

3536
UUID_RE = r'^[a-f0-9]{8}-[a-f0-9]{4}-[a-f0-9]{4}-[a-f0-9]{4}-[a-f0-9]{12}$'
3637

@@ -177,23 +178,21 @@ def get_host_port_proto():
177178
casport = None
178179
casprotocol = None
179180

181+
url = None
180182
for name in ['CAS_URL', 'CASURL', 'CAS_HOST', 'CASHOST', 'CAS_HOSTNAME', 'CASHOSTNAME']:
181183
if name in os.environ:
182184
url = os.environ[name]
183-
if not re.match(r'^\w+://', url):
184-
url = 'unknown://%s' % url
185-
urlp = urlparse(url)
186-
cashost = urlp.hostname
187-
casport = urlp.port
188-
casprotocol = urlp.scheme
189-
if casprotocol == 'unknown':
190-
casprotocol = None
185+
break
191186

192187
casport = casport or os.environ.get('CAS_PORT', os.environ.get('CASPORT'))
188+
if casport:
189+
casport = int(casport)
190+
193191
casprotocol = casprotocol or os.environ.get('CAS_PROTOCOL', os.environ.get('CASPROTOCOL'))
194192

195-
if casport is not None:
196-
casport = int(casport)
193+
if url:
194+
cashost, casport, username, password, casprotocol = \
195+
CAS._get_connection_info(url, casport, casprotocol, None, None, None)
197196

198197
if cashost and casport:
199198
return cashost, casport, casprotocol

0 commit comments

Comments
 (0)