Movatterモバイル変換


[0]ホーム

URL:


Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

Commitb16d126

Browse files
committed
add unit test for system user behaviour
Signed-off-by: Danny Kopping <dannykopping@gmail.com>
1 parent48c5372 commitb16d126

File tree

1 file changed

+92
-0
lines changed

1 file changed

+92
-0
lines changed

‎coderd/users_test.go

Lines changed: 92 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@ package coderd_test
22

33
import (
44
"context"
5+
"database/sql"
56
"fmt"
67
"net/http"
78
"slices"
@@ -13,8 +14,10 @@ import (
1314

1415
"github.com/coder/coder/v2/coderd"
1516
"github.com/coder/coder/v2/coderd/coderdtest/oidctest"
17+
"github.com/coder/coder/v2/coderd/database/migrations"
1618
"github.com/coder/coder/v2/coderd/notifications"
1719
"github.com/coder/coder/v2/coderd/notifications/notificationstest"
20+
"github.com/coder/coder/v2/coderd/prebuilds"
1821
"github.com/coder/coder/v2/coderd/rbac/policy"
1922

2023
"github.com/golang-jwt/jwt/v4"
@@ -2415,3 +2418,92 @@ func BenchmarkUsersMe(b *testing.B) {
24152418
require.NoError(b,err)
24162419
}
24172420
}
2421+
2422+
funcTestSystemUserBehaviour(t*testing.T) {
2423+
// Setup.
2424+
t.Parallel()
2425+
2426+
ctx:=testutil.Context(t,testutil.WaitLong)
2427+
2428+
sqlDB:=testSQLDB(t)
2429+
err:=migrations.Up(sqlDB)// coderd/database/migrations/00030*_system_user.up.sql will create a system user.
2430+
require.NoError(t,err,"migrations")
2431+
2432+
db:=database.New(sqlDB)
2433+
2434+
// =================================================================================================================
2435+
2436+
// When: retrieving users with the include_system flag enabled.
2437+
other:=dbgen.User(t,db, database.User{})
2438+
users,err:=db.GetUsers(ctx, database.GetUsersParams{
2439+
IncludeSystem:true,
2440+
})
2441+
2442+
// Then: system users are returned, alongside other users.
2443+
require.NoError(t,err)
2444+
require.Len(t,users,2)
2445+
2446+
varsystemUser,regularUser database.GetUsersRow
2447+
for_,u:=rangeusers {
2448+
ifu.IsSystem.Bool {
2449+
systemUser=u
2450+
}else {
2451+
regularUser=u
2452+
}
2453+
}
2454+
require.NotNil(t,systemUser)
2455+
require.NotNil(t,regularUser)
2456+
2457+
require.True(t,systemUser.IsSystem.Bool)
2458+
require.Equal(t,systemUser.ID,prebuilds.OwnerID)
2459+
require.False(t,regularUser.IsSystem.Bool)
2460+
require.Equal(t,regularUser.ID,other.ID)
2461+
2462+
// =================================================================================================================
2463+
2464+
// When: retrieving users with the include_system flag disabled.
2465+
users,err=db.GetUsers(ctx, database.GetUsersParams{
2466+
IncludeSystem:false,
2467+
})
2468+
2469+
// Then: only regular users are returned.
2470+
require.NoError(t,err)
2471+
require.Len(t,users,1)
2472+
require.False(t,users[0].IsSystem.Bool)
2473+
2474+
// =================================================================================================================
2475+
2476+
// When: attempting to update a system user's name.
2477+
_,err=db.UpdateUserProfile(ctx, database.UpdateUserProfileParams{
2478+
ID:systemUser.ID,
2479+
Name:"not prebuilds",
2480+
})
2481+
// Then: the attempt is rejected by a postgres trigger.
2482+
require.ErrorContains(t,err,"Cannot modify or delete system users")
2483+
2484+
// When: attempting to delete a system user.
2485+
err=db.UpdateUserDeletedByID(ctx,systemUser.ID)
2486+
// Then: the attempt is rejected by a postgres trigger.
2487+
require.ErrorContains(t,err,"Cannot modify or delete system users")
2488+
2489+
// When: attempting to update a user's roles.
2490+
_,err=db.UpdateUserRoles(ctx, database.UpdateUserRolesParams{
2491+
ID:systemUser.ID,
2492+
GrantedRoles: []string{rbac.RoleAuditor().String()},
2493+
})
2494+
// Then: the attempt is rejected by a postgres trigger.
2495+
require.ErrorContains(t,err,"Cannot modify or delete system users")
2496+
}
2497+
2498+
functestSQLDB(t testing.TB)*sql.DB {
2499+
t.Helper()
2500+
2501+
connection,err:=dbtestutil.Open(t)
2502+
require.NoError(t,err)
2503+
2504+
db,err:=sql.Open("postgres",connection)
2505+
require.NoError(t,err)
2506+
t.Cleanup(func() {_=db.Close() })
2507+
2508+
returndb
2509+
}

0 commit comments

Comments
 (0)

[8]ページ先頭

©2009-2025 Movatter.jp