Skip to content

Commit 412abff

Browse files
committed
test(e2e): serialize OIDC PKCE scenarios
Signed-off-by: Johnny Greco <jogreco@nvidia.com>
1 parent afbc4e3 commit 412abff

1 file changed

Lines changed: 44 additions & 0 deletions

File tree

‎e2e/rust/tests/oidc_pkce.rs‎

Lines changed: 44 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,7 @@ use std::time::{Duration, Instant};
2222
use base64::Engine as _;
2323
use openshell_e2e::harness::binary::openshell_cmd;
2424
use serde_json::Value;
25+
use serial_test::serial;
2526
use tokio::process::Command;
2627
use tokio::sync::Mutex;
2728
use url::Url;
@@ -64,6 +65,7 @@ struct LoginSession {
6465
}
6566

6667
#[tokio::test]
68+
#[serial(oidc_pkce)]
6769
async fn admin_can_list_sandboxes() {
6870
let session = login_identity(ADMIN).await;
6971
assert_allowed(
@@ -75,6 +77,7 @@ async fn admin_can_list_sandboxes() {
7577
}
7678

7779
#[tokio::test]
80+
#[serial(oidc_pkce)]
7881
async fn user_can_report_gateway_validated_identity() {
7982
let session = login_identity(USER).await;
8083
let output = assert_allowed(
@@ -102,6 +105,7 @@ async fn user_can_report_gateway_validated_identity() {
102105
}
103106

104107
#[tokio::test]
108+
#[serial(oidc_pkce)]
105109
async fn user_can_list_sandboxes() {
106110
const WORKSPACE: &str = "oidc-user-list-sb";
107111
let user = login_identity(USER).await;
@@ -118,13 +122,15 @@ async fn user_can_list_sandboxes() {
118122
}
119123

120124
#[tokio::test]
125+
#[serial(oidc_pkce)]
121126
async fn admin_can_create_sandbox() {
122127
let session = login_identity(ADMIN).await;
123128
let _lifecycle = SANDBOX_LIFECYCLE_LOCK.lock().await;
124129
assert_can_create_sandbox(&session, "default", "oidc-admin-create").await;
125130
}
126131

127132
#[tokio::test]
133+
#[serial(oidc_pkce)]
128134
async fn user_can_create_sandbox() {
129135
const WORKSPACE: &str = "oidc-user-create";
130136
let user = login_identity(USER).await;
@@ -138,6 +144,7 @@ async fn user_can_create_sandbox() {
138144
/// Workspace users must be able to create sandboxes with inferred-provider
139145
/// commands (e.g. `claude`) without requiring Platform Admin access.
140146
#[tokio::test]
147+
#[serial(oidc_pkce)]
141148
async fn user_can_create_sandbox_with_inferred_provider_command() {
142149
const WORKSPACE: &str = "oidc-inferred-cmd";
143150
let user = login_identity(USER).await;
@@ -187,13 +194,15 @@ async fn user_can_create_sandbox_with_inferred_provider_command() {
187194
}
188195

189196
#[tokio::test]
197+
#[serial(oidc_pkce)]
190198
async fn admin_can_delete_sandbox() {
191199
let session = login_identity(ADMIN).await;
192200
let _lifecycle = SANDBOX_LIFECYCLE_LOCK.lock().await;
193201
assert_can_delete_sandbox(&session, "default", "oidc-admin-delete").await;
194202
}
195203

196204
#[tokio::test]
205+
#[serial(oidc_pkce)]
197206
async fn user_can_delete_sandbox() {
198207
const WORKSPACE: &str = "oidc-user-delete";
199208
let user = login_identity(USER).await;
@@ -205,6 +214,7 @@ async fn user_can_delete_sandbox() {
205214
}
206215

207216
#[tokio::test]
217+
#[serial(oidc_pkce)]
208218
async fn admin_can_inspect_gateway() {
209219
let session = login_identity(ADMIN).await;
210220
let output = assert_allowed(&session, &["gateway", "info"], "inspect gateway info").await;
@@ -219,6 +229,7 @@ async fn admin_can_inspect_gateway() {
219229
}
220230

221231
#[tokio::test]
232+
#[serial(oidc_pkce)]
222233
async fn user_cannot_inspect_gateway() {
223234
let session = login_identity(USER).await;
224235
let output = run_session_cli(&session, &["gateway", "info"]).await;
@@ -235,6 +246,7 @@ async fn user_cannot_inspect_gateway() {
235246
}
236247

237248
#[tokio::test]
249+
#[serial(oidc_pkce)]
238250
async fn admin_can_list_providers() {
239251
let session = login_identity(ADMIN).await;
240252
assert_allowed(
@@ -246,6 +258,7 @@ async fn admin_can_list_providers() {
246258
}
247259

248260
#[tokio::test]
261+
#[serial(oidc_pkce)]
249262
async fn user_can_list_providers() {
250263
const WORKSPACE: &str = "oidc-user-list-pr";
251264
let user = login_identity(USER).await;
@@ -262,6 +275,7 @@ async fn user_can_list_providers() {
262275
}
263276

264277
#[tokio::test]
278+
#[serial(oidc_pkce)]
265279
async fn admin_can_manage_provider() {
266280
const PROVIDER: &str = "oidc-pkce-admin-provider";
267281
let session = login_identity(ADMIN).await;
@@ -298,6 +312,7 @@ async fn admin_can_manage_provider() {
298312
}
299313

300314
#[tokio::test]
315+
#[serial(oidc_pkce)]
301316
async fn user_cannot_create_provider() {
302317
const WORKSPACE: &str = "oidc-user-no-create";
303318
let user = login_identity(USER).await;
@@ -323,6 +338,7 @@ async fn user_cannot_create_provider() {
323338
}
324339

325340
#[tokio::test]
341+
#[serial(oidc_pkce)]
326342
async fn user_cannot_delete_provider() {
327343
const PROVIDER: &str = "oidc-pkce-user-delete-target";
328344
const WORKSPACE: &str = "oidc-user-no-delete";
@@ -360,6 +376,7 @@ async fn user_cannot_delete_provider() {
360376
}
361377

362378
#[tokio::test]
379+
#[serial(oidc_pkce)]
363380
async fn admin_can_create_workspace() {
364381
const WORKSPACE: &str = "oidc-admin-create";
365382
let admin = login_identity(ADMIN).await;
@@ -381,6 +398,7 @@ async fn admin_can_create_workspace() {
381398
}
382399

383400
#[tokio::test]
401+
#[serial(oidc_pkce)]
384402
async fn user_cannot_create_workspace() {
385403
let user = login_identity(USER).await;
386404
let denied = run_session_cli(
@@ -392,6 +410,7 @@ async fn user_cannot_create_workspace() {
392410
}
393411

394412
#[tokio::test]
413+
#[serial(oidc_pkce)]
395414
async fn admin_can_delete_workspace() {
396415
const WORKSPACE: &str = "oidc-admin-delete";
397416
let admin = login_identity(ADMIN).await;
@@ -406,6 +425,7 @@ async fn admin_can_delete_workspace() {
406425
}
407426

408427
#[tokio::test]
428+
#[serial(oidc_pkce)]
409429
async fn user_cannot_delete_workspace() {
410430
const WORKSPACE: &str = "oidc-user-del-deny";
411431
let admin = login_identity(ADMIN).await;
@@ -423,6 +443,7 @@ async fn user_cannot_delete_workspace() {
423443
}
424444

425445
#[tokio::test]
446+
#[serial(oidc_pkce)]
426447
async fn workspace_user_can_read_workspace() {
427448
const WORKSPACE: &str = "oidc-ws-user-read";
428449
let user = login_identity(USER).await;
@@ -454,6 +475,7 @@ async fn workspace_user_can_read_workspace() {
454475
}
455476

456477
#[tokio::test]
478+
#[serial(oidc_pkce)]
457479
async fn workspace_user_cannot_manage_members() {
458480
const WORKSPACE: &str = "oidc-ws-user-deny";
459481
let user = login_identity(USER).await;
@@ -479,6 +501,7 @@ async fn workspace_user_cannot_manage_members() {
479501
}
480502

481503
#[tokio::test]
504+
#[serial(oidc_pkce)]
482505
async fn workspace_admin_can_read_workspace() {
483506
const WORKSPACE: &str = "oidc-wsa-read";
484507
let user = login_identity(USER).await;
@@ -496,6 +519,7 @@ async fn workspace_admin_can_read_workspace() {
496519
}
497520

498521
#[tokio::test]
522+
#[serial(oidc_pkce)]
499523
async fn workspace_admin_can_create_sandbox() {
500524
const WORKSPACE: &str = "oidc-wsa-create-sb";
501525
let user = login_identity(USER).await;
@@ -507,6 +531,7 @@ async fn workspace_admin_can_create_sandbox() {
507531
}
508532

509533
#[tokio::test]
534+
#[serial(oidc_pkce)]
510535
async fn workspace_admin_can_delete_sandbox() {
511536
const WORKSPACE: &str = "oidc-wsa-delete-sb";
512537
let user = login_identity(USER).await;
@@ -518,6 +543,7 @@ async fn workspace_admin_can_delete_sandbox() {
518543
}
519544

520545
#[tokio::test]
546+
#[serial(oidc_pkce)]
521547
async fn workspace_admin_can_create_provider() {
522548
const WORKSPACE: &str = "oidc-wsa-create-pr";
523549
const PROVIDER: &str = "oidc-wsa-create-provider";
@@ -552,6 +578,7 @@ async fn workspace_admin_can_create_provider() {
552578
}
553579

554580
#[tokio::test]
581+
#[serial(oidc_pkce)]
555582
async fn workspace_admin_can_delete_provider() {
556583
const WORKSPACE: &str = "oidc-wsa-delete-pr";
557584
const PROVIDER: &str = "oidc-wsa-delete-provider";
@@ -585,6 +612,7 @@ async fn workspace_admin_can_delete_provider() {
585612
}
586613

587614
#[tokio::test]
615+
#[serial(oidc_pkce)]
588616
async fn workspace_admin_can_add_user_member() {
589617
const WORKSPACE: &str = "oidc-wsa-add-user";
590618
let workspace_admin = login_identity(USER).await;
@@ -619,6 +647,7 @@ async fn workspace_admin_can_add_user_member() {
619647
}
620648

621649
#[tokio::test]
650+
#[serial(oidc_pkce)]
622651
async fn workspace_admin_can_remove_user_member() {
623652
const WORKSPACE: &str = "oidc-wsa-rm-user";
624653
let workspace_admin = login_identity(USER).await;
@@ -662,6 +691,7 @@ async fn workspace_admin_can_remove_user_member() {
662691
}
663692

664693
#[tokio::test]
694+
#[serial(oidc_pkce)]
665695
async fn workspace_admin_cannot_grant_admin() {
666696
const WORKSPACE: &str = "oidc-ws-admin-deny";
667697
let user = login_identity(USER).await;
@@ -687,6 +717,7 @@ async fn workspace_admin_cannot_grant_admin() {
687717
}
688718

689719
#[tokio::test]
720+
#[serial(oidc_pkce)]
690721
async fn workspace_admin_cannot_create_workspace() {
691722
const WORKSPACE: &str = "oidc-wsa-no-create";
692723
let user = login_identity(USER).await;
@@ -700,6 +731,7 @@ async fn workspace_admin_cannot_create_workspace() {
700731
}
701732

702733
#[tokio::test]
734+
#[serial(oidc_pkce)]
703735
async fn workspace_admin_cannot_delete_workspace() {
704736
const WORKSPACE: &str = "oidc-wsa-no-delete";
705737
let user = login_identity(USER).await;
@@ -712,6 +744,7 @@ async fn workspace_admin_cannot_delete_workspace() {
712744
}
713745

714746
#[tokio::test]
747+
#[serial(oidc_pkce)]
715748
async fn workspace_admin_cannot_inspect_gateway() {
716749
const WORKSPACE: &str = "oidc-wsa-no-gw-info";
717750
let user = login_identity(USER).await;
@@ -724,6 +757,7 @@ async fn workspace_admin_cannot_inspect_gateway() {
724757
}
725758

726759
#[tokio::test]
760+
#[serial(oidc_pkce)]
727761
async fn workspace_admin_cannot_read_another_workspace() {
728762
const WORKSPACE_A: &str = "oidc-wsa-xread-a";
729763
const WORKSPACE_B: &str = "oidc-wsa-xread-b";
@@ -738,6 +772,7 @@ async fn workspace_admin_cannot_read_another_workspace() {
738772
}
739773

740774
#[tokio::test]
775+
#[serial(oidc_pkce)]
741776
async fn workspace_admin_cannot_manage_another_workspace_members() {
742777
const WORKSPACE_A: &str = "oidc-wsa-xmem-a";
743778
const WORKSPACE_B: &str = "oidc-wsa-xmem-b";
@@ -769,6 +804,7 @@ async fn workspace_admin_cannot_manage_another_workspace_members() {
769804
}
770805

771806
#[tokio::test]
807+
#[serial(oidc_pkce)]
772808
async fn workspace_admin_cannot_manage_another_workspace_providers() {
773809
const WORKSPACE_A: &str = "oidc-wsa-xprov-a";
774810
const WORKSPACE_B: &str = "oidc-wsa-xprov-b";
@@ -800,6 +836,7 @@ async fn workspace_admin_cannot_manage_another_workspace_providers() {
800836
}
801837

802838
#[tokio::test]
839+
#[serial(oidc_pkce)]
803840
async fn membership_removal_revokes_workspace_access() {
804841
const WORKSPACE: &str = "oidc-ws-revoke";
805842
let user = login_identity(USER).await;
@@ -825,6 +862,7 @@ async fn membership_removal_revokes_workspace_access() {
825862
}
826863

827864
#[tokio::test]
865+
#[serial(oidc_pkce)]
828866
async fn workspace_user_cannot_read_another_users_workspace() {
829867
const WORKSPACE_A: &str = "oidc-xread-a";
830868
const WORKSPACE_B: &str = "oidc-xread-b";
@@ -838,6 +876,7 @@ async fn workspace_user_cannot_read_another_users_workspace() {
838876
}
839877

840878
#[tokio::test]
879+
#[serial(oidc_pkce)]
841880
async fn second_workspace_user_cannot_read_first_users_workspace() {
842881
const WORKSPACE_A: &str = "oidc-xread2-a";
843882
const WORKSPACE_B: &str = "oidc-xread2-b";
@@ -851,6 +890,7 @@ async fn second_workspace_user_cannot_read_first_users_workspace() {
851890
}
852891

853892
#[tokio::test]
893+
#[serial(oidc_pkce)]
854894
async fn workspace_list_hides_another_users_workspace() {
855895
const WORKSPACE_A: &str = "oidc-xlist-a";
856896
const WORKSPACE_B: &str = "oidc-xlist-b";
@@ -877,6 +917,7 @@ async fn workspace_list_hides_another_users_workspace() {
877917
}
878918

879919
#[tokio::test]
920+
#[serial(oidc_pkce)]
880921
async fn workspace_user_cannot_list_another_workspace_sandboxes() {
881922
const WORKSPACE_A: &str = "oidc-xsbox-a";
882923
const WORKSPACE_B: &str = "oidc-xsbox-b";
@@ -895,6 +936,7 @@ async fn workspace_user_cannot_list_another_workspace_sandboxes() {
895936
}
896937

897938
#[tokio::test]
939+
#[serial(oidc_pkce)]
898940
async fn workspace_user_cannot_create_sandbox_in_another_workspace() {
899941
const WORKSPACE_A: &str = "oidc-xcreate-a";
900942
const WORKSPACE_B: &str = "oidc-xcreate-b";
@@ -922,6 +964,7 @@ async fn workspace_user_cannot_create_sandbox_in_another_workspace() {
922964
}
923965

924966
#[tokio::test]
967+
#[serial(oidc_pkce)]
925968
async fn workspace_user_cannot_list_another_workspace_providers() {
926969
const WORKSPACE_A: &str = "oidc-xprov-a";
927970
const WORKSPACE_B: &str = "oidc-xprov-b";
@@ -940,6 +983,7 @@ async fn workspace_user_cannot_list_another_workspace_providers() {
940983
}
941984

942985
#[tokio::test]
986+
#[serial(oidc_pkce)]
943987
async fn workspace_user_cannot_list_another_workspace_members() {
944988
const WORKSPACE_A: &str = "oidc-xmember-a";
945989
const WORKSPACE_B: &str = "oidc-xmember-b";

0 commit comments

Comments
 (0)