Skip to content
Snippets Groups Projects
Commit a2a30ef2 authored by Neil-Jocelyn Schark's avatar Neil-Jocelyn Schark
Browse files

test new changes

parent cbd082e5
No related branches found
No related tags found
1 merge request!977Resolve "Improve token usage for users"
Pipeline #218748 failed
......@@ -93,13 +93,11 @@ func (s AuthServer) Login(ctx context.Context, request *apb.LoginRequest) (*apb.
return nil, err
}
userToUpdate.AddToken(token)
for len(userToUpdate.GetTokens()) > config.MaxTokensPerUser {
err = userToUpdate.RemoveToken(userToUpdate.GetTokens()[0])
if err != nil {
return nil, err
}
err = addTokenAndEnsureTokenLimit(userToUpdate, token)
if err != nil {
return nil, err
}
err = s.userService.Update(userToUpdate)
if err != nil {
return nil, err
......@@ -218,3 +216,14 @@ func (s AuthServer) handleLogout(ctx context.Context, userName string) error {
return nil
}
func addTokenAndEnsureTokenLimit(userToUpdate rbacInterfaces.User, token string) error {
userToUpdate.AddToken(token)
for len(userToUpdate.GetTokens()) > config.MaxTokensPerUser {
err := userToUpdate.RemoveToken(userToUpdate.GetTokens()[0])
if err != nil {
return err
}
}
return nil
}
......@@ -8,9 +8,13 @@ import (
"buf.build/gen/go/bufbuild/protovalidate/protocolbuffers/go/buf/validate"
apb "code.fbi.h-da.de/danet/gosdn/api/go/gosdn/rbac"
"code.fbi.h-da.de/danet/gosdn/controller/config"
"code.fbi.h-da.de/danet/gosdn/controller/conflict"
eventservice "code.fbi.h-da.de/danet/gosdn/controller/eventService"
"code.fbi.h-da.de/danet/gosdn/controller/rbac"
"github.com/bufbuild/protovalidate-go"
"github.com/google/uuid"
"github.com/stretchr/testify/assert"
"google.golang.org/grpc/metadata"
)
......@@ -291,3 +295,25 @@ func TestAuth_handleLogout(t *testing.T) {
})
}
}
func TestAuth_addTokenAndEnsureTokenLimit_addKey(t *testing.T) {
config.MaxTokensPerUser = 2
userID := uuid.New()
user := rbac.NewUser(userID, "testUser", map[string]string{}, "password", []string{"token1"}, "salt", conflict.Metadata{ResourceVersion: 0})
addTokenAndEnsureTokenLimit(user, "token2")
assert.Equal(t, 2, len(user.GetTokens()))
assert.Equal(t, "token1", user.GetTokens()[0])
assert.Equal(t, "token2", user.GetTokens()[1])
}
func TestAuth_addTokenAndEnsureTokenLimit_removeOldKey(t *testing.T) {
config.MaxTokensPerUser = 2
userID := uuid.New()
user := rbac.NewUser(userID, "testUser", map[string]string{}, "password", []string{"token1", "token2"}, "salt", conflict.Metadata{ResourceVersion: 0})
addTokenAndEnsureTokenLimit(user, "token3")
assert.Equal(t, 2, len(user.GetTokens()))
assert.Equal(t, "token2", user.GetTokens()[0])
assert.Equal(t, "token3", user.GetTokens()[1])
}
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment