mirror of
https://github.com/gravitl/netmaker.git
synced 2025-11-10 00:30:37 +08:00
Wrote test to test Enrolment Keys
This commit is contained in:
parent
5434e9b299
commit
442b32e0d9
3 changed files with 75 additions and 3 deletions
|
|
@ -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
|
||||||
|
|
|
||||||
|
|
@ -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()
|
||||||
|
}
|
||||||
|
|
|
||||||
|
|
@ -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"`
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Add table
Reference in a new issue