Serviceaccounts: FIX adds qoute for user UID query for postgres (#96749)

* Add qoute for user UID of postgres

* add tests for uid

* fix for uid check not expectable
This commit is contained in:
Eric Leijonmarck 2024-11-20 14:11:03 +00:00 committed by GitHub
parent 6e7f30f301
commit 9f53362e3c
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
3 changed files with 28 additions and 8 deletions

View File

@ -222,7 +222,7 @@ func (s *ServiceAccountsStoreImpl) RetrieveServiceAccount(ctx context.Context, q
} }
if query.UID != "" { if query.UID != "" {
whereConditions = append(whereConditions, "user.uid = ?") whereConditions = append(whereConditions, fmt.Sprintf("%s.uid = ?", s.sqlStore.GetDialect().Quote("user")))
whereParams = append(whereParams, query.UID) whereParams = append(whereParams, query.UID)
} }

View File

@ -265,15 +265,22 @@ func TestIntegrationStore_RetrieveServiceAccount(t *testing.T) {
t.Skip("skipping test in short mode") t.Skip("skipping test in short mode")
} }
cases := []struct { cases := []struct {
desc string desc string
user tests.TestUser user tests.TestUser
expectedErr error retrieveByUID bool
expectedErr error
}{ }{
{ {
desc: "service accounts should exist and get retrieved", desc: "service accounts should exist and get retrieved",
user: tests.TestUser{Login: "servicetest1@admin", IsServiceAccount: true}, user: tests.TestUser{Login: "servicetest1@admin", IsServiceAccount: true},
expectedErr: nil, expectedErr: nil,
}, },
{
desc: "service accounts should be able to be retrieved with uid",
user: tests.TestUser{Login: "test1@admin", IsServiceAccount: true},
expectedErr: nil,
retrieveByUID: true,
},
{ {
desc: "service accounts is false should not retrieve user", desc: "service accounts is false should not retrieve user",
user: tests.TestUser{Login: "test1@admin", IsServiceAccount: false}, user: tests.TestUser{Login: "test1@admin", IsServiceAccount: false},
@ -283,18 +290,30 @@ func TestIntegrationStore_RetrieveServiceAccount(t *testing.T) {
for _, c := range cases { for _, c := range cases {
t.Run(c.desc, func(t *testing.T) { t.Run(c.desc, func(t *testing.T) {
var dto *serviceaccounts.ServiceAccountProfileDTO
var err error
db, store := setupTestDatabase(t) db, store := setupTestDatabase(t)
user := tests.SetupUserServiceAccount(t, db, store.cfg, c.user) user := tests.SetupUserServiceAccount(t, db, store.cfg, c.user)
dto, err := store.RetrieveServiceAccount(context.Background(), &serviceaccounts.GetServiceAccountQuery{ if c.retrieveByUID {
OrgID: user.OrgID, dto, err = store.RetrieveServiceAccount(context.Background(), &serviceaccounts.GetServiceAccountQuery{
ID: user.ID, OrgID: user.OrgID,
}) UID: user.UID,
})
} else {
dto, err = store.RetrieveServiceAccount(context.Background(), &serviceaccounts.GetServiceAccountQuery{
OrgID: user.OrgID,
ID: user.ID,
})
}
if c.expectedErr != nil { if c.expectedErr != nil {
require.ErrorIs(t, err, c.expectedErr) require.ErrorIs(t, err, c.expectedErr)
} else { } else {
require.NoError(t, err) require.NoError(t, err)
require.Equal(t, c.user.Login, dto.Login) require.Equal(t, c.user.Login, dto.Login)
require.Len(t, dto.Teams, 0) require.Len(t, dto.Teams, 0)
if c.retrieveByUID {
require.Equal(t, user.UID, dto.UID)
}
} }
}) })
} }

View File

@ -25,6 +25,7 @@ type TestUser struct {
Role string Role string
Login string Login string
IsServiceAccount bool IsServiceAccount bool
UID string
} }
type TestApiKey struct { type TestApiKey struct {