5
5
"database/sql"
6
6
"fmt"
7
7
"net/http"
8
- "runtime"
9
8
"slices"
10
9
"strings"
11
10
"testing"
@@ -15,10 +14,8 @@ import (
15
14
16
15
"github.com/coder/coder/v2/coderd"
17
16
"github.com/coder/coder/v2/coderd/coderdtest/oidctest"
18
- "github.com/coder/coder/v2/coderd/database/migrations"
19
17
"github.com/coder/coder/v2/coderd/notifications"
20
18
"github.com/coder/coder/v2/coderd/notifications/notificationstest"
21
- "github.com/coder/coder/v2/coderd/prebuilds"
22
19
"github.com/coder/coder/v2/coderd/rbac/policy"
23
20
24
21
"github.com/golang-jwt/jwt/v4"
@@ -2446,96 +2443,3 @@ func BenchmarkUsersMe(b *testing.B) {
2446
2443
require .NoError (b , err )
2447
2444
}
2448
2445
}
2449
-
2450
- func TestSystemUserBehaviour (t * testing.T ) {
2451
- // Setup.
2452
- t .Parallel ()
2453
-
2454
- if runtime .GOOS != "linux" {
2455
- t .Skip ("skipping because non-linux platforms are tricky to run the mock db container on, and there's no platform-dependence on these tests" )
2456
- }
2457
-
2458
- ctx := testutil .Context (t , testutil .WaitLong )
2459
-
2460
- sqlDB := testSQLDB (t )
2461
- err := migrations .Up (sqlDB ) // coderd/database/migrations/00030*_system_user.up.sql will create a system user.
2462
- require .NoError (t , err , "migrations" )
2463
-
2464
- db := database .New (sqlDB )
2465
-
2466
- // =================================================================================================================
2467
-
2468
- // When: retrieving users with the include_system flag enabled.
2469
- other := dbgen .User (t , db , database.User {})
2470
- users , err := db .GetUsers (ctx , database.GetUsersParams {
2471
- IncludeSystem : true ,
2472
- })
2473
-
2474
- // Then: system users are returned, alongside other users.
2475
- require .NoError (t , err )
2476
<
8000
code class="diff-text syntax-highlighted-line deletion">- require .Len (t , users , 2 )
2477
-
2478
- var systemUser , regularUser database.GetUsersRow
2479
- for _ , u := range users {
2480
- if u .IsSystem {
2481
- systemUser = u
2482
- } else {
2483
- regularUser = u
2484
- }
2485
- }
2486
- require .NotNil (t , systemUser )
2487
- require .NotNil (t , regularUser )
2488
-
2489
- require .True (t , systemUser .IsSystem )
2490
- require .Equal (t , systemUser .ID , prebuilds .SystemUserID )
2491
- require .False (t , regularUser .IsSystem )
2492
- require .Equal (t , regularUser .ID , other .ID )
2493
-
2494
- // =================================================================================================================
2495
-
2496
- // When: retrieving users with the include_system flag disabled.
2497
- users , err = db .GetUsers (ctx , database.GetUsersParams {
2498
- IncludeSystem : false ,
2499
- })
2500
-
2501
- // Then: only regular users are returned.
2502
- require .NoError (t , err )
2503
- require .Len (t , users , 1 )
2504
- require .False (t , users [0 ].IsSystem )
2505
-
2506
- // =================================================================================================================
2507
-
2508
- // When: attempting to update a system user's name.
2509
- _ , err = db .UpdateUserProfile (ctx , database.UpdateUserProfileParams {
2510
- ID : systemUser .ID ,
2511
- Name : "not prebuilds" ,
2512
- })
2513
- // Then: the attempt is rejected by a postgres trigger.
2514
- require .ErrorContains (t , err , "Cannot modify or delete system users" )
2515
-
2516
- // When: attempting to delete a system user.
2517
- err = db .UpdateUserDeletedByID (ctx , systemUser .ID )
2518
- // Then: the attempt is rejected by a postgres trigger.
2519
- require .ErrorContains (t , err , "Cannot modify or delete system users" )
2520
-
2521
- // When: attempting to update a user's roles.
2522
- _ , err = db .UpdateUserRoles (ctx , database.UpdateUserRolesParams {
2523
- ID : systemUser .ID ,
2524
- GrantedRoles : []string {rbac .RoleAuditor ().String ()},
2525
- })
2526
- // Then: the attempt is rejected by a postgres trigger.
2527
- require .ErrorContains (t , err , "Cannot modify or delete system users" )
2528
- }
2529
-
2530
- func testSQLDB (t testing.TB ) * sql.DB {
2531
- t .Helper ()
2532
-
2533
- connection , err := dbtestutil .Open (t )
2534
- require .NoError (t , err )
2535
-
2536
- db , err := sql .Open ("postgres" , connection )
2537
- require .NoError (t , err )
2538
- t .Cleanup (func () { _ = db .Close () })
2539
-
2540
- return db
2541
- }
0 commit comments