Skip to content

Commit

Permalink
[v13] GenerateToken should call CreateToken not UpsertToken (#2…
Browse files Browse the repository at this point in the history
…9391)

* GenerateToken should call CreateToken not UpsertToken

* Add test for issue

* Improved test name

Co-authored-by: Alan Parra <alan.parra@goteleport.com>

---------

Co-authored-by: Alan Parra <alan.parra@goteleport.com>
  • Loading branch information
strideynet and codingllama committed Jul 24, 2023
1 parent a43beed commit ccc1d93
Show file tree
Hide file tree
Showing 2 changed files with 19 additions and 5 deletions.
2 changes: 1 addition & 1 deletion lib/auth/auth.go
Expand Up @@ -3393,7 +3393,7 @@ func (a *Server) GenerateToken(ctx context.Context, req *proto.GenerateTokenRequ
token.SetMetadata(meta)
}

if err := a.UpsertToken(ctx, token); err != nil {
if err := a.CreateToken(ctx, token); err != nil {
return "", trace.Wrap(err)
}

Expand Down
22 changes: 18 additions & 4 deletions lib/auth/tls_test.go
Expand Up @@ -4234,9 +4234,10 @@ func TestGRPCServer_GenerateToken(t *testing.T) {
require.NoError(t, ac.server.Auth().CreateToken(ctx, alreadyExistsToken))

tests := []struct {
name string
identity TestIdentity
roles types.SystemRoles
name string
identity TestIdentity
roles types.SystemRoles
overrideTokenName string

requireTokenCreated bool
requireError require.ErrorAssertionFunc
Expand Down Expand Up @@ -4292,6 +4293,15 @@ func TestGRPCServer_GenerateToken(t *testing.T) {
},
},
},
{
name: "can't override existing token",
identity: TestUser(privilegedUser.GetName()),
overrideTokenName: alreadyExistsToken.GetName(),
roles: types.SystemRoles{types.RoleTrustedCluster},
requireError: func(t require.TestingT, err error, i ...interface{}) {
require.Equal(t, codes.AlreadyExists, status.Code(err))
},
},
{
name: "access denied",
identity: TestNop(),
Expand All @@ -4312,7 +4322,11 @@ func TestGRPCServer_GenerateToken(t *testing.T) {
rawAuthSvcClient := proto.NewAuthServiceClient(client.APIClient.GetConnection())

mockEmitter.Reset()
tokenResp, err := rawAuthSvcClient.GenerateToken(ctx, &proto.GenerateTokenRequest{Roles: tt.roles})
req := &proto.GenerateTokenRequest{Roles: tt.roles}
if tt.overrideTokenName != "" {
req.Token = tt.overrideTokenName
}
tokenResp, err := rawAuthSvcClient.GenerateToken(ctx, req)
tt.requireError(t, err)

require.Empty(t, cmp.Diff(
Expand Down

0 comments on commit ccc1d93

Please sign in to comment.