Some checks failed
FreeBSD / Client / Unit (push) Has been cancelled
Linux / Build Cache (push) Has been cancelled
Linux / Client / Unit (386) (push) Has been cancelled
Linux / Client / Unit (amd64) (push) Has been cancelled
Darwin / Client / Unit (push) Has been cancelled
Linux / Client (Docker) / Unit (push) Has been cancelled
Linux / Relay / Unit (386, ) (push) Has been cancelled
Linux / Relay / Unit (amd64, -race) (push) Has been cancelled
Linux / Proxy / Unit (386) (push) Has been cancelled
Linux / Proxy / Unit (amd64) (push) Has been cancelled
Linux / Signal / Unit (386) (push) Has been cancelled
Linux / Signal / Unit (amd64) (push) Has been cancelled
Linux / Management / Unit (amd64, mysql) (push) Has been cancelled
Linux / Management / Unit (amd64, postgres) (push) Has been cancelled
Test installation / test-install-script (false, macos-latest, false) (push) Has been cancelled
Linux / Management / Unit (amd64, sqlite) (push) Has been cancelled
Linux / Management / Benchmark (amd64, postgres) (push) Has been cancelled
Linux / Management / Benchmark (amd64, sqlite) (push) Has been cancelled
Linux / Management / Benchmark (API) (amd64, postgres) (push) Has been cancelled
Linux / Management / Benchmark (API) (amd64, sqlite) (push) Has been cancelled
Linux / Management / Integration (amd64, postgres) (push) Has been cancelled
Linux / Management / Integration (amd64, sqlite) (push) Has been cancelled
Windows / Client / Unit (push) Has been cancelled
Mobile / Android / Build (push) Has been cancelled
Mobile / iOS / Build (push) Has been cancelled
Release / release_ui_darwin (push) Has been cancelled
Release / Windows Installer / Build Test (amd64, amd64) (push) Has been cancelled
Test installation / test-install-script (false, macos-latest, true) (push) Has been cancelled
Test installation / test-install-script (false, ubuntu-latest, false) (push) Has been cancelled
Test installation / test-install-script (false, ubuntu-latest, true) (push) Has been cancelled
Test installation / test-install-script (true, macos-latest, false) (push) Has been cancelled
Test installation / test-install-script (true, macos-latest, true) (push) Has been cancelled
Release / Windows Installer / Build Test (arm64, arm64) (push) Has been cancelled
Release / Comment release artifacts (push) Has been cancelled
Test installation / test-install-script (true, ubuntu-latest, false) (push) Has been cancelled
Test installation / test-install-script (true, ubuntu-latest, true) (push) Has been cancelled
Release / FreeBSD Port / Build & Test (push) Has been cancelled
Release / release (push) Has been cancelled
Release / release_ui (push) Has been cancelled
Test Infrastructure files / test-docker-compose (mysql) (push) Has been cancelled
Test Infrastructure files / test-docker-compose (postgres) (push) Has been cancelled
Test Infrastructure files / test-docker-compose (sqlite) (push) Has been cancelled
Test Infrastructure files / test-getting-started-script (push) Has been cancelled
Release / trigger_signer (push) Has been cancelled
sync main / trigger_sync_main (push) Has been cancelled
Wasm / JS / Lint (push) Has been cancelled
Wasm / JS / Build (push) Has been cancelled
* Migrate to profile ids * Migrate android profile manager * Clean up * Fix review * Add ID type * Fix test and runes in ShortID() * Fix profile switch on up and android comments * Revert android profile to string id * Fix feedback * Fix UI feedback * Fix id assignment * Add renaming of profiles * Fix review * Remove ui binary * Fix getProfileConfigPath not validating id * Change resolve handle order and fix server merge problems * Fix mdm test
144 lines
3.8 KiB
Go
144 lines
3.8 KiB
Go
package cmd
|
|
|
|
import (
|
|
"context"
|
|
"os"
|
|
"os/user"
|
|
"testing"
|
|
"time"
|
|
|
|
"github.com/netbirdio/netbird/client/internal"
|
|
"github.com/netbirdio/netbird/client/internal/profilemanager"
|
|
)
|
|
|
|
var cliAddr string
|
|
|
|
func TestUpDaemon(t *testing.T) {
|
|
|
|
tempDir := t.TempDir()
|
|
origDefaultProfileDir := profilemanager.DefaultConfigPathDir
|
|
origActiveProfileStatePath := profilemanager.ActiveProfileStatePath
|
|
profilemanager.DefaultConfigPathDir = tempDir
|
|
profilemanager.ActiveProfileStatePath = tempDir + "/active_profile.json"
|
|
profilemanager.ConfigDirOverride = tempDir
|
|
|
|
currUser, err := user.Current()
|
|
if err != nil {
|
|
t.Fatalf("failed to get current user: %v", err)
|
|
return
|
|
}
|
|
|
|
sm := profilemanager.ServiceManager{}
|
|
created, err := sm.AddProfile("test1", currUser.Username)
|
|
if err != nil {
|
|
t.Fatalf("failed to add profile: %v", err)
|
|
return
|
|
}
|
|
|
|
err = sm.SetActiveProfileState(&profilemanager.ActiveProfileState{
|
|
ID: created.ID,
|
|
Username: currUser.Username,
|
|
})
|
|
if err != nil {
|
|
t.Fatalf("failed to set active profile state: %v", err)
|
|
return
|
|
}
|
|
|
|
t.Cleanup(func() {
|
|
profilemanager.DefaultConfigPathDir = origDefaultProfileDir
|
|
profilemanager.ActiveProfileStatePath = origActiveProfileStatePath
|
|
profilemanager.ConfigDirOverride = ""
|
|
})
|
|
|
|
mgmAddr := startTestingServices(t)
|
|
|
|
confPath := tempDir + "/config.json"
|
|
|
|
ctx := internal.CtxInitState(context.Background())
|
|
state := internal.CtxGetState(ctx)
|
|
|
|
_, cliLis := startClientDaemon(t, ctx, "http://"+mgmAddr, confPath)
|
|
|
|
cliAddr = cliLis.Addr().String()
|
|
|
|
daemonAddr = "tcp://" + cliAddr
|
|
rootCmd.SetArgs([]string{
|
|
"login",
|
|
"--daemon-addr", "tcp://" + cliAddr,
|
|
"--setup-key", "A2C8E62B-38F5-4553-B31E-DD66C696CEBB",
|
|
"--log-file", "",
|
|
})
|
|
if err := rootCmd.Execute(); err != nil {
|
|
t.Errorf("expected no error while running up command, got %v", err)
|
|
return
|
|
}
|
|
time.Sleep(time.Second * 3)
|
|
if status, err := state.Status(); err != nil && status != internal.StatusIdle {
|
|
t.Errorf("wrong status after login: %s, %v", internal.StatusIdle, err)
|
|
return
|
|
}
|
|
|
|
// Test the setup-key-file flag.
|
|
tempFile, err := os.CreateTemp("", "setup-key")
|
|
if err != nil {
|
|
t.Errorf("could not create temp file, got error %v", err)
|
|
return
|
|
}
|
|
defer os.Remove(tempFile.Name())
|
|
if _, err := tempFile.Write([]byte("A2C8E62B-38F5-4553-B31E-DD66C696CEBB")); err != nil {
|
|
t.Errorf("could not write to temp file, got error %v", err)
|
|
return
|
|
}
|
|
if err := tempFile.Close(); err != nil {
|
|
t.Errorf("unable to close file, got error %v", err)
|
|
}
|
|
rootCmd.SetArgs([]string{
|
|
"login",
|
|
"--daemon-addr", "tcp://" + cliAddr,
|
|
"--setup-key-file", tempFile.Name(),
|
|
"--log-file", "",
|
|
})
|
|
if err := rootCmd.Execute(); err != nil {
|
|
t.Errorf("expected no error while running up command, got %v", err)
|
|
return
|
|
}
|
|
time.Sleep(time.Second * 3)
|
|
if status, err := state.Status(); err != nil && status != internal.StatusIdle {
|
|
t.Errorf("wrong status after login: %s, %v", internal.StatusIdle, err)
|
|
return
|
|
}
|
|
|
|
rootCmd.SetArgs([]string{
|
|
"up",
|
|
"--daemon-addr", "tcp://" + cliAddr,
|
|
"--log-file", "",
|
|
})
|
|
if err := rootCmd.Execute(); err != nil {
|
|
t.Errorf("expected no error while running up command, got %v", err)
|
|
return
|
|
}
|
|
time.Sleep(time.Second * 3)
|
|
if status, err := state.Status(); err != nil && status != internal.StatusConnected {
|
|
t.Errorf("wrong status after connect: %s, %v", status, err)
|
|
return
|
|
}
|
|
|
|
rootCmd.SetArgs([]string{
|
|
"status",
|
|
"--daemon-addr", "tcp://" + cliAddr,
|
|
})
|
|
if err := rootCmd.Execute(); err != nil {
|
|
t.Errorf("expected no error while running up command, got %v", err)
|
|
return
|
|
}
|
|
time.Sleep(time.Second * 3)
|
|
|
|
rootCmd.SetErr(nil)
|
|
rootCmd.SetArgs([]string{"down", "--daemon-addr", "tcp://" + cliAddr})
|
|
if err := rootCmd.Execute(); err != nil {
|
|
t.Errorf("expected no error while running up command, got %v", err)
|
|
return
|
|
}
|
|
// we can't check status here, because context already canceled
|
|
}
|