mirror of
https://github.com/netbirdio/netbird.git
synced 2026-10-29 07:49:14 +01:00
[management] Give the /api/setup owner account the single account mode domain (#8147)
This commit is contained in:
@@ -50,6 +50,7 @@ import (
|
||||
"github.com/netbirdio/netbird/management/server/cache"
|
||||
"github.com/netbirdio/netbird/management/server/http/testing/testing_tools"
|
||||
"github.com/netbirdio/netbird/management/server/idp"
|
||||
"github.com/netbirdio/netbird/management/server/instance"
|
||||
"github.com/netbirdio/netbird/management/server/job"
|
||||
resourceTypes "github.com/netbirdio/netbird/management/server/networks/resources/types"
|
||||
routerTypes "github.com/netbirdio/netbird/management/server/networks/routers/types"
|
||||
@@ -844,6 +845,49 @@ func TestAccountManager_GetAccountByUserID(t *testing.T) {
|
||||
}
|
||||
}
|
||||
|
||||
type setupOwnerInstanceManager struct {
|
||||
instance.Manager
|
||||
user *idp.UserData
|
||||
}
|
||||
|
||||
func (m setupOwnerInstanceManager) CreateOwnerUser(context.Context, string, string, string) (*idp.UserData, error) {
|
||||
return m.user, nil
|
||||
}
|
||||
|
||||
// The /api/setup owner account must get the single account mode domain, so later
|
||||
// users join that account instead of forking a new one.
|
||||
func TestSetupOwner_SingleAccountMode_LaterUsersJoinSetupAccount(t *testing.T) {
|
||||
t.Setenv(instance.SetupPATEnabledEnvKey, "true")
|
||||
|
||||
manager, _, err := createManager(t)
|
||||
require.NoError(t, err)
|
||||
manager.singleAccountMode = true
|
||||
manager.singleAccountModeDomain = "netbird.selfhosted"
|
||||
|
||||
ctx := context.Background()
|
||||
owner := &idp.UserData{ID: "owner", Email: "owner@example.com", Name: "Owner"}
|
||||
setup := instance.NewSetupService(setupOwnerInstanceManager{user: owner}, manager)
|
||||
_, err = setup.SetupOwner(ctx, owner.Email, "password", owner.Name, instance.SetupOptions{CreatePAT: true})
|
||||
require.NoError(t, err)
|
||||
|
||||
ownerAccountID, err := manager.Store.GetAccountIDByUserID(ctx, store.LockingStrengthNone, owner.ID)
|
||||
require.NoError(t, err)
|
||||
acc, err := manager.Store.GetAccount(ctx, ownerAccountID)
|
||||
require.NoError(t, err)
|
||||
assert.Equal(t, "netbird.selfhosted", acc.Domain)
|
||||
assert.Equal(t, types.PrivateCategory, acc.DomainCategory)
|
||||
assert.True(t, acc.IsDomainPrimaryAccount)
|
||||
|
||||
jitAccountID, _, err := manager.GetAccountIDFromUserAuth(ctx, auth.UserAuth{
|
||||
UserId: "jit-user",
|
||||
Email: "jit@gmail.com",
|
||||
Domain: "gmail.com",
|
||||
DomainCategory: types.PublicCategory,
|
||||
})
|
||||
require.NoError(t, err)
|
||||
assert.Equal(t, ownerAccountID, jitAccountID)
|
||||
}
|
||||
|
||||
func createAccount(am *DefaultAccountManager, accountID, userID, domain string) (*types.Account, error) {
|
||||
account := newAccountWithId(context.Background(), accountID, userID, domain, "", "", false)
|
||||
err := am.Store.SaveAccount(context.Background(), account)
|
||||
|
||||
Reference in New Issue
Block a user