@@ -61,7 +61,7 @@ def set_delay_done(self):
61
61
self .op_done = True
62
62
63
63
class MockUser (mock .Mock ):
64
- name = 'fake'
64
+ name = 'fake@example.com '
65
65
base_url = '/user/fake'
66
66
server = Server ()
67
67
@@ -112,7 +112,7 @@ async def test_get_cluster_notebook_endpoint(*args, **kwargs):
112
112
113
113
mock_client .create_cluster .assert_called_once ()
114
114
115
- assert spawner .cluster_definition ['cluster_name' ] == 'dataprochub-fake '
115
+ assert spawner .cluster_definition ['cluster_name' ] == f 'dataprochub-{ spawner . get_username () } '
116
116
assert (spawner .cluster_definition ['config' ]['gce_cluster_config' ]['zone_uri' ]) == (
117
117
f'https://www.googleapis.com/compute/v1/projects/{ spawner .project } /zones/{ spawner .zone } ' )
118
118
@@ -150,7 +150,7 @@ async def test_get_cluster_notebook_endpoint(*args, **kwargs):
150
150
url = await spawner .start ()
151
151
mock_client .create_cluster .assert_called_once ()
152
152
153
- assert spawner .cluster_definition ['cluster_name' ] == 'dataprochub-fake -server1'
153
+ assert spawner .cluster_definition ['cluster_name' ] == f 'dataprochub-{ spawner . get_username () } -server1'
154
154
155
155
@pytest .mark .asyncio
156
156
async def test_start_existing_clustername (self , monkeypatch ):
@@ -195,7 +195,7 @@ async def test_stop_normal(self):
195
195
mock_client .delete_cluster .assert_called_once_with (
196
196
project_id = 'test-stop' ,
197
197
region = self .region ,
198
- cluster_name = 'dataprochub-fake ' )
198
+ cluster_name = f 'dataprochub-{ spawner . get_username () } ' )
199
199
200
200
@pytest .mark .asyncio
201
201
async def test_stop_no_cluster (self ):
@@ -374,13 +374,11 @@ def test_minimium_cluster_definition(self, monkeypatch):
374
374
375
375
def test_read_file (* args , ** kwargs ):
376
376
config_string = open ('./tests/test_data/minimum.yaml' , 'r' ).read ()
377
- print (config_string )
378
377
return config_string
379
378
380
379
def test_read_file_preview (* args , ** kwargs ):
381
380
config_string = open ('./tests/test_data/minimum.yaml' , 'r' ).read ()
382
381
config_string = config_string .replace ('1.4.16' , 'preview' )
383
- print (config_string )
384
382
return config_string
385
383
386
384
def test_read_file_2_0 (* args , ** kwargs ):
@@ -435,7 +433,6 @@ def test_clustername(*args, **kwargs):
435
433
monkeypatch .setattr (spawner , "read_gcs_file" , test_read_file_preview )
436
434
437
435
config_built = spawner ._build_cluster_config ()
438
- print (config_built )
439
436
assert Component ['JUPYTER' ].value in config_built ['config' ]['software_config' ]['optional_components' ]
440
437
assert Component ['ANACONDA' ].value not in config_built ['config' ]['software_config' ]['optional_components' ]
441
438
@@ -534,6 +531,7 @@ def test_clustername(*args, **kwargs):
534
531
assert config_built ['config' ]['software_config' ]['properties' ]['dataproc:jupyter.hub.env' ] == 'test-env-str'
535
532
assert config_built ['config' ]['software_config' ]['properties' ]['dataproc:jupyter.hub.menu.enabled' ] == 'true'
536
533
assert 'dataproc:jupyter.hub.enabled' not in config_built ['config' ]['software_config' ]['properties' ]
534
+ assert 'dataproc:dataproc.personal-auth.user' not in config_built ['config' ]['software_config' ]['properties' ]
537
535
538
536
def test_cluster_definition_overrides (self , monkeypatch ):
539
537
"""Check that config settings incompatible with JupyterHub are overwritten correctly."""
@@ -665,7 +663,7 @@ def test_clustername(*args, **kwargs):
665
663
'KeyCamelCase' : 'UlowUlow' ,
666
664
'key_with_underscore' : 'https://downloads.io/protected/files/enterprise-trial.tar.gz' ,
667
665
'key_with_underscore_too' : 'some_UPPER_and_UlowerU:1234' ,
668
- 'session-user' : MockUser . name
666
+ 'session-user' : spawner . get_username ()
669
667
},
670
668
'zone_uri' : 'https://www.googleapis.com/compute/v1/projects/test-project/zones/test-form1-a'
671
669
},
@@ -689,7 +687,7 @@ def test_clustername(*args, **kwargs):
689
687
'dataproc:jupyter.hub.env' : 'test-env-str' ,
690
688
'dataproc:jupyter.hub.menu.enabled' : 'true' ,
691
689
'dataproc:jupyter.instance-tag.enabled' : 'false' ,
692
- 'dataproc:jupyter.notebook.gcs.dir' : 'gs://users-notebooks/fake ' ,
690
+ 'dataproc:jupyter.notebook.gcs.dir' : f 'gs://users-notebooks/{ spawner . get_username () } ' ,
693
691
'key-with-dash:UPPER_UPPER' : '4000' ,
694
692
'key-with-dash-too:UlowUlowUlow' : '85196m' ,
695
693
'key:and.multiple.dots.lowUlowUlow' : '13312m'
@@ -775,7 +773,7 @@ def test_clustername(*args, **kwargs):
775
773
assert config_built ['config' ]['gce_cluster_config' ]['metadata' ] == {
776
774
'm1' : 'v1' ,
777
775
'm2' : 'v2' ,
778
- 'session-user' : MockUser . name
776
+ 'session-user' : spawner . get_username ()
779
777
}
780
778
781
779
def test_uris (self , monkeypatch ):
@@ -998,7 +996,6 @@ def test_read_file(*args, **kwargs):
998
996
999
997
# Now check that the config with resolved fields is correct as well
1000
998
config_built = spawner ._build_cluster_config ()
1001
- print (config_built )
1002
999
1003
1000
assert 'unknown_field_top_level' not in config_built
1004
1001
assert 'unknown_field_config_level' not in config_built ['config' ]
@@ -1193,3 +1190,77 @@ def test_image_version(*args, **kwargs):
1193
1190
1194
1191
assert config_built ['config' ]['software_config' ]['image_version' ] == '1.5-debian10'
1195
1192
assert config_built ['config' ]['master_config' ]['image_uri' ] == 'projects/test-project/global/images/custom-image'
1193
+
1194
+ def test_unified_auth_flag (self , monkeypatch ):
1195
+ fake_creds = AnonymousCredentials ()
1196
+ mock_dataproc_client = mock .create_autospec (ClusterControllerClient (credentials = fake_creds ))
1197
+ mock_gcs_client = mock .create_autospec (storage .Client (credentials = fake_creds , project = 'project' ))
1198
+ mock_compute_client = mock .create_autospec (discovery .build ('compute' , 'v1' ,
1199
+ credentials = fake_creds , cache_discovery = False ))
1200
+ spawner = DataprocSpawner (hub = Hub (), dataproc = mock_dataproc_client , gcs = mock_gcs_client ,
1201
+ user = MockUser (), _mock = True , gcs_notebooks = self .gcs_notebooks ,
1202
+ compute = mock_compute_client , project = 'test-project' )
1203
+
1204
+ spawner .force_single_user = True
1205
+ spawner .env_str = "test-env-str"
1206
+ spawner .args_str = "test-args-str"
1207
+ config_built = spawner ._build_cluster_config ()
1208
+ assert (config_built ['config' ]['software_config' ]['properties' ]
1209
+ ['dataproc:dataproc.personal-auth.user' ]) == spawner .user .name
1210
+
1211
+ def test_unified_auth_yaml (self , monkeypatch ):
1212
+ fake_creds = AnonymousCredentials ()
1213
+ mock_dataproc_client = mock .create_autospec (ClusterControllerClient (credentials = fake_creds ))
1214
+ mock_gcs_client = mock .create_autospec (storage .Client (credentials = fake_creds , project = 'project' ))
1215
+ mock_compute_client = mock .create_autospec (discovery .build ('compute' , 'v1' ,
1216
+ credentials = fake_creds , cache_discovery = False ))
1217
+ spawner = DataprocSpawner (hub = Hub (), dataproc = mock_dataproc_client , gcs = mock_gcs_client ,
1218
+ user = MockUser (), _mock = True , gcs_notebooks = self .gcs_notebooks ,
1219
+ compute = mock_compute_client , project = 'test-project' )
1220
+
1221
+ def test_read_file (* args , ** kwargs ):
1222
+ config_string = open ('./tests/test_data/perso.yaml' , 'r' ).read ()
1223
+ return config_string
1224
+
1225
+ monkeypatch .setattr (spawner , "read_gcs_file" , test_read_file )
1226
+ spawner .env_str = "test-env-str"
1227
+ spawner .args_str = "test-args-str"
1228
+ spawner .user_options = {
1229
+ 'cluster_type' : 'perso.yaml' ,
1230
+ 'cluster_zone' : 'us-central-1'
1231
+ }
1232
+
1233
+ config_built = spawner ._build_cluster_config ()
1234
+
1235
+ assert (config_built ['config' ]['software_config' ]['properties' ]
1236
+ ['dataproc:dataproc.personal-auth.user' ]) == spawner .user .name
1237
+
1238
+ def test_unified_auth_user (self , monkeypatch ):
1239
+ fake_creds = AnonymousCredentials ()
1240
+ mock_dataproc_client = mock .create_autospec (ClusterControllerClient (credentials = fake_creds ))
1241
+ mock_gcs_client = mock .create_autospec (storage .Client (credentials = fake_creds , project = 'project' ))
1242
+ mock_compute_client = mock .create_autospec (discovery .build ('compute' , 'v1' ,
1243
+ credentials = fake_creds , cache_discovery = False ))
1244
+ spawner = DataprocSpawner (hub = Hub (), dataproc = mock_dataproc_client , gcs = mock_gcs_client ,
1245
+ user = MockUser (), _mock = True , gcs_notebooks = self .gcs_notebooks ,
1246
+ compute = mock_compute_client , project = 'test-project' )
1247
+
1248
+ def test_read_file (* args , ** kwargs ):
1249
+ config_string = open ('./tests/test_data/perso.yaml' , 'r' ).read ()
1250
+ return config_string
1251
+
1252
+ monkeypatch .setattr (spawner , "read_gcs_file" , test_read_file )
1253
+ spawner .env_str = "test-env-str"
1254
+ spawner .args_str = "test-args-str"
1255
+ spawner .allow_custom_clusters = True
1256
+ spawner .user_options = {
1257
+ 'cluster_type' : 'perso.yaml' ,
1258
+ 'cluster_zone' : 'us-central-1' ,
1259
+ "cluster_props_prefix_0" : "dataproc" ,
1260
+ "cluster_props_key_0" : "dataproc.personal-auth.user" ,
1261
+ "cluster_props_val_0" :
"[email protected] "
1262
+ }
1263
+ config_built = spawner ._build_cluster_config ()
1264
+ assert (config_built ['config' ]['software_config' ]['properties' ]
1265
+ ['dataproc:dataproc.personal-auth.user' ]) == spawner .user .name
1266
+
0 commit comments