10
10
import json
11
11
import requests
12
12
13
+ ldap_test_server = "vm28.nubes.stfc.ac.uk"
14
+ shib_test_server = "vm181.nubes.stfc.ac.uk"
15
+ credentials_file = "/home/mnf98541/Dynafed/credentials.json"
16
+ firefox_path = "/home/mnf98541/Downloads/firefox-58.0.2/firefox"
17
+ firefox_profile_path = "/home/mnf98541/.mozilla/firefox/u2v7wxvi.default"
13
18
14
- class LDAPAuthnTest (unittest .TestCase ):
15
- server = "vm28.nubes.stfc.ac.uk"
16
19
20
+ class LDAPAuthnTest (unittest .TestCase ):
17
21
def setUp (self ):
18
- binary = FirefoxBinary ("/home/mnf98541/Downloads/firefox-58.0.2/firefox" )
22
+ binary = FirefoxBinary (firefox_path )
19
23
self .driver = webdriver .Firefox (firefox_binary = binary )
20
24
21
- with open ("../credentials.json" , "r" ) as f :
25
+ with open (credentials_file , "r" ) as f :
22
26
f_json = json .load (f )
23
27
self .username = f_json ["louise" ]["username" ]
24
28
self .password = f_json ["louise" ]["password" ]
25
29
26
30
def test_login (self ):
27
31
driver = self .driver
28
- driver .get ("https://" + self . server + "/myfed/ldap/" )
32
+ driver .get ("https://" + ldap_test_server + "/myfed/ldap/" )
29
33
30
34
# if we get a pop up, then authentication is on
31
35
popup = True
@@ -46,7 +50,7 @@ def test_login(self):
46
50
47
51
def test_login_fail (self ):
48
52
driver = self .driver
49
- driver .get ("https://" + "wrong_username" + ":" + "wrong_password" + "@" + self . server + "/myfed/ldap" )
53
+ driver .get ("https://" + "wrong_username" + ":" + "wrong_password" + "@" + ldap_test_server + "/myfed/ldap" )
50
54
51
55
# if we get a pop up, then our username and password were wrong
52
56
# if we don't get a pop up then it was accepted for some reason
@@ -67,20 +71,18 @@ def tearDown(self):
67
71
68
72
69
73
class LDAPAuthzTest (unittest .TestCase ):
70
- server = "vm28.nubes.stfc.ac.uk"
71
-
72
74
def setUp (self ):
73
- binary = FirefoxBinary ("/home/mnf98541/Downloads/firefox-58.0.2/firefox" )
75
+ binary = FirefoxBinary (firefox_path )
74
76
self .driver = webdriver .Firefox (firefox_binary = binary )
75
77
76
- with open ("../credentials.json" , "r" ) as f :
78
+ with open (credentials_file , "r" ) as f :
77
79
f_json = json .load (f )
78
80
self .username = f_json ["louise" ]["username" ]
79
81
self .password = f_json ["louise" ]["password" ]
80
82
81
83
def test_access_allowed (self ):
82
84
driver = self .driver
83
- driver .get ("https://" + self . server + "/myfed/ldap/test/authorised" )
85
+ driver .get ("https://" + ldap_test_server + "/myfed/ldap/test/authorised" )
84
86
85
87
WebDriverWait (driver , 5 ).until (EC .alert_is_present ())
86
88
@@ -94,7 +96,7 @@ def test_access_allowed(self):
94
96
95
97
def test_access_denied (self ):
96
98
driver = self .driver
97
- driver .get ("https://" + self . server + "/myfed/ldap/test/unauthorised" )
99
+ driver .get ("https://" + ldap_test_server + "/myfed/ldap/test/unauthorised" )
98
100
99
101
WebDriverWait (driver , 5 ).until (EC .alert_is_present ())
100
102
@@ -110,37 +112,36 @@ def test_access_denied(self):
110
112
def test_download_access_success (self ):
111
113
# use requests here to test we get a 200 response when trying to directly download a file
112
114
113
- r = requests .get ("https://" + self . server + "/myfed/ldap/test/authorised/Smudge.jpg" , auth = (self .username , self .password ), verify = False )
115
+ r = requests .get ("https://" + ldap_test_server + "/myfed/ldap/test/authorised/Smudge.jpg" , auth = (self .username , self .password ), verify = False )
114
116
self .assertEqual (r .status_code , 200 )
115
117
116
118
def test_download_access_fail (self ):
117
119
# use requests here to test we get a 403 response when trying to directly download a file
118
120
119
- r = requests .get ("https://" + self . server + "/myfed/ldap/test/unauthorised/Smudge.jpg" , auth = (self .username , self .password ), verify = False )
121
+ r = requests .get ("https://" + ldap_test_server + "/myfed/ldap/test/unauthorised/Smudge.jpg" , auth = (self .username , self .password ), verify = False )
120
122
self .assertEqual (r .status_code , 403 )
121
123
122
124
def tearDown (self ):
123
125
self .driver .close ()
124
126
125
127
126
128
class CertificateAuthSuccessTest (unittest .TestCase ):
127
- server = "vm28.nubes.stfc.ac.uk"
128
-
129
129
def setUp (self ):
130
- binary = FirefoxBinary ("/home/mnf98541/Downloads/firefox-58.0.2/firefox" )
130
+ binary = FirefoxBinary (firefox_path )
131
131
# need to specify our profile so it can use our certificate
132
- profile = webdriver .FirefoxProfile ("/home/mnf98541/.mozilla/firefox/u2v7wxvi.default" )
132
+ # see https://stackoverflow.com/questions/17437407/how-to-import-ssl-certificates-for-firefox-with-selenium-in-python
133
+ profile = webdriver .FirefoxProfile (firefox_profile_path )
133
134
self .driver = webdriver .Firefox (profile , firefox_binary = binary )
134
135
135
136
def test_login (self ):
136
137
driver = self .driver
137
- driver .get ("https://" + self . server + "/myfed/x509/test/unprotected" )
138
+ driver .get ("https://" + ldap_test_server + "/myfed/x509/test/unprotected" )
138
139
139
140
self .assertIn ("/C=UK/O=eScience/OU=CLRC/L=RAL/CN=louise davies" , driver .page_source )
140
141
141
142
def test_see_all_buckets (self ):
142
143
driver = self .driver
143
- driver .get ("https://" + self . server + "/myfed/x509" )
144
+ driver .get ("https://" + ldap_test_server + "/myfed/x509" )
144
145
145
146
WebDriverWait (driver , 5 ).until (EC .title_is ("/myfed/x509/" ))
146
147
self .assertIn ("atlas" , driver .page_source )
@@ -154,29 +155,29 @@ def test_see_all_buckets(self):
154
155
155
156
def test_access_allowed_simple (self ):
156
157
driver = self .driver
157
- driver .get ("https://" + self . server + "/myfed/x509/test/authorised" )
158
+ driver .get ("https://" + ldap_test_server + "/myfed/x509/test/authorised" )
158
159
159
160
WebDriverWait (driver , 5 ).until (EC .title_is ("/myfed/x509/test/authorised/" ))
160
161
self .assertIn ("Smudge.jpg" , driver .page_source )
161
162
162
163
def test_access_allowed (self ):
163
164
driver = self .driver
164
- driver .get ("https://" + self . server + "/myfed/x509/enmr/ccp4-data" )
165
+ driver .get ("https://" + ldap_test_server + "/myfed/x509/enmr/ccp4-data" )
165
166
166
167
WebDriverWait (driver , 5 ).until (EC .title_is ("/myfed/x509/enmr/ccp4-data/" ))
167
168
self .assertIn ("Powered by LCGDM-DAV" , driver .page_source )
168
169
169
170
def test_access_denied_simple (self ):
170
171
driver = self .driver
171
- driver .get ("https://" + self . server + "/myfed/x509/test/unauthorised" )
172
+ driver .get ("https://" + ldap_test_server + "/myfed/x509/test/unauthorised" )
172
173
173
174
WebDriverWait (driver , 5 ).until (EC .title_is ("403 Forbidden" ))
174
175
175
176
self .assertNotIn ("Smudge.jpg" , driver .page_source )
176
177
177
178
def test_access_denied (self ):
178
179
driver = self .driver
179
- driver .get ("https://" + self . server + "/myfed/x509/enmr/ccp4-jobs" )
180
+ driver .get ("https://" + ldap_test_server + "/myfed/x509/enmr/ccp4-jobs" )
180
181
181
182
WebDriverWait (driver , 5 ).until (EC .title_is ("403 Forbidden" ))
182
183
@@ -187,16 +188,14 @@ def tearDown(self):
187
188
188
189
189
190
class CertificateAuthFailureTest (unittest .TestCase ):
190
- server = "vm28.nubes.stfc.ac.uk"
191
-
192
191
def setUp (self ):
193
- binary = FirefoxBinary ("/home/mnf98541/Downloads/firefox-58.0.2/firefox" )
192
+ binary = FirefoxBinary (firefox_path )
194
193
# don't specify profile, so we don't have certificate
195
194
self .driver = webdriver .Firefox (firefox_binary = binary )
196
195
197
196
def test_login_fail (self ):
198
197
driver = self .driver
199
- driver .get ("https://" + self . server + "/myfed/x509/test/authorised" )
198
+ driver .get ("https://" + ldap_test_server + "/myfed/x509/test/authorised" )
200
199
201
200
WebDriverWait (driver , 5 ).until (EC .title_is ("403 Forbidden" ))
202
201
@@ -207,17 +206,16 @@ def tearDown(self):
207
206
208
207
209
208
class ShibAuthnTest (unittest .TestCase ):
210
- server = "vm181.nubes.stfc.ac.uk"
211
-
212
209
def setUp (self ):
213
- binary = FirefoxBinary ("/home/mnf98541/Downloads/firefox-58.0.2/firefox" )
210
+ binary = FirefoxBinary (firefox_path )
214
211
self .driver = webdriver .Firefox (firefox_binary = binary )
212
+ # these are the username and password for TestShib
215
213
self .username = "myself"
216
214
self .password = "myself"
217
215
218
216
def test_login (self ):
219
217
driver = self .driver
220
- driver .get ("https://" + self . server + "/myfed" )
218
+ driver .get ("https://" + shib_test_server + "/myfed" )
221
219
222
220
# if we get a pop up, then authentication is on
223
221
try :
@@ -240,7 +238,7 @@ def test_login(self):
240
238
241
239
def test_login_fail (self ):
242
240
driver = self .driver
243
- driver .get ("https://" + self . server + "/myfed" )
241
+ driver .get ("https://" + shib_test_server + "/myfed" )
244
242
245
243
# if we get a pop up, then authentication is on
246
244
login_page = True
@@ -266,17 +264,16 @@ def tearDown(self):
266
264
267
265
268
266
class ShibAuthzTest (unittest .TestCase ):
269
- server = "vm181.nubes.stfc.ac.uk"
270
-
271
267
def setUp (self ):
272
- binary = FirefoxBinary ("/home/mnf98541/Downloads/firefox-58.0.2/firefox" )
268
+ binary = FirefoxBinary (firefox_path )
273
269
self .driver = webdriver .Firefox (firefox_binary = binary )
270
+ # these are the username and password for TestShib
274
271
self .username = "myself"
275
272
self .password = "myself"
276
273
277
274
def test_access_allowed (self ):
278
275
driver = self .driver
279
- driver .get ("https://" + self . server + "/myfed/shib/authorised" )
276
+ driver .get ("https://" + shib_test_server + "/myfed/shib/authorised" )
280
277
281
278
WebDriverWait (driver , 5 ).until (EC .title_is ("TestShib Identity Provider Login" ))
282
279
@@ -292,7 +289,7 @@ def test_access_allowed(self):
292
289
293
290
def test_access_denied (self ):
294
291
driver = self .driver
295
- driver .get ("https://" + self . server + "/myfed/shib/unauthorised" )
292
+ driver .get ("https://" + shib_test_server + "/myfed/shib/unauthorised" )
296
293
297
294
WebDriverWait (driver , 5 ).until (EC .title_is ("TestShib Identity Provider Login" ))
298
295
@@ -313,7 +310,7 @@ def test_download_access_success(self):
313
310
# need to login first...
314
311
315
312
driver = self .driver
316
- driver .get ("https://" + self . server + "/myfed/" )
313
+ driver .get ("https://" + shib_test_server + "/myfed/" )
317
314
318
315
WebDriverWait (driver , 5 ).until (EC .title_is ("TestShib Identity Provider Login" ))
319
316
@@ -326,9 +323,10 @@ def test_download_access_success(self):
326
323
327
324
WebDriverWait (driver , 5 ).until (EC .title_is ("/myfed/" ))
328
325
326
+ # use the cookies to see if this allows us to download a file with our credentials
329
327
cookies = {i ['name' ]: i ['value' ] for i in driver .get_cookies ()}
330
328
331
- r = requests .get ("https://" + self . server + "/myfed/shib/authorised/Smudge.jpg" , cookies = cookies , verify = False )
329
+ r = requests .get ("https://" + shib_test_server + "/myfed/shib/authorised/Smudge.jpg" , cookies = cookies , verify = False )
332
330
self .assertEqual (r .status_code , 200 )
333
331
334
332
def test_download_access_fail (self ):
@@ -337,7 +335,7 @@ def test_download_access_fail(self):
337
335
# need to login first...
338
336
339
337
driver = self .driver
340
- driver .get ("https://" + self . server + "/myfed/" )
338
+ driver .get ("https://" + shib_test_server + "/myfed/" )
341
339
342
340
WebDriverWait (driver , 5 ).until (EC .title_is ("TestShib Identity Provider Login" ))
343
341
@@ -350,9 +348,10 @@ def test_download_access_fail(self):
350
348
351
349
WebDriverWait (driver , 5 ).until (EC .title_is ("/myfed/" ))
352
350
351
+ # use the cookies to see if this allows us to download a file with our credentials
353
352
cookies = {i ['name' ]: i ['value' ] for i in driver .get_cookies ()}
354
353
355
- r = requests .get ("https://" + self . server + "/myfed/shib/unauthorised/Smudge.jpg" , cookies = cookies , verify = False )
354
+ r = requests .get ("https://" + shib_test_server + "/myfed/shib/unauthorised/Smudge.jpg" , cookies = cookies , verify = False )
356
355
self .assertEqual (r .status_code , 403 )
357
356
358
357
def tearDown (self ):
0 commit comments