mirror of
https://github.com/gravitl/netmaker.git
synced 2024-09-20 15:26:04 +08:00
719e0c254d
* add superadmin role, apis to create superadmin user * apis to attach and remove user from remote access gateways * add api to list user's remote client has gateway clients * remove code related user groups * remove networks and groups from user model * refactor user CRUD operations * fix network permission test * add superadmin to authorize func * remove user network and groups from cli * api to transfer superadmin role * add api to list users on a ingress gw * restrict user access to resources on server * deny request from remote access client if extclient is already created * fix user tests * fix static checks * fix static checks * add limits to extclient create handler * set username to superadmin on if masterkey is used * allow creation of extclients using masterkey * add migration func to assign superadmin role for existing admin user * check for superadmin on migration if users are present * allowe masterkey to extcleint apis * check ownerid * format error, on jwt token verification failure return unauthorized rather than forbidden * user update fix * move user remote functionality to ee * fix update user api * security patch * initalise ee user handlers * allow user to use master key to update any user * use slog * fix auth user test * table headers * remove user role, it's covered in middleware * setuser defaults fix
96 lines
2.2 KiB
Go
96 lines
2.2 KiB
Go
package functions
|
|
|
|
import (
|
|
"context"
|
|
"encoding/json"
|
|
"os"
|
|
"testing"
|
|
|
|
"github.com/gravitl/netmaker/database"
|
|
"github.com/gravitl/netmaker/logger"
|
|
"github.com/gravitl/netmaker/logic"
|
|
"github.com/gravitl/netmaker/models"
|
|
"github.com/stretchr/testify/assert"
|
|
)
|
|
|
|
var (
|
|
testNetwork = &models.Network{
|
|
NetID: "not-a-network",
|
|
}
|
|
testExternalClient = &models.ExtClient{
|
|
ClientID: "testExtClient",
|
|
}
|
|
)
|
|
|
|
func TestMain(m *testing.M) {
|
|
database.InitializeDatabase()
|
|
defer database.CloseDB()
|
|
logic.CreateSuperAdmin(&models.User{
|
|
UserName: "superadmin",
|
|
Password: "password",
|
|
IsSuperAdmin: true,
|
|
})
|
|
peerUpdate := make(chan *models.Node)
|
|
go logic.ManageZombies(context.Background(), peerUpdate)
|
|
go func() {
|
|
for update := range peerUpdate {
|
|
//do nothing
|
|
logger.Log(3, "received node update", update.Action)
|
|
}
|
|
}()
|
|
os.Exit(m.Run())
|
|
|
|
}
|
|
|
|
func TestNetworkExists(t *testing.T) {
|
|
database.DeleteRecord(database.NETWORKS_TABLE_NAME, testNetwork.NetID)
|
|
exists, err := logic.NetworkExists(testNetwork.NetID)
|
|
assert.NotNil(t, err)
|
|
assert.False(t, exists)
|
|
|
|
err = logic.SaveNetwork(testNetwork)
|
|
assert.Nil(t, err)
|
|
exists, err = logic.NetworkExists(testNetwork.NetID)
|
|
assert.Nil(t, err)
|
|
assert.True(t, exists)
|
|
|
|
err = database.DeleteRecord(database.NETWORKS_TABLE_NAME, testNetwork.NetID)
|
|
assert.Nil(t, err)
|
|
}
|
|
|
|
func TestGetAllExtClients(t *testing.T) {
|
|
err := database.DeleteRecord(database.EXT_CLIENT_TABLE_NAME, testExternalClient.ClientID)
|
|
assert.Nil(t, err)
|
|
|
|
extClients, err := GetAllExtClients()
|
|
if err == nil {
|
|
t.Fatalf("expected error, received nil")
|
|
}
|
|
if len(extClients) >= 1 {
|
|
t.Fatalf("expected no external clients, received %d", len(extClients))
|
|
}
|
|
|
|
extClient, err := json.Marshal(testExternalClient)
|
|
if err != nil {
|
|
t.Fatal(err)
|
|
}
|
|
|
|
err = database.Insert(testExternalClient.ClientID, string(extClient), database.EXT_CLIENT_TABLE_NAME)
|
|
if err != nil {
|
|
t.Fatal(err)
|
|
}
|
|
|
|
extClients, err = GetAllExtClients()
|
|
if err != nil {
|
|
t.Fatalf("expected nil, received: %s", err)
|
|
}
|
|
if len(extClients) < 1 {
|
|
t.Fatalf("expected 1 external client, received %d", len(extClients))
|
|
}
|
|
|
|
err = database.DeleteRecord(database.EXT_CLIENT_TABLE_NAME, testExternalClient.ClientID)
|
|
if err != nil {
|
|
t.Fatalf("failed removing extclient: %s", err)
|
|
}
|
|
}
|