From 341051ceeeac7b1c616fc23eed5cacad2672bb6a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Kayla=20=E3=81=AF=E3=81=AA?= Date: Wed, 13 May 2026 14:55:53 -0600 Subject: [PATCH] fix: exclude service accounts from license seat count (#24401) --- coderd/database/querier_test.go | 35 +++++++++++++++++++++++++++++++ coderd/database/queries.sql.go | 1 + coderd/database/queries/users.sql | 1 + 3 files changed, 37 insertions(+) diff --git a/coderd/database/querier_test.go b/coderd/database/querier_test.go index ebe000b21d..cb9f9d0920 100644 --- a/coderd/database/querier_test.go +++ b/coderd/database/querier_test.go @@ -2168,6 +2168,41 @@ func TestInsertUserServiceAccountConstraints(t *testing.T) { }) } +func TestGetActiveUserCount(t *testing.T) { + t.Parallel() + if testing.Short() { + t.SkipNow() + } + + db, _ := dbtestutil.NewDB(t) + ctx := testutil.Context(t, testutil.WaitLong) + + // Seed users: 2 active humans, 1 active service account, + // 1 dormant, 1 deleted. Only the 2 active humans should + // be counted for license seat purposes. + _ = dbgen.User(t, db, database.User{ + Status: database.UserStatusActive, + }) + _ = dbgen.User(t, db, database.User{ + Status: database.UserStatusActive, + }) + _ = dbgen.User(t, db, database.User{ + Status: database.UserStatusActive, + IsServiceAccount: true, + }) + _ = dbgen.User(t, db, database.User{ + Status: database.UserStatusDormant, + }) + _ = dbgen.User(t, db, database.User{ + Status: database.UserStatusActive, + Deleted: true, + }) + + count, err := db.GetActiveUserCount(ctx, false) + require.NoError(t, err) + require.Equal(t, int64(2), count) +} + func TestUserChangeLoginType(t *testing.T) { t.Parallel() if testing.Short() { diff --git a/coderd/database/queries.sql.go b/coderd/database/queries.sql.go index eb5c6fc924..b4f8402abf 100644 --- a/coderd/database/queries.sql.go +++ b/coderd/database/queries.sql.go @@ -25552,6 +25552,7 @@ FROM users WHERE status = 'active'::user_status AND deleted = false + AND is_service_account = false AND CASE WHEN $1::bool THEN TRUE ELSE is_system = false END ` diff --git a/coderd/database/queries/users.sql b/coderd/database/queries/users.sql index d9043575cf..88ab44fc5e 100644 --- a/coderd/database/queries/users.sql +++ b/coderd/database/queries/users.sql @@ -78,6 +78,7 @@ FROM users WHERE status = 'active'::user_status AND deleted = false + AND is_service_account = false AND CASE WHEN @include_system::bool THEN TRUE ELSE is_system = false END; -- name: InsertUser :one