Skip to content

Commit e5dd023

Browse files
easyCZroboquat
authored andcommitted
[pat] API allows update which does not change any data
1 parent 8374099 commit e5dd023

File tree

3 files changed

+43
-4
lines changed

3 files changed

+43
-4
lines changed

components/gitpod-db/go/personal_access_token.go

Lines changed: 0 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -235,10 +235,6 @@ func UpdatePersonalAccessTokenForUser(ctx context.Context, conn *gorm.DB, opts U
235235
return PersonalAccessToken{}, fmt.Errorf("failed to update personal access token: %w", tx.Error)
236236
}
237237

238-
if tx.RowsAffected == 0 {
239-
return PersonalAccessToken{}, fmt.Errorf("token (ID: %s) for user (ID: %s) does not exist: %w", opts.TokenID, opts.UserID, ErrorNotFound)
240-
}
241-
242238
return GetPersonalAccessTokenForUser(ctx, conn, opts.TokenID, opts.UserID)
243239
}
244240

components/gitpod-db/go/personal_access_token_test.go

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -285,6 +285,24 @@ func TestUpdatePersonalAccessTokenForUser(t *testing.T) {
285285
require.ErrorIs(t, err, db.ErrorNotFound)
286286
})
287287

288+
t.Run("no modified field completes gracefully", func(t *testing.T) {
289+
conn := dbtest.ConnectForTests(t)
290+
name := "first"
291+
292+
created := dbtest.CreatePersonalAccessTokenRecords(t, conn, dbtest.NewPersonalAccessToken(t, db.PersonalAccessToken{
293+
Name: name,
294+
}))[0]
295+
296+
udpated, err := db.UpdatePersonalAccessTokenForUser(context.Background(), conn, db.UpdatePersonalAccessTokenOpts{
297+
TokenID: created.ID,
298+
UserID: created.UserID,
299+
Name: &name,
300+
})
301+
require.NoError(t, err)
302+
require.Equal(t, name, udpated.Name)
303+
require.Len(t, udpated.Scopes, 0)
304+
})
305+
288306
t.Run("no update when all options are nil", func(t *testing.T) {
289307
conn := dbtest.ConnectForTests(t)
290308

components/public-api-server/pkg/apiv1/tokens_test.go

Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -552,6 +552,31 @@ func TestTokensService_UpdatePersonalAccessToken(t *testing.T) {
552552
require.Equal(t, connect.CodeInvalidArgument, connect.CodeOf(err))
553553
})
554554

555+
t.Run("allows unmodified udpate", func(t *testing.T) {
556+
serverMock, _, client := setupTokensService(t, withTokenFeatureEnabled)
557+
558+
serverMock.EXPECT().GetLoggedInUser(gomock.Any()).Return(user, nil).Times(2)
559+
560+
createResponse, err := client.CreatePersonalAccessToken(context.Background(), connect.NewRequest(&v1.CreatePersonalAccessTokenRequest{
561+
Token: &v1.PersonalAccessToken{
562+
Name: "first",
563+
ExpirationTime: timestamppb.Now(),
564+
},
565+
}))
566+
require.NoError(t, err)
567+
568+
_, err = client.UpdatePersonalAccessToken(context.Background(), connect.NewRequest(&v1.UpdatePersonalAccessTokenRequest{
569+
Token: &v1.PersonalAccessToken{
570+
Id: createResponse.Msg.GetToken().GetId(),
571+
Name: createResponse.Msg.GetToken().GetName(),
572+
},
573+
UpdateMask: &fieldmaskpb.FieldMask{
574+
Paths: []string{"name", "scopes"},
575+
},
576+
}))
577+
require.NoError(t, err)
578+
})
579+
555580
t.Run("default updates both name and scopes, when no mask specified", func(t *testing.T) {
556581
serverMock, _, client := setupTokensService(t, withTokenFeatureEnabled)
557582

0 commit comments

Comments
 (0)