Wrote test to test Enrolment Keys

This commit is contained in:
walkerwmanuel 2023-02-16 10:56:13 -05:00
parent 5434e9b299
commit 442b32e0d9
3 changed files with 75 additions and 3 deletions

View file

@ -117,7 +117,7 @@ func TryToUseEnrollmentKey(k *models.EnrollmentKey) bool {
// Tokenize - tokenizes an enrollment key to be used via registration // Tokenize - tokenizes an enrollment key to be used via registration
// and attaches it to the Token field on the struct // and attaches it to the Token field on the struct
func Tokenize(k *models.EnrollmentKey, serverAddr string) error { func Tokenize(k *models.EnrollmentKey, serverAddr string) error {
if len(serverAddr) == 0 { if len(serverAddr) == 0 || k == nil {
return EnrollmentKeyErrors.FailedToTokenize return EnrollmentKeyErrors.FailedToTokenize
} }
newToken := models.EnrollmentToken{ newToken := models.EnrollmentToken{
@ -128,8 +128,9 @@ func Tokenize(k *models.EnrollmentKey, serverAddr string) error {
if err != nil { if err != nil {
return err return err
} }
k.Token = b64.StdEncoding.EncodeToString([]byte(data)) k.Token = b64.StdEncoding.EncodeToString(data)
return nil return nil
} }
// DeTokenize - detokenizes a base64 encoded string // DeTokenize - detokenizes a base64 encoded string

View file

@ -1,6 +1,7 @@
package logic package logic
import ( import (
"fmt"
"testing" "testing"
"time" "time"
@ -127,3 +128,73 @@ func TestUsability_EnrollmentKey(t *testing.T) {
func removeAllEnrollments() { func removeAllEnrollments() {
database.DeleteAllRecords(database.ENROLLMENT_KEYS_TABLE_NAME) database.DeleteAllRecords(database.ENROLLMENT_KEYS_TABLE_NAME)
} }
//Test that cheks if it can tokenize
//Test that cheks if it can't tokenize
func TestTokenize_EnrollmentKeys(t *testing.T) {
database.InitializeDatabase()
defer database.CloseDB()
newKey, _ := CreateEnrollmentKey(0, time.Time{}, []string{"mynet", "skynet"}, nil, true)
fmt.Println(newKey.Value)
const defaultValue = "MwEtpqTSrGd4HTO3ahYDTExKAehh6udJ"
const b64value = "eyJzZXJ2ZXIiOiJhcGkubXlzZXJ2ZXIuY29tIiwidmFsdWUiOiJNd0V0cHFUU3JHZDRIVE8zYWhZRFRFeEtBZWhoNnVkSiJ9"
const serverAddr = "api.myserver.com"
t.Run("Can_Not_Tokenize_Nil_Key", func(t *testing.T) {
err := Tokenize(nil, "ServerAddress")
assert.NotNil(t, err)
assert.Equal(t, err, EnrollmentKeyErrors.FailedToTokenize)
})
t.Run("Can_Not_Tokenize_Empty_Server_Address", func(t *testing.T) {
err := Tokenize(newKey, "")
assert.NotNil(t, err)
assert.Equal(t, err, EnrollmentKeyErrors.FailedToTokenize)
})
t.Run("Can_Tokenize", func(t *testing.T) {
err := Tokenize(newKey, serverAddr)
assert.Nil(t, err)
assert.True(t, len(newKey.Token) > 0)
})
t.Run("Is_Correct_B64_Token", func(t *testing.T) {
newKey.Value = defaultValue
err := Tokenize(newKey, serverAddr)
assert.Nil(t, err)
assert.Equal(t, newKey.Token, b64value)
})
removeAllEnrollments()
}
func TestDeTokenize_EnrollmentKeys(t *testing.T) {
database.InitializeDatabase()
defer database.CloseDB()
newKey, _ := CreateEnrollmentKey(0, time.Time{}, []string{"mynet", "skynet"}, nil, true)
fmt.Println(newKey.Value)
const defaultValue = "MwEtpqTSrGd4HTO3ahYDTExKAehh6udJ"
const b64Value = "eyJzZXJ2ZXIiOiJhcGkubXlzZXJ2ZXIuY29tIiwidmFsdWUiOiJNd0V0cHFUU3JHZDRIVE8zYWhZRFRFeEtBZWhoNnVkSiJ9"
const serverAddr = "api.myserver.com"
t.Run("Can_Not_DeTokenize", func(t *testing.T) {
value, err := DeTokenize("")
assert.Nil(t, value)
assert.NotNil(t, err)
assert.Equal(t, err, EnrollmentKeyErrors.FailedToDeTokenize)
})
t.Run("Can_Not_Find_Key", func(t *testing.T) {
value, err := DeTokenize(b64Value)
assert.Nil(t, value)
assert.NotNil(t, err)
assert.Equal(t, err, EnrollmentKeyErrors.NoKeyFound)
})
t.Run("Can_DeTokenize", func(t *testing.T) {
err := Tokenize(newKey, serverAddr)
assert.Nil(t, err)
output, err := DeTokenize(newKey.Token)
assert.Nil(t, err)
assert.NotNil(t, output)
assert.Equal(t, newKey.Value, output.Value)
})
removeAllEnrollments()
}

View file

@ -7,7 +7,7 @@ import (
// EnrollmentToken - the tokenized version of an enrollmentkey; // EnrollmentToken - the tokenized version of an enrollmentkey;
// to be used for host registration // to be used for host registration
type EnrollmentToken struct { type EnrollmentToken struct {
Server string `json:"value"` Server string `json:"server"`
Value string `json:"value"` Value string `json:"value"`
} }