-
Neil-Jocelyn Schark authoredNeil-Jocelyn Schark authored
Code owners
Assign users and groups as approvers for specific file changes. Learn more.
getKSA_key_test.go 4.28 KiB
package integration_tests
import (
"encoding/json"
"fmt"
"io/ioutil"
"net/http"
"os"
"testing"
"time"
integration_test_utils "code.fbi.h-da.de/danet/quant/integration-tests/code/integrationTestUtils"
"github.com/stretchr/testify/assert"
)
type LogFile struct {
Source string `json:"source"`
Body PushKSAKeyRequest `json:"body"`
}
type PushKSAKeyRequest struct {
RequestID string `json:"request_ID"`
ProcessID string `json:"process_ID"`
KSAKeys []KSAKey `json:"ksa_keys"`
}
type KSAKey struct {
KeyID string `json:"key_ID"`
Key string `json:"key"`
}
func TestGetKSAKey(t *testing.T) {
kms2URL := "127.0.0.1:7031"
kms2URL_ENV := os.Getenv("INTEGRATION_TEST_KMS2_URL")
if kms2URL_ENV != "" {
kms2URL = kms2URL_ENV
}
kms1URL := "127.0.0.1:7030"
kms1URL_ENV := os.Getenv("INTEGRATION_TEST_KMS1_URL")
if kms1URL_ENV != "" {
kms1URL = kms1URL_ENV
}
kms1AkmsURL := "127.0.0.1:9696"
kms1AkmsURL_ENV := os.Getenv("INTEGRATION_TEST_KMS1_AKMS_URL")
if kms1AkmsURL_ENV != "" {
kms1AkmsURL = kms1AkmsURL_ENV
}
logFileURL := "127.0.0.1:4444"
logFileURL_ENV := os.Getenv("INTEGRATION_TEST_LOG_FILE_URL")
if logFileURL_ENV != "" {
logFileURL = logFileURL_ENV
}
logFileURL2 := "127.0.0.1:4445"
logFileURL_ENV2 := os.Getenv("INTEGRATION_TEST_LOG_FILE_URL")
if logFileURL_ENV2 != "" {
logFileURL2 = logFileURL_ENV2
}
output, err := integration_test_utils.GnmicCommand(kms2URL, "set", "--update-path", "key-routing-sessions/routing-sessions[path-id=38e0588b-6a2d-42c9-85a0-887cc877c299]", "--update-file", "../../config/kms/kms_2.json")
if err != nil {
t.Errorf("Error setting routing-session: %s; %s", err, output)
}
output, err = integration_test_utils.GnmicCommand(kms1URL, "set", "--update-path", "key-routing-sessions/routing-sessions[path-id=38e0588b-6a2d-42c9-85a0-887cc877c299]", "--update-file", "../../config/kms/kms_1.json")
if err != nil {
t.Errorf("Error setting routing-session: %s; %s", err, output)
}
time.Sleep(time.Duration(2) * time.Second)
url := fmt.Sprintf("http://%s/api/v1/keys/ksa_key_req", kms1AkmsURL)
output, err = integration_test_utils.CurlCommand(url, `{
"receiving_CKMS_ID": "kms_2:50910",
"request_ID": "request_ID-1234",
"key_properties": {
"number": 1,
"key_length": 256,
"timeout": 20,
"TTL": 24
}
}`)
if err != nil {
t.Errorf("Error issuing curl command: %s; %s", err, output)
}
resp, err := http.Get("http://" + logFileURL + "/debug/get_log_file")
if err != nil {
t.Errorf("Error making HTTP request: %s", err)
return
}
defer resp.Body.Close()
body, err := ioutil.ReadAll(resp.Body)
if err != nil {
t.Errorf("Error reading response body: %s", err)
return
}
var logFile LogFile
err = json.Unmarshal(body, &logFile)
if err != nil {
t.Errorf("Error parsing body into PushKSAKeyRequest: %s", err)
return
}
assert.NotNil(t, logFile.Source)
assert.Equal(t, "request_ID-1234", logFile.Body.RequestID)
assert.Equal(t, "request_ID-1234", logFile.Body.ProcessID)
assert.Equal(t, 1, len(logFile.Body.KSAKeys))
assert.NotNil(t, logFile.Body.KSAKeys[0].KeyID)
assert.NotNil(t, logFile.Body.KSAKeys[0].Key)
resp, err = http.Get("http://" + logFileURL2 + "/debug/get_log_file")
if err != nil {
t.Errorf("Error making HTTP request: %s", err)
return
}
defer resp.Body.Close()
body, err = ioutil.ReadAll(resp.Body)
if err != nil {
t.Errorf("Error reading response body: %s", err)
return
}
var logFile2 LogFile
err = json.Unmarshal(body, &logFile2)
if err != nil {
t.Errorf("Error parsing body into PushKSAKeyRequest: %s", err)
return
}
assert.NotNil(t, logFile2.Source)
assert.Equal(t, "request_ID-1234", logFile2.Body.RequestID)
assert.Equal(t, "request_ID-1234", logFile2.Body.ProcessID)
assert.Equal(t, 1, len(logFile2.Body.KSAKeys))
assert.NotNil(t, logFile2.Body.KSAKeys[0].KeyID)
assert.NotNil(t, logFile2.Body.KSAKeys[0].Key)
// Check that both log files are identical except for the source
assert.NotEqual(t, logFile.Source, logFile2.Source)
assert.Equal(t, logFile.Body.RequestID, logFile2.Body.RequestID)
assert.Equal(t, logFile.Body.ProcessID, logFile2.Body.ProcessID)
assert.Equal(t, logFile.Body.KSAKeys[0].KeyID, logFile2.Body.KSAKeys[0].KeyID)
assert.Equal(t, logFile.Body.KSAKeys[0].Key, logFile2.Body.KSAKeys[0].Key)
}