mirror of
https://github.com/gravitl/netmaker.git
synced 2025-10-07 17:51:56 +08:00
completed crud unit tests
This commit is contained in:
@@ -1,7 +1,7 @@
|
|||||||
//Environment file for getting variables
|
// Environment file for getting variables
|
||||||
//Currently the only thing it does is set the master password
|
// Currently the only thing it does is set the master password
|
||||||
//Should probably have it take over functions from OS such as port and mongodb connection details
|
// Should probably have it take over functions from OS such as port and mongodb connection details
|
||||||
//Reads from the config/environments/dev.yaml file by default
|
// Reads from the config/environments/dev.yaml file by default
|
||||||
package config
|
package config
|
||||||
|
|
||||||
import (
|
import (
|
||||||
|
@@ -5,7 +5,6 @@ import "testing"
|
|||||||
func Test_genKeyName(t *testing.T) {
|
func Test_genKeyName(t *testing.T) {
|
||||||
for i := 0; i < 100; i++ {
|
for i := 0; i < 100; i++ {
|
||||||
kname := genKeyName()
|
kname := genKeyName()
|
||||||
t.Log(kname)
|
|
||||||
if len(kname) != 20 {
|
if len(kname) != 20 {
|
||||||
t.Fatalf("improper length of key name, expected 20 got :%d", len(kname))
|
t.Fatalf("improper length of key name, expected 20 got :%d", len(kname))
|
||||||
}
|
}
|
||||||
@@ -15,7 +14,6 @@ func Test_genKeyName(t *testing.T) {
|
|||||||
func Test_genKey(t *testing.T) {
|
func Test_genKey(t *testing.T) {
|
||||||
for i := 0; i < 100; i++ {
|
for i := 0; i < 100; i++ {
|
||||||
kname := GenKey()
|
kname := GenKey()
|
||||||
t.Log(kname)
|
|
||||||
if len(kname) != 16 {
|
if len(kname) != 16 {
|
||||||
t.Fatalf("improper length of key name, expected 16 got :%d", len(kname))
|
t.Fatalf("improper length of key name, expected 16 got :%d", len(kname))
|
||||||
}
|
}
|
||||||
|
@@ -12,13 +12,15 @@ import (
|
|||||||
|
|
||||||
// EnrollmentKeyErrors - struct for holding EnrollmentKey error messages
|
// EnrollmentKeyErrors - struct for holding EnrollmentKey error messages
|
||||||
var EnrollmentKeyErrors = struct {
|
var EnrollmentKeyErrors = struct {
|
||||||
InvalidCreate string
|
InvalidCreate string
|
||||||
NoKeyFound string
|
NoKeyFound string
|
||||||
InvalidKey string
|
InvalidKey string
|
||||||
|
NoUsesRemaining string
|
||||||
}{
|
}{
|
||||||
InvalidCreate: "invalid enrollment key created",
|
InvalidCreate: "invalid enrollment key created",
|
||||||
NoKeyFound: "no enrollmentkey found",
|
NoKeyFound: "no enrollmentkey found",
|
||||||
InvalidKey: "invalid key provided",
|
InvalidKey: "invalid key provided",
|
||||||
|
NoUsesRemaining: "no uses remaining",
|
||||||
}
|
}
|
||||||
|
|
||||||
// CreateEnrollmentKey - creates a new enrollment key in db
|
// CreateEnrollmentKey - creates a new enrollment key in db
|
||||||
@@ -84,9 +86,30 @@ func GetEnrollmentKey(value string) (*models.EnrollmentKey, error) {
|
|||||||
|
|
||||||
// DeleteEnrollmentKey - delete's a given enrollment key by value
|
// DeleteEnrollmentKey - delete's a given enrollment key by value
|
||||||
func DeleteEnrollmentKey(value string) error {
|
func DeleteEnrollmentKey(value string) error {
|
||||||
|
_, err := GetEnrollmentKey(value)
|
||||||
|
if err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
return database.DeleteRecord(database.ENROLLMENT_KEYS_TABLE_NAME, value)
|
return database.DeleteRecord(database.ENROLLMENT_KEYS_TABLE_NAME, value)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// DecrementEnrollmentKey - decrements the uses on a key if above 0 remaining
|
||||||
|
func DecrementEnrollmentKey(value string) (*models.EnrollmentKey, error) {
|
||||||
|
k, err := GetEnrollmentKey(value)
|
||||||
|
if err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
if k.UsesRemaining == 0 {
|
||||||
|
return nil, fmt.Errorf(EnrollmentKeyErrors.NoUsesRemaining)
|
||||||
|
}
|
||||||
|
k.UsesRemaining = k.UsesRemaining - 1
|
||||||
|
if err = upsertEnrollmentKey(k); err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
|
||||||
|
return k, nil
|
||||||
|
}
|
||||||
|
|
||||||
// == private ==
|
// == private ==
|
||||||
|
|
||||||
func upsertEnrollmentKey(k *models.EnrollmentKey) error {
|
func upsertEnrollmentKey(k *models.EnrollmentKey) error {
|
||||||
@@ -106,7 +129,7 @@ func getUniqueEnrollmentID() (string, error) {
|
|||||||
return "", err
|
return "", err
|
||||||
}
|
}
|
||||||
newID := ncutils.MakeRandomString(32)
|
newID := ncutils.MakeRandomString(32)
|
||||||
for _, ok := currentKeys[newID]; !ok; {
|
for _, ok := currentKeys[newID]; ok; {
|
||||||
newID = ncutils.MakeRandomString(32)
|
newID = ncutils.MakeRandomString(32)
|
||||||
}
|
}
|
||||||
return newID, nil
|
return newID, nil
|
||||||
@@ -119,6 +142,9 @@ func getEnrollmentKeysMap() (map[string]*models.EnrollmentKey, error) {
|
|||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
if records == nil {
|
||||||
|
records = make(map[string]string)
|
||||||
|
}
|
||||||
currentKeys := make(map[string]*models.EnrollmentKey)
|
currentKeys := make(map[string]*models.EnrollmentKey)
|
||||||
if len(records) > 0 {
|
if len(records) > 0 {
|
||||||
for k := range records {
|
for k := range records {
|
@@ -8,12 +8,13 @@ import (
|
|||||||
"github.com/stretchr/testify/assert"
|
"github.com/stretchr/testify/assert"
|
||||||
)
|
)
|
||||||
|
|
||||||
func TestCreate_EnrollmentKey(t *testing.T) {
|
func TestCreateEnrollmentKey(t *testing.T) {
|
||||||
database.InitializeDatabase()
|
database.InitializeDatabase()
|
||||||
defer database.CloseDB()
|
defer database.CloseDB()
|
||||||
t.Run("Can_Not_Create_Key", func(t *testing.T) {
|
t.Run("Can_Not_Create_Key", func(t *testing.T) {
|
||||||
newKey, err := CreateEnrollmentKey(0, time.Time{}, nil, nil, false)
|
newKey, err := CreateEnrollmentKey(0, time.Time{}, nil, nil, false)
|
||||||
assert.Nil(t, newKey)
|
assert.Nil(t, newKey)
|
||||||
|
assert.NotNil(t, err)
|
||||||
assert.Equal(t, err.Error(), EnrollmentKeyErrors.InvalidCreate)
|
assert.Equal(t, err.Error(), EnrollmentKeyErrors.InvalidCreate)
|
||||||
})
|
})
|
||||||
t.Run("Can_Create_Key_Uses", func(t *testing.T) {
|
t.Run("Can_Create_Key_Uses", func(t *testing.T) {
|
||||||
@@ -50,20 +51,53 @@ func TestCreate_EnrollmentKey(t *testing.T) {
|
|||||||
func TestDelete_EnrollmentKey(t *testing.T) {
|
func TestDelete_EnrollmentKey(t *testing.T) {
|
||||||
database.InitializeDatabase()
|
database.InitializeDatabase()
|
||||||
defer database.CloseDB()
|
defer database.CloseDB()
|
||||||
|
newKey, _ := CreateEnrollmentKey(0, time.Time{}, []string{"mynet", "skynet"}, nil, true)
|
||||||
|
t.Run("Can_Delete_Key", func(t *testing.T) {
|
||||||
|
assert.True(t, newKey.IsValid())
|
||||||
|
err := DeleteEnrollmentKey(newKey.Value)
|
||||||
|
assert.Nil(t, err)
|
||||||
|
oldKey, err := GetEnrollmentKey(newKey.Value)
|
||||||
|
assert.Nil(t, oldKey)
|
||||||
|
assert.NotNil(t, err)
|
||||||
|
assert.Equal(t, err.Error(), EnrollmentKeyErrors.NoKeyFound)
|
||||||
|
})
|
||||||
|
t.Run("Can_Not_Delete_Invalid_Key", func(t *testing.T) {
|
||||||
|
err := DeleteEnrollmentKey("notakey")
|
||||||
|
assert.NotNil(t, err)
|
||||||
|
assert.Equal(t, err.Error(), EnrollmentKeyErrors.NoKeyFound)
|
||||||
|
})
|
||||||
|
removeAllEnrollments()
|
||||||
}
|
}
|
||||||
|
|
||||||
func TestDecrement_EnrollmentKey(t *testing.T) {
|
func TestDecrement_EnrollmentKey(t *testing.T) {
|
||||||
database.InitializeDatabase()
|
database.InitializeDatabase()
|
||||||
defer database.CloseDB()
|
defer database.CloseDB()
|
||||||
|
newKey, _ := CreateEnrollmentKey(1, time.Time{}, nil, nil, true)
|
||||||
|
t.Run("Check_initial_uses", func(t *testing.T) {
|
||||||
|
assert.True(t, newKey.IsValid())
|
||||||
|
assert.Equal(t, newKey.UsesRemaining, 1)
|
||||||
|
})
|
||||||
|
t.Run("Check can decrement", func(t *testing.T) {
|
||||||
|
assert.Equal(t, newKey.UsesRemaining, 1)
|
||||||
|
k, err := DecrementEnrollmentKey(newKey.Value)
|
||||||
|
assert.Nil(t, err)
|
||||||
|
newKey = k
|
||||||
|
})
|
||||||
|
t.Run("Check can not decrement", func(t *testing.T) {
|
||||||
|
assert.Equal(t, newKey.UsesRemaining, 0)
|
||||||
|
_, err := DecrementEnrollmentKey(newKey.Value)
|
||||||
|
assert.NotNil(t, err)
|
||||||
|
assert.Equal(t, err.Error(), EnrollmentKeyErrors.NoUsesRemaining)
|
||||||
|
})
|
||||||
|
|
||||||
|
removeAllEnrollments()
|
||||||
}
|
}
|
||||||
|
|
||||||
func TestValidity_EnrollmentKey(t *testing.T) {
|
// func TestValidity_EnrollmentKey(t *testing.T) {
|
||||||
database.InitializeDatabase()
|
// database.InitializeDatabase()
|
||||||
defer database.CloseDB()
|
// defer database.CloseDB()
|
||||||
|
|
||||||
}
|
// }
|
||||||
|
|
||||||
func removeAllEnrollments() {
|
func removeAllEnrollments() {
|
||||||
database.DeleteAllRecords(database.ENROLLMENT_KEYS_TABLE_NAME)
|
database.DeleteAllRecords(database.ENROLLMENT_KEYS_TABLE_NAME)
|
@@ -1,38 +1,19 @@
|
|||||||
package logic
|
package logic
|
||||||
|
|
||||||
import (
|
import (
|
||||||
"context"
|
|
||||||
"net"
|
"net"
|
||||||
"testing"
|
"testing"
|
||||||
|
|
||||||
"github.com/google/uuid"
|
"github.com/google/uuid"
|
||||||
"github.com/gravitl/netmaker/database"
|
"github.com/gravitl/netmaker/database"
|
||||||
"github.com/gravitl/netmaker/logger"
|
|
||||||
"github.com/gravitl/netmaker/models"
|
"github.com/gravitl/netmaker/models"
|
||||||
"github.com/matryer/is"
|
"github.com/matryer/is"
|
||||||
)
|
)
|
||||||
|
|
||||||
func TestMain(m *testing.M) {
|
func TestCheckPorts(t *testing.T) {
|
||||||
database.InitializeDatabase()
|
database.InitializeDatabase()
|
||||||
defer database.CloseDB()
|
defer database.CloseDB()
|
||||||
CreateAdmin(&models.User{
|
|
||||||
UserName: "admin",
|
|
||||||
Password: "password",
|
|
||||||
IsAdmin: true,
|
|
||||||
Networks: []string{},
|
|
||||||
Groups: []string{},
|
|
||||||
})
|
|
||||||
peerUpdate := make(chan *models.Node)
|
|
||||||
go ManageZombies(context.Background(), peerUpdate)
|
|
||||||
go func() {
|
|
||||||
for update := range peerUpdate {
|
|
||||||
//do nothing
|
|
||||||
logger.Log(3, "received node update", update.Action)
|
|
||||||
}
|
|
||||||
}()
|
|
||||||
}
|
|
||||||
|
|
||||||
func TestCheckPorts(t *testing.T) {
|
|
||||||
h := models.Host{
|
h := models.Host{
|
||||||
ID: uuid.New(),
|
ID: uuid.New(),
|
||||||
EndpointIP: net.ParseIP("192.168.1.1"),
|
EndpointIP: net.ParseIP("192.168.1.1"),
|
||||||
|
@@ -1,6 +1,8 @@
|
|||||||
package models
|
package models
|
||||||
|
|
||||||
import "time"
|
import (
|
||||||
|
"time"
|
||||||
|
)
|
||||||
|
|
||||||
// EnrollmentKeyLength - the length of an enrollment key
|
// EnrollmentKeyLength - the length of an enrollment key
|
||||||
const EnrollmentKeyLength = 32
|
const EnrollmentKeyLength = 32
|
||||||
@@ -23,7 +25,7 @@ func (k *EnrollmentKey) IsValid() bool {
|
|||||||
if k.UsesRemaining > 0 {
|
if k.UsesRemaining > 0 {
|
||||||
return true
|
return true
|
||||||
}
|
}
|
||||||
if !k.Expiration.IsZero() && time.Now().After(k.Expiration) {
|
if !k.Expiration.IsZero() && time.Now().Before(k.Expiration) {
|
||||||
return true
|
return true
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user