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
|
||||
|
||||
var propertiesA = json.RawMessage(`{"prop1" : "a nice prop"}`)
|
||||
var propertiesB = json.RawMessage(`{"prop1" : "not so nice"}`)
|
||||
|
||||
var ICA = database.InfrastructureComponent{
|
||||
UUID: "7be0322d-354e-431e-84bd-ae4c9633138b",
|
||||
|
@ -105,24 +104,9 @@ var ICA = database.InfrastructureComponent{
|
|||
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
|
||||
|
||||
var startParametersA = json.RawMessage(`{"parameter1" : "testValue1A", "parameter2" : "testValue2A", "parameter3" : 42}`)
|
||||
var startParametersB = json.RawMessage(`{"parameter1" : "testValue1B", "parameter2" : "testValue2B", "parameter3" : 43}`)
|
||||
|
||||
var ScenarioA = database.Scenario{
|
||||
Name: "Scenario_A",
|
||||
|
@ -138,12 +122,6 @@ var ConfigA = database.ComponentConfiguration{
|
|||
FileIDs: []int64{},
|
||||
}
|
||||
|
||||
var ConfigB = database.ComponentConfiguration{
|
||||
Name: "VILLASnode gateway X",
|
||||
StartParameters: postgres.Jsonb{startParametersB},
|
||||
FileIDs: []int64{},
|
||||
}
|
||||
|
||||
// Signals
|
||||
|
||||
var OutSignalA = database.Signal{
|
||||
|
|
|
@ -22,6 +22,7 @@
|
|||
package component_configuration
|
||||
|
||||
import (
|
||||
"encoding/json"
|
||||
"fmt"
|
||||
"os"
|
||||
"testing"
|
||||
|
@ -68,6 +69,17 @@ type ScenarioRequest struct {
|
|||
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) {
|
||||
|
||||
// authenticate as admin
|
||||
|
@ -76,17 +88,18 @@ func addScenarioAndIC() (scenarioID uint, ICID uint) {
|
|||
|
||||
// POST $newICA
|
||||
newICA := ICRequest{
|
||||
UUID: helper.ICA.UUID,
|
||||
WebsocketURL: helper.ICA.WebsocketURL,
|
||||
Type: helper.ICA.Type,
|
||||
Name: helper.ICA.Name,
|
||||
Category: helper.ICA.Category,
|
||||
State: helper.ICA.State,
|
||||
Location: helper.ICA.Location,
|
||||
Description: helper.ICA.Description,
|
||||
StartParameterScheme: helper.ICA.StartParameterScheme,
|
||||
ManagedExternally: &helper.ICA.ManagedExternally,
|
||||
UUID: "7be0322d-354e-431e-84bd-ae4c9633138b",
|
||||
WebsocketURL: "https://villas.k8s.eonerc.rwth-aachen.de/ws/ws_sig",
|
||||
Type: "villas-node",
|
||||
Name: "ACS Demo Signals",
|
||||
Category: "gateway",
|
||||
State: "idle",
|
||||
Location: "k8s",
|
||||
Description: "A signal generator for testing purposes",
|
||||
StartParameterScheme: postgres.Jsonb{json.RawMessage(`{"prop1" : "a nice prop"}`)},
|
||||
ManagedExternally: newFalse(),
|
||||
}
|
||||
|
||||
code, resp, err := helper.TestEndpoint(router, token,
|
||||
"/api/ic", "POST", helper.KeyModels{"ic": newICA})
|
||||
if code != 200 || err != nil {
|
||||
|
@ -97,20 +110,8 @@ func addScenarioAndIC() (scenarioID uint, ICID uint) {
|
|||
newICID, _ := helper.GetResponseID(resp)
|
||||
|
||||
// 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,
|
||||
"/api/ic", "POST", helper.KeyModels{"ic": newICB})
|
||||
"/api/ic", "POST", helper.KeyModels{"ic": newICA})
|
||||
if code != 200 || err != nil {
|
||||
fmt.Println("Adding IC returned code", code, err, resp)
|
||||
}
|
||||
|
@ -121,9 +122,9 @@ func addScenarioAndIC() (scenarioID uint, ICID uint) {
|
|||
|
||||
// POST $newScenario
|
||||
newScenario := ScenarioRequest{
|
||||
Name: helper.ScenarioA.Name,
|
||||
Running: helper.ScenarioA.Running,
|
||||
StartParameters: helper.ScenarioA.StartParameters,
|
||||
Name: "Scenario1",
|
||||
Running: true,
|
||||
StartParameters: postgres.Jsonb{json.RawMessage(`{"parameter1" : "testValue1A", "parameter2" : "testValue2A", "parameter3" : 42}`)},
|
||||
}
|
||||
code, resp, err = helper.TestEndpoint(router, token,
|
||||
"/api/scenarios", "POST", helper.KeyModels{"scenario": newScenario})
|
||||
|
@ -179,14 +180,8 @@ func TestAddConfig(t *testing.T) {
|
|||
// using the respective endpoints of the API
|
||||
scenarioID, ICID := addScenarioAndIC()
|
||||
|
||||
newConfig := ConfigRequest{
|
||||
Name: helper.ConfigA.Name,
|
||||
ScenarioID: scenarioID,
|
||||
ICID: ICID,
|
||||
StartParameters: helper.ConfigA.StartParameters,
|
||||
FileIDs: helper.ConfigA.FileIDs,
|
||||
}
|
||||
|
||||
newConfig1.ScenarioID = scenarioID
|
||||
newConfig1.ICID = ICID
|
||||
// authenticate as normal userB who has no access to new scenario
|
||||
token, err := helper.AuthenticateForTest(router,
|
||||
base_api_auth, "POST", helper.UserBCredentials)
|
||||
|
@ -195,7 +190,7 @@ func TestAddConfig(t *testing.T) {
|
|||
// try to POST with no access
|
||||
// should result in unprocessable entity
|
||||
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.Equalf(t, 422, code, "Response body: \n%v\n", resp)
|
||||
|
||||
|
@ -217,12 +212,12 @@ func TestAddConfig(t *testing.T) {
|
|||
|
||||
// test POST newConfig
|
||||
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.Equalf(t, 200, code, "Response body: \n%v\n", resp)
|
||||
|
||||
// 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)
|
||||
|
||||
// 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)
|
||||
|
||||
// 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)
|
||||
|
||||
// try to POST a malformed component config
|
||||
|
@ -281,15 +276,10 @@ func TestUpdateConfig(t *testing.T) {
|
|||
assert.NoError(t, err)
|
||||
|
||||
// test POST newConfig
|
||||
newConfig := ConfigRequest{
|
||||
Name: helper.ConfigA.Name,
|
||||
ScenarioID: scenarioID,
|
||||
ICID: ICID,
|
||||
StartParameters: helper.ConfigA.StartParameters,
|
||||
FileIDs: helper.ConfigA.FileIDs,
|
||||
}
|
||||
newConfig1.ScenarioID = scenarioID
|
||||
newConfig1.ICID = ICID
|
||||
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.Equalf(t, 200, code, "Response body: \n%v\n", resp)
|
||||
|
||||
|
@ -298,8 +288,8 @@ func TestUpdateConfig(t *testing.T) {
|
|||
assert.NoError(t, err)
|
||||
|
||||
updatedConfig := ConfigRequest{
|
||||
Name: helper.ConfigB.Name,
|
||||
StartParameters: helper.ConfigB.StartParameters,
|
||||
Name: "VILLASnode gateway X",
|
||||
StartParameters: postgres.Jsonb{RawMessage: json.RawMessage(`{"parameter1" : "testValue1B", "parameter2" : "testValue2B", "parameter3" : 43}`)},
|
||||
}
|
||||
|
||||
// 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
|
||||
// using the respective endpoints of the API
|
||||
scenarioID, ICID := addScenarioAndIC()
|
||||
|
||||
newConfig := ConfigRequest{
|
||||
Name: helper.ConfigA.Name,
|
||||
ScenarioID: scenarioID,
|
||||
ICID: ICID,
|
||||
StartParameters: helper.ConfigA.StartParameters,
|
||||
FileIDs: helper.ConfigA.FileIDs,
|
||||
}
|
||||
newConfig1.ScenarioID = scenarioID
|
||||
newConfig1.ICID = ICID
|
||||
|
||||
// authenticate as normal user
|
||||
token, err := helper.AuthenticateForTest(router,
|
||||
|
@ -402,7 +386,7 @@ func TestDeleteConfig(t *testing.T) {
|
|||
|
||||
// test POST newConfig
|
||||
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.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)
|
||||
|
||||
// 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)
|
||||
|
||||
// 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
|
||||
// using the respective endpoints of the API
|
||||
scenarioID, ICID := addScenarioAndIC()
|
||||
newConfig1.ScenarioID = scenarioID
|
||||
newConfig1.ICID = ICID
|
||||
|
||||
// authenticate as normal user
|
||||
token, err := helper.AuthenticateForTest(router,
|
||||
|
@ -466,15 +452,8 @@ func TestGetAllConfigsOfScenario(t *testing.T) {
|
|||
assert.NoError(t, err)
|
||||
|
||||
// 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,
|
||||
base_api_configs, "POST", helper.KeyModels{"config": newConfig})
|
||||
base_api_configs, "POST", helper.KeyModels{"config": newConfig1})
|
||||
assert.NoError(t, err)
|
||||
assert.Equalf(t, 200, code, "Response body: \n%v\n", resp)
|
||||
|
||||
|
|
Loading…
Add table
Reference in a new issue