mirror of
https://git.rwth-aachen.de/acs/public/villas/web-backend-go/
synced 2025-03-30 00:00:12 +01:00
WIP: config test independent of test data
This commit is contained in:
parent
d1cb79ffba
commit
6e68940e0e
2 changed files with 45 additions and 88 deletions
|
@ -88,7 +88,6 @@ type UserRequest struct {
|
||||||
// Infrastructure components
|
// Infrastructure components
|
||||||
|
|
||||||
var propertiesA = json.RawMessage(`{"prop1" : "a nice prop"}`)
|
var propertiesA = json.RawMessage(`{"prop1" : "a nice prop"}`)
|
||||||
var propertiesB = json.RawMessage(`{"prop1" : "not so nice"}`)
|
|
||||||
|
|
||||||
var ICA = database.InfrastructureComponent{
|
var ICA = database.InfrastructureComponent{
|
||||||
UUID: "7be0322d-354e-431e-84bd-ae4c9633138b",
|
UUID: "7be0322d-354e-431e-84bd-ae4c9633138b",
|
||||||
|
@ -105,24 +104,9 @@ var ICA = database.InfrastructureComponent{
|
||||||
ManagedExternally: false,
|
ManagedExternally: false,
|
||||||
}
|
}
|
||||||
|
|
||||||
var ICB = database.InfrastructureComponent{
|
|
||||||
UUID: "4854af30-325f-44a5-ad59-b67b2597de68",
|
|
||||||
WebsocketURL: "xxx.yyy.zzz.aaa",
|
|
||||||
Type: "dpsim",
|
|
||||||
Category: "simulator",
|
|
||||||
Name: "Test DPsim Simulator",
|
|
||||||
Uptime: -1.0,
|
|
||||||
State: "running",
|
|
||||||
Location: "ACS Laboratory",
|
|
||||||
Description: "This is a test description",
|
|
||||||
StartParameterScheme: postgres.Jsonb{propertiesB},
|
|
||||||
ManagedExternally: true,
|
|
||||||
}
|
|
||||||
|
|
||||||
// Scenarios
|
// Scenarios
|
||||||
|
|
||||||
var startParametersA = json.RawMessage(`{"parameter1" : "testValue1A", "parameter2" : "testValue2A", "parameter3" : 42}`)
|
var startParametersA = json.RawMessage(`{"parameter1" : "testValue1A", "parameter2" : "testValue2A", "parameter3" : 42}`)
|
||||||
var startParametersB = json.RawMessage(`{"parameter1" : "testValue1B", "parameter2" : "testValue2B", "parameter3" : 43}`)
|
|
||||||
|
|
||||||
var ScenarioA = database.Scenario{
|
var ScenarioA = database.Scenario{
|
||||||
Name: "Scenario_A",
|
Name: "Scenario_A",
|
||||||
|
@ -138,12 +122,6 @@ var ConfigA = database.ComponentConfiguration{
|
||||||
FileIDs: []int64{},
|
FileIDs: []int64{},
|
||||||
}
|
}
|
||||||
|
|
||||||
var ConfigB = database.ComponentConfiguration{
|
|
||||||
Name: "VILLASnode gateway X",
|
|
||||||
StartParameters: postgres.Jsonb{startParametersB},
|
|
||||||
FileIDs: []int64{},
|
|
||||||
}
|
|
||||||
|
|
||||||
// Signals
|
// Signals
|
||||||
|
|
||||||
var OutSignalA = database.Signal{
|
var OutSignalA = database.Signal{
|
||||||
|
|
|
@ -22,6 +22,7 @@
|
||||||
package component_configuration
|
package component_configuration
|
||||||
|
|
||||||
import (
|
import (
|
||||||
|
"encoding/json"
|
||||||
"fmt"
|
"fmt"
|
||||||
"os"
|
"os"
|
||||||
"testing"
|
"testing"
|
||||||
|
@ -68,6 +69,17 @@ type ScenarioRequest struct {
|
||||||
StartParameters postgres.Jsonb `json:"startParameters,omitempty"`
|
StartParameters postgres.Jsonb `json:"startParameters,omitempty"`
|
||||||
}
|
}
|
||||||
|
|
||||||
|
var newConfig1 = ConfigRequest{
|
||||||
|
Name: "Example for Signal generator",
|
||||||
|
StartParameters: postgres.Jsonb{RawMessage: json.RawMessage(`{"parameter1" : "testValue1A", "parameter2" : "testValue2A", "parameter3" : 42}`)},
|
||||||
|
FileIDs: []int64{},
|
||||||
|
}
|
||||||
|
|
||||||
|
func newFalse() *bool {
|
||||||
|
b := false
|
||||||
|
return &b
|
||||||
|
}
|
||||||
|
|
||||||
func addScenarioAndIC() (scenarioID uint, ICID uint) {
|
func addScenarioAndIC() (scenarioID uint, ICID uint) {
|
||||||
|
|
||||||
// authenticate as admin
|
// authenticate as admin
|
||||||
|
@ -76,17 +88,18 @@ func addScenarioAndIC() (scenarioID uint, ICID uint) {
|
||||||
|
|
||||||
// POST $newICA
|
// POST $newICA
|
||||||
newICA := ICRequest{
|
newICA := ICRequest{
|
||||||
UUID: helper.ICA.UUID,
|
UUID: "7be0322d-354e-431e-84bd-ae4c9633138b",
|
||||||
WebsocketURL: helper.ICA.WebsocketURL,
|
WebsocketURL: "https://villas.k8s.eonerc.rwth-aachen.de/ws/ws_sig",
|
||||||
Type: helper.ICA.Type,
|
Type: "villas-node",
|
||||||
Name: helper.ICA.Name,
|
Name: "ACS Demo Signals",
|
||||||
Category: helper.ICA.Category,
|
Category: "gateway",
|
||||||
State: helper.ICA.State,
|
State: "idle",
|
||||||
Location: helper.ICA.Location,
|
Location: "k8s",
|
||||||
Description: helper.ICA.Description,
|
Description: "A signal generator for testing purposes",
|
||||||
StartParameterScheme: helper.ICA.StartParameterScheme,
|
StartParameterScheme: postgres.Jsonb{json.RawMessage(`{"prop1" : "a nice prop"}`)},
|
||||||
ManagedExternally: &helper.ICA.ManagedExternally,
|
ManagedExternally: newFalse(),
|
||||||
}
|
}
|
||||||
|
|
||||||
code, resp, err := helper.TestEndpoint(router, token,
|
code, resp, err := helper.TestEndpoint(router, token,
|
||||||
"/api/ic", "POST", helper.KeyModels{"ic": newICA})
|
"/api/ic", "POST", helper.KeyModels{"ic": newICA})
|
||||||
if code != 200 || err != nil {
|
if code != 200 || err != nil {
|
||||||
|
@ -97,20 +110,8 @@ func addScenarioAndIC() (scenarioID uint, ICID uint) {
|
||||||
newICID, _ := helper.GetResponseID(resp)
|
newICID, _ := helper.GetResponseID(resp)
|
||||||
|
|
||||||
// POST a second IC to change to that IC during testing
|
// POST a second IC to change to that IC during testing
|
||||||
newICB := ICRequest{
|
|
||||||
UUID: helper.ICB.UUID,
|
|
||||||
WebsocketURL: helper.ICB.WebsocketURL,
|
|
||||||
Type: helper.ICB.Type,
|
|
||||||
Name: helper.ICB.Name,
|
|
||||||
Category: helper.ICB.Category,
|
|
||||||
State: helper.ICB.State,
|
|
||||||
Location: helper.ICB.Location,
|
|
||||||
Description: helper.ICB.Description,
|
|
||||||
StartParameterScheme: helper.ICB.StartParameterScheme,
|
|
||||||
ManagedExternally: &helper.ICA.ManagedExternally,
|
|
||||||
}
|
|
||||||
code, resp, err = helper.TestEndpoint(router, token,
|
code, resp, err = helper.TestEndpoint(router, token,
|
||||||
"/api/ic", "POST", helper.KeyModels{"ic": newICB})
|
"/api/ic", "POST", helper.KeyModels{"ic": newICA})
|
||||||
if code != 200 || err != nil {
|
if code != 200 || err != nil {
|
||||||
fmt.Println("Adding IC returned code", code, err, resp)
|
fmt.Println("Adding IC returned code", code, err, resp)
|
||||||
}
|
}
|
||||||
|
@ -121,9 +122,9 @@ func addScenarioAndIC() (scenarioID uint, ICID uint) {
|
||||||
|
|
||||||
// POST $newScenario
|
// POST $newScenario
|
||||||
newScenario := ScenarioRequest{
|
newScenario := ScenarioRequest{
|
||||||
Name: helper.ScenarioA.Name,
|
Name: "Scenario1",
|
||||||
Running: helper.ScenarioA.Running,
|
Running: true,
|
||||||
StartParameters: helper.ScenarioA.StartParameters,
|
StartParameters: postgres.Jsonb{json.RawMessage(`{"parameter1" : "testValue1A", "parameter2" : "testValue2A", "parameter3" : 42}`)},
|
||||||
}
|
}
|
||||||
code, resp, err = helper.TestEndpoint(router, token,
|
code, resp, err = helper.TestEndpoint(router, token,
|
||||||
"/api/scenarios", "POST", helper.KeyModels{"scenario": newScenario})
|
"/api/scenarios", "POST", helper.KeyModels{"scenario": newScenario})
|
||||||
|
@ -179,14 +180,8 @@ func TestAddConfig(t *testing.T) {
|
||||||
// using the respective endpoints of the API
|
// using the respective endpoints of the API
|
||||||
scenarioID, ICID := addScenarioAndIC()
|
scenarioID, ICID := addScenarioAndIC()
|
||||||
|
|
||||||
newConfig := ConfigRequest{
|
newConfig1.ScenarioID = scenarioID
|
||||||
Name: helper.ConfigA.Name,
|
newConfig1.ICID = ICID
|
||||||
ScenarioID: scenarioID,
|
|
||||||
ICID: ICID,
|
|
||||||
StartParameters: helper.ConfigA.StartParameters,
|
|
||||||
FileIDs: helper.ConfigA.FileIDs,
|
|
||||||
}
|
|
||||||
|
|
||||||
// authenticate as normal userB who has no access to new scenario
|
// authenticate as normal userB who has no access to new scenario
|
||||||
token, err := helper.AuthenticateForTest(router,
|
token, err := helper.AuthenticateForTest(router,
|
||||||
base_api_auth, "POST", helper.UserBCredentials)
|
base_api_auth, "POST", helper.UserBCredentials)
|
||||||
|
@ -195,7 +190,7 @@ func TestAddConfig(t *testing.T) {
|
||||||
// try to POST with no access
|
// try to POST with no access
|
||||||
// should result in unprocessable entity
|
// should result in unprocessable entity
|
||||||
code, resp, err := helper.TestEndpoint(router, token,
|
code, resp, err := helper.TestEndpoint(router, token,
|
||||||
base_api_configs, "POST", helper.KeyModels{"config": newConfig})
|
base_api_configs, "POST", helper.KeyModels{"config": newConfig1})
|
||||||
assert.NoError(t, err)
|
assert.NoError(t, err)
|
||||||
assert.Equalf(t, 422, code, "Response body: \n%v\n", resp)
|
assert.Equalf(t, 422, code, "Response body: \n%v\n", resp)
|
||||||
|
|
||||||
|
@ -217,12 +212,12 @@ func TestAddConfig(t *testing.T) {
|
||||||
|
|
||||||
// test POST newConfig
|
// test POST newConfig
|
||||||
code, resp, err = helper.TestEndpoint(router, token,
|
code, resp, err = helper.TestEndpoint(router, token,
|
||||||
base_api_configs, "POST", helper.KeyModels{"config": newConfig})
|
base_api_configs, "POST", helper.KeyModels{"config": newConfig1})
|
||||||
assert.NoError(t, err)
|
assert.NoError(t, err)
|
||||||
assert.Equalf(t, 200, code, "Response body: \n%v\n", resp)
|
assert.Equalf(t, 200, code, "Response body: \n%v\n", resp)
|
||||||
|
|
||||||
// Compare POST's response with the newConfig
|
// Compare POST's response with the newConfig
|
||||||
err = helper.CompareResponse(resp, helper.KeyModels{"config": newConfig})
|
err = helper.CompareResponse(resp, helper.KeyModels{"config": newConfig1})
|
||||||
assert.NoError(t, err)
|
assert.NoError(t, err)
|
||||||
|
|
||||||
// Read newConfig's ID from the response
|
// Read newConfig's ID from the response
|
||||||
|
@ -236,7 +231,7 @@ func TestAddConfig(t *testing.T) {
|
||||||
assert.Equalf(t, 200, code, "Response body: \n%v\n", resp)
|
assert.Equalf(t, 200, code, "Response body: \n%v\n", resp)
|
||||||
|
|
||||||
// Compare GET's response with the newConfig
|
// Compare GET's response with the newConfig
|
||||||
err = helper.CompareResponse(resp, helper.KeyModels{"config": newConfig})
|
err = helper.CompareResponse(resp, helper.KeyModels{"config": newConfig1})
|
||||||
assert.NoError(t, err)
|
assert.NoError(t, err)
|
||||||
|
|
||||||
// try to POST a malformed component config
|
// try to POST a malformed component config
|
||||||
|
@ -281,15 +276,10 @@ func TestUpdateConfig(t *testing.T) {
|
||||||
assert.NoError(t, err)
|
assert.NoError(t, err)
|
||||||
|
|
||||||
// test POST newConfig
|
// test POST newConfig
|
||||||
newConfig := ConfigRequest{
|
newConfig1.ScenarioID = scenarioID
|
||||||
Name: helper.ConfigA.Name,
|
newConfig1.ICID = ICID
|
||||||
ScenarioID: scenarioID,
|
|
||||||
ICID: ICID,
|
|
||||||
StartParameters: helper.ConfigA.StartParameters,
|
|
||||||
FileIDs: helper.ConfigA.FileIDs,
|
|
||||||
}
|
|
||||||
code, resp, err := helper.TestEndpoint(router, token,
|
code, resp, err := helper.TestEndpoint(router, token,
|
||||||
base_api_configs, "POST", helper.KeyModels{"config": newConfig})
|
base_api_configs, "POST", helper.KeyModels{"config": newConfig1})
|
||||||
assert.NoError(t, err)
|
assert.NoError(t, err)
|
||||||
assert.Equalf(t, 200, code, "Response body: \n%v\n", resp)
|
assert.Equalf(t, 200, code, "Response body: \n%v\n", resp)
|
||||||
|
|
||||||
|
@ -298,8 +288,8 @@ func TestUpdateConfig(t *testing.T) {
|
||||||
assert.NoError(t, err)
|
assert.NoError(t, err)
|
||||||
|
|
||||||
updatedConfig := ConfigRequest{
|
updatedConfig := ConfigRequest{
|
||||||
Name: helper.ConfigB.Name,
|
Name: "VILLASnode gateway X",
|
||||||
StartParameters: helper.ConfigB.StartParameters,
|
StartParameters: postgres.Jsonb{RawMessage: json.RawMessage(`{"parameter1" : "testValue1B", "parameter2" : "testValue2B", "parameter3" : 43}`)},
|
||||||
}
|
}
|
||||||
|
|
||||||
// authenticate as normal userB who has no access to new scenario
|
// authenticate as normal userB who has no access to new scenario
|
||||||
|
@ -386,14 +376,8 @@ func TestDeleteConfig(t *testing.T) {
|
||||||
// by adding a scenario and a IC to the DB
|
// by adding a scenario and a IC to the DB
|
||||||
// using the respective endpoints of the API
|
// using the respective endpoints of the API
|
||||||
scenarioID, ICID := addScenarioAndIC()
|
scenarioID, ICID := addScenarioAndIC()
|
||||||
|
newConfig1.ScenarioID = scenarioID
|
||||||
newConfig := ConfigRequest{
|
newConfig1.ICID = ICID
|
||||||
Name: helper.ConfigA.Name,
|
|
||||||
ScenarioID: scenarioID,
|
|
||||||
ICID: ICID,
|
|
||||||
StartParameters: helper.ConfigA.StartParameters,
|
|
||||||
FileIDs: helper.ConfigA.FileIDs,
|
|
||||||
}
|
|
||||||
|
|
||||||
// authenticate as normal user
|
// authenticate as normal user
|
||||||
token, err := helper.AuthenticateForTest(router,
|
token, err := helper.AuthenticateForTest(router,
|
||||||
|
@ -402,7 +386,7 @@ func TestDeleteConfig(t *testing.T) {
|
||||||
|
|
||||||
// test POST newConfig
|
// test POST newConfig
|
||||||
code, resp, err := helper.TestEndpoint(router, token,
|
code, resp, err := helper.TestEndpoint(router, token,
|
||||||
base_api_configs, "POST", helper.KeyModels{"config": newConfig})
|
base_api_configs, "POST", helper.KeyModels{"config": newConfig1})
|
||||||
assert.NoError(t, err)
|
assert.NoError(t, err)
|
||||||
assert.Equalf(t, 200, code, "Response body: \n%v\n", resp)
|
assert.Equalf(t, 200, code, "Response body: \n%v\n", resp)
|
||||||
|
|
||||||
|
@ -439,7 +423,7 @@ func TestDeleteConfig(t *testing.T) {
|
||||||
assert.Equalf(t, 200, code, "Response body: \n%v\n", resp)
|
assert.Equalf(t, 200, code, "Response body: \n%v\n", resp)
|
||||||
|
|
||||||
// Compare DELETE's response with the newConfig
|
// Compare DELETE's response with the newConfig
|
||||||
err = helper.CompareResponse(resp, helper.KeyModels{"config": newConfig})
|
err = helper.CompareResponse(resp, helper.KeyModels{"config": newConfig1})
|
||||||
assert.NoError(t, err)
|
assert.NoError(t, err)
|
||||||
|
|
||||||
// Again count the number of all the component configs returned
|
// Again count the number of all the component configs returned
|
||||||
|
@ -459,6 +443,8 @@ func TestGetAllConfigsOfScenario(t *testing.T) {
|
||||||
// by adding a scenario and a IC to the DB
|
// by adding a scenario and a IC to the DB
|
||||||
// using the respective endpoints of the API
|
// using the respective endpoints of the API
|
||||||
scenarioID, ICID := addScenarioAndIC()
|
scenarioID, ICID := addScenarioAndIC()
|
||||||
|
newConfig1.ScenarioID = scenarioID
|
||||||
|
newConfig1.ICID = ICID
|
||||||
|
|
||||||
// authenticate as normal user
|
// authenticate as normal user
|
||||||
token, err := helper.AuthenticateForTest(router,
|
token, err := helper.AuthenticateForTest(router,
|
||||||
|
@ -466,15 +452,8 @@ func TestGetAllConfigsOfScenario(t *testing.T) {
|
||||||
assert.NoError(t, err)
|
assert.NoError(t, err)
|
||||||
|
|
||||||
// test POST newConfig
|
// test POST newConfig
|
||||||
newConfig := ConfigRequest{
|
|
||||||
Name: helper.ConfigA.Name,
|
|
||||||
ScenarioID: scenarioID,
|
|
||||||
ICID: ICID,
|
|
||||||
StartParameters: helper.ConfigA.StartParameters,
|
|
||||||
FileIDs: helper.ConfigA.FileIDs,
|
|
||||||
}
|
|
||||||
code, resp, err := helper.TestEndpoint(router, token,
|
code, resp, err := helper.TestEndpoint(router, token,
|
||||||
base_api_configs, "POST", helper.KeyModels{"config": newConfig})
|
base_api_configs, "POST", helper.KeyModels{"config": newConfig1})
|
||||||
assert.NoError(t, err)
|
assert.NoError(t, err)
|
||||||
assert.Equalf(t, 200, code, "Response body: \n%v\n", resp)
|
assert.Equalf(t, 200, code, "Response body: \n%v\n", resp)
|
||||||
|
|
||||||
|
|
Loading…
Add table
Reference in a new issue