Browse Source

Wrote test to test Enrolment Keys

walkerwmanuel 2 years ago
parent
commit
442b32e0d9
3 changed files with 75 additions and 3 deletions
  1. 3 2
      logic/enrollmentkey.go
  2. 71 0
      logic/enrollmentkey_test.go
  3. 1 1
      models/enrollment_key.go

+ 3 - 2
logic/enrollmentkey.go

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

+ 71 - 0
logic/enrollmentkey_test.go

@@ -1,6 +1,7 @@
 package logic
 
 import (
+	"fmt"
 	"testing"
 	"time"
 
@@ -127,3 +128,73 @@ func TestUsability_EnrollmentKey(t *testing.T) {
 func removeAllEnrollments() {
 	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()
+}

+ 1 - 1
models/enrollment_key.go

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