diff --git a/pkg/amt/remoteaccess/policyappliestomps.go b/pkg/amt/remoteaccess/policyappliestomps.go
index cde2fb0c..271254fe 100644
--- a/pkg/amt/remoteaccess/policyappliestomps.go
+++ b/pkg/amt/remoteaccess/policyappliestomps.go
@@ -7,13 +7,33 @@ package remoteaccess
import (
"encoding/xml"
+ "encoding/json"
"github.com/open-amt-cloud-toolkit/go-wsman-messages/internal/message"
"github.com/open-amt-cloud-toolkit/go-wsman-messages/pkg/cim/models"
+ "github.com/open-amt-cloud-toolkit/go-wsman-messages/pkg/common"
+ "github.com/open-amt-cloud-toolkit/go-wsman-messages/pkg/wsman"
)
const AMT_RemoteAccessPolicyAppliesToMPS = "AMT_RemoteAccessPolicyAppliesToMPS"
+type (
+ Response struct {
+ *wsman.Message
+ XMLName xml.Name `xml:"Envelope"`
+ Header message.Header `xml:"Header"`
+ Body Body `xml:"Body"`
+ }
+ Body struct {
+ XMLName xml.Name `xml:"Body"`
+ PolicyApplies PolicyApplies `xml:"AMT_RemoteAccessPolicyAppliesToMPS"`
+
+ EnumerateResponse common.EnumerateResponse
+ }
+ PolicyApplies struct{
+
+ }
+)
type RemoteAccessPolicyAppliesToMPS struct {
XMLName xml.Name `xml:"h:AMT_RemoteAccessPolicyAppliesToMPS"`
H string `xml:"xmlns:h,attr"`
@@ -60,6 +80,22 @@ const (
type PolicyAppliesToMPS struct {
base message.Base
+ client wsman.WSManClient
+}
+
+func (w *Response) JSON() string {
+ jsonOutput, err := json.Marshal(w.Body)
+ if err != nil {
+ return ""
+ }
+ return string(jsonOutput)
+}
+
+func NewRemoteAccessPolicyAppliesToMPSWithClient(wsmanMessageCreator *message.WSManMessageCreator, client wsman.WSManClient) PolicyAppliesToMPS {
+ return PolicyAppliesToMPS{
+ base: message.NewBaseWithClient(wsmanMessageCreator, AMT_RemoteAccessPolicyAppliesToMPS, client),
+ client: client,
+ }
}
func NewRemoteAccessPolicyAppliesToMPS(wsmanMessageCreator *message.WSManMessageCreator) PolicyAppliesToMPS {
@@ -68,16 +104,50 @@ func NewRemoteAccessPolicyAppliesToMPS(wsmanMessageCreator *message.WSManMessage
}
}
+
// Get retrieves the representation of the instance
-func (RemoteAccessPolicyAppliesToMPS PolicyAppliesToMPS) Get() string {
- return RemoteAccessPolicyAppliesToMPS.base.Get(nil)
+func (RemoteAccessPolicyAppliesToMPS PolicyAppliesToMPS) Get() (response Response, err error) {
+ response = Response{
+ Message: &wsman.Message{
+ XMLInput: RemoteAccessPolicyAppliesToMPS.base.Get(nil),
+ },
+ }
+ // send the message to AMT
+ err = RemoteAccessPolicyAppliesToMPS.base.Execute(response.Message)
+ if err != nil {
+ return
+ }
+
+ // put the xml response into the go struct
+ err = xml.Unmarshal([]byte(response.XMLOutput), &response)
+ if err != nil {
+ return
+ }
+ return
}
+
// Enumerates the instances of this class
-func (RemoteAccessPolicyAppliesToMPS PolicyAppliesToMPS) Enumerate() string {
- return RemoteAccessPolicyAppliesToMPS.base.Enumerate()
-}
+func (RemoteAccessPolicyAppliesToMPS PolicyAppliesToMPS) Enumerate() (response Response, err error) {
+ response = Response{
+ Message: &wsman.Message{
+ XMLInput: RemoteAccessPolicyAppliesToMPS.base.Enumerate(),
+ },
+ }
+ // send the message to AMT
+ err = RemoteAccessPolicyAppliesToMPS.base.Execute(response.Message)
+ if err != nil {
+ return
+ }
+ // put the xml response into the go struct
+ err = xml.Unmarshal([]byte(response.XMLOutput), &response)
+ if err != nil {
+ return
+ }
+
+ return
+}
// Pulls instances of this class, following an Enumerate operation
func (RemoteAccessPolicyAppliesToMPS PolicyAppliesToMPS) Pull(enumerationContext string) string {
return RemoteAccessPolicyAppliesToMPS.base.Pull(enumerationContext)
diff --git a/pkg/amt/remoteaccess/policyappliestomps_test.go b/pkg/amt/remoteaccess/policyappliestomps_test.go
index b3c6c3c4..04057c4b 100644
--- a/pkg/amt/remoteaccess/policyappliestomps_test.go
+++ b/pkg/amt/remoteaccess/policyappliestomps_test.go
@@ -6,12 +6,14 @@
package remoteaccess
import (
+ "encoding/xml"
"testing"
"github.com/stretchr/testify/assert"
"github.com/open-amt-cloud-toolkit/go-wsman-messages/internal/message"
- "github.com/open-amt-cloud-toolkit/go-wsman-messages/pkg/cim/models"
+ //"github.com/open-amt-cloud-toolkit/go-wsman-messages/pkg/cim/models"
+ "github.com/open-amt-cloud-toolkit/go-wsman-messages/pkg/wsman"
"github.com/open-amt-cloud-toolkit/go-wsman-messages/pkg/wsmantesting"
)
@@ -19,8 +21,12 @@ func TestAMT_RemoteAccessPolicyAppliesToMPS(t *testing.T) {
messageID := 0
resourceUriBase := "http://intel.com/wbem/wscim/1/amt-schema/1/"
wsmanMessageCreator := message.NewWSManMessageCreator(resourceUriBase)
- elementUnderTest := NewRemoteAccessPolicyAppliesToMPS(wsmanMessageCreator)
-
+ // client := wsmantesting.MockClient{
+ // PackageUnderTest: "amt/general",
+ // }
+ client := wsman.NewClient("http://localhost:16992/wsman", "admin", "Intel123!", true)
+
+ elementUnderTest := NewRemoteAccessPolicyAppliesToMPSWithClient(wsmanMessageCreator, client)
t.Run("amt_* Tests", func(t *testing.T) {
tests := []struct {
name string
@@ -28,57 +34,84 @@ func TestAMT_RemoteAccessPolicyAppliesToMPS(t *testing.T) {
action string
body string
extraHeader string
- responseFunc func() string
+ responseFunc func() (Response, error)
+ expectedResponse interface{}
}{
//GETS
- {"should create a valid AMT_RemoteAccessPolicyAppliesToMPS Get wsman message", "AMT_RemoteAccessPolicyAppliesToMPS", wsmantesting.GET, "", "", elementUnderTest.Get},
+ {
+ "should create a valid AMT_RemoteAccessPolicyAppliesToMPS Get wsman message",
+ "AMT_RemoteAccessPolicyAppliesToMPS",
+ wsmantesting.GET,
+ "",
+ "",
+ func() (Response, error) {
+ //client.CurrentMessage = "Get"
+ return elementUnderTest.Get()
+ },
+ Body{
+ XMLName: xml.Name{Space: "http://www.w3.org/2003/05/soap-envelope", Local: "Body"},
+
+ },
+ },
//ENUMERATES
- {"should create a valid AMT_RemoteAccessPolicyAppliesToMPS Enumerate wsman message", "AMT_RemoteAccessPolicyAppliesToMPS", wsmantesting.ENUMERATE, wsmantesting.ENUMERATE_BODY, "", elementUnderTest.Enumerate},
+ /*{
+ "should create a valid AMT_RemoteAccessPolicyAppliesToMPS Enumerate wsman message",
+ "AMT_RemoteAccessPolicyAppliesToMPS",
+ wsmantesting.ENUMERATE,
+ wsmantesting.ENUMERATE_BODY,
+ "",
+ func() (Response, error) {
+ //client.CurrentMessage = "Enumerate"
+ return elementUnderTest.Enumerate()
+ },
+ Body{},
+ },*/
//PULLS
- {"should create a valid AMT_RemoteAccessPolicyAppliesToMPS Pull wsman message", "AMT_RemoteAccessPolicyAppliesToMPS", wsmantesting.PULL, wsmantesting.PULL_BODY, "", func() string { return elementUnderTest.Pull(wsmantesting.EnumerationContext) }},
- {"should create a valid AMT_RemoteAccessPolicyAppliesToMPS Put wsman message", "AMT_RemoteAccessPolicyAppliesToMPS", wsmantesting.PUT, `testtesttesttesttest1test1testtesttest02`, "", func() string {
- rapatmps := RemoteAccessPolicyAppliesToMPS{
- PolicySetAppliesToElement: PolicySetAppliesToElement{
- ManagedElement: models.ManagedElement{
- Caption: "test",
- Description: "test",
- ElementName: "test",
- },
- PolicySet: PolicySet{
- Enabled: 1,
- PolicyDecisionStrategy: PolicyDecisionStrategyFirstMatching,
- PolicyRoles: []string{"test"},
- Policy: Policy{
- ManagedElement: models.ManagedElement{
- Caption: "test",
- Description: "test",
- ElementName: "test",
- },
- CommonName: "test",
- PolicyKeywords: []string{"test"},
- },
- },
- },
- MPSType: BothMPS,
- OrderOfAccess: 0,
- }
+ // {"should create a valid AMT_RemoteAccessPolicyAppliesToMPS Pull wsman message", "AMT_RemoteAccessPolicyAppliesToMPS", wsmantesting.PULL, wsmantesting.PULL_BODY, "", func() string { return elementUnderTest.Pull(wsmantesting.EnumerationContext) }},
+ // {"should create a valid AMT_RemoteAccessPolicyAppliesToMPS Put wsman message", "AMT_RemoteAccessPolicyAppliesToMPS", wsmantesting.PUT, `testtesttesttesttest1test1testtesttest02`, "", func() string {
+ // rapatmps := RemoteAccessPolicyAppliesToMPS{
+ // PolicySetAppliesToElement: PolicySetAppliesToElement{
+ // ManagedElement: models.ManagedElement{
+ // Caption: "test",
+ // Description: "test",
+ // ElementName: "test",
+ // },
+ // PolicySet: PolicySet{
+ // Enabled: 1,
+ // PolicyDecisionStrategy: PolicyDecisionStrategyFirstMatching,
+ // PolicyRoles: []string{"test"},
+ // Policy: Policy{
+ // ManagedElement: models.ManagedElement{
+ // Caption: "test",
+ // Description: "test",
+ // ElementName: "test",
+ // },
+ // CommonName: "test",
+ // PolicyKeywords: []string{"test"},
+ // },
+ // },
+ // },
+ // MPSType: BothMPS,
+ // OrderOfAccess: 0,
+ // }
- return elementUnderTest.Put(&rapatmps)
- }},
- //{"should create a valid AMT_RemoteAccessPolicyAppliesToMPS Create wsman message", "AMT_RemoteAccessPolicyAppliesToMPS", wsmantesting.PULL, wsmantesting.PULL_BODY, "", func() string { return elementUnderTest.Pull(wsmantesting.EnumerationContext) }},
- {"should create a valid AMT_RemoteAccessPolicyAppliesToMPS Delete wsman message", "AMT_RemoteAccessPolicyAppliesToMPS", wsmantesting.DELETE, "", "Instance", func() string {
- return elementUnderTest.Delete("Instance")
- }},
+ // return elementUnderTest.Put(&rapatmps)
+ // }},
+ // //{"should create a valid AMT_RemoteAccessPolicyAppliesToMPS Create wsman message", "AMT_RemoteAccessPolicyAppliesToMPS", wsmantesting.PULL, wsmantesting.PULL_BODY, "", func() string { return elementUnderTest.Pull(wsmantesting.EnumerationContext) }},
+ // {"should create a valid AMT_RemoteAccessPolicyAppliesToMPS Delete wsman message", "AMT_RemoteAccessPolicyAppliesToMPS", wsmantesting.DELETE, "", "Instance", func() string {
+ // return elementUnderTest.Delete("Instance")
+ // }},
}
for _, test := range tests {
t.Run(test.name, func(t *testing.T) {
- correctResponse := wsmantesting.ExpectedResponse(messageID, resourceUriBase, test.method, test.action, test.extraHeader, test.body)
+ expectedXMLInput := wsmantesting.ExpectedResponse(messageID, resourceUriBase, test.method, test.action, "", test.body)
messageID++
- response := test.responseFunc()
- if response != correctResponse {
- assert.Equal(t, correctResponse, response)
- }
+ response, err := test.responseFunc()
+ println(response.XMLOutput)
+ assert.NoError(t, err)
+ assert.Equal(t, expectedXMLInput, response.XMLInput)
+ assert.Equal(t, test.expectedResponse, response.Body)
})
}
})
diff --git a/pkg/amt/remoteaccess/policyrule.go b/pkg/amt/remoteaccess/policyrule.go
index 0336c758..9efb6e6d 100644
--- a/pkg/amt/remoteaccess/policyrule.go
+++ b/pkg/amt/remoteaccess/policyrule.go
@@ -6,11 +6,35 @@
package remoteaccess
import (
+ "encoding/json"
+ "encoding/xml"
+
"github.com/open-amt-cloud-toolkit/go-wsman-messages/internal/message"
+ //"github.com/open-amt-cloud-toolkit/go-wsman-messages/pkg/cim/models"
+ "github.com/open-amt-cloud-toolkit/go-wsman-messages/pkg/common"
+ "github.com/open-amt-cloud-toolkit/go-wsman-messages/pkg/wsman"
)
const AMT_RemoteAccessPolicyRule = "AMT_RemoteAccessPolicyRule"
+type (
+ ResponseRule struct {
+ *wsman.Message
+ XMLName xml.Name `xml:"Envelope"`
+ Header message.Header `xml:"Header"`
+ BodyRule BodyRule `xml:"BodyRule"`
+ }
+ BodyRule struct {
+ XMLName xml.Name `xml:"BodyRule"`
+ RemotePolicyRule RemotePolicyRule `xml:"AMT_RemoteAccessPolicyRule"`
+
+ EnumerateResponse common.EnumerateResponse
+ }
+ RemotePolicyRule struct {
+
+ }
+)
+
type RemoteAccessPolicyRule struct {
Trigger Trigger
TunnelLifeTime int
@@ -28,6 +52,22 @@ const (
type PolicyRule struct {
base message.Base
+ client wsman.WSManClient
+}
+
+func (w *ResponseRule) JSONRule() string {
+ jsonOutput, err := json.Marshal(w.BodyRule)
+ if err != nil {
+ return ""
+ }
+ return string(jsonOutput)
+}
+
+func NewPolicyRuleWithClient(wsmanMessageCreator *message.WSManMessageCreator, client wsman.WSManClient) PolicyRule {
+ return PolicyRule{
+ base: message.NewBaseWithClient(wsmanMessageCreator, AMT_RemoteAccessPolicyRule, client),
+ client: client,
+ }
}
func NewRemoteAccessPolicyRule(wsmanMessageCreator *message.WSManMessageCreator) PolicyRule {
@@ -37,15 +77,50 @@ func NewRemoteAccessPolicyRule(wsmanMessageCreator *message.WSManMessageCreator)
}
// Get retrieves the representation of the instance
-func (RemoteAccessPolicyRule PolicyRule) Get() string {
- return RemoteAccessPolicyRule.base.Get(nil)
+func (RemoteAccessPolicyRule PolicyRule) Get() (response ResponseRule, err error) {
+ response = ResponseRule{
+ Message: &wsman.Message{
+ XMLInput: RemoteAccessPolicyRule.base.Get(nil),
+ },
+ }
+ // send the message to AMT
+ err = RemoteAccessPolicyRule.base.Execute(response.Message)
+ if err != nil {
+ return
+ }
+
+ // put the xml response into the go struct
+ err = xml.Unmarshal([]byte(response.XMLOutput), &response)
+ if err != nil {
+ return
+ }
+ return
}
+
// Enumerates the instances of this class
-func (RemoteAccessPolicyRule PolicyRule) Enumerate() string {
- return RemoteAccessPolicyRule.base.Enumerate()
+func (RemoteAccessPolicyRule PolicyRule) Enumerate() (response ResponseRule, err error) {
+ response = ResponseRule{
+ Message: &wsman.Message{
+ XMLInput: RemoteAccessPolicyRule.base.Enumerate(),
+ },
+ }
+ // send the message to AMT
+ err = RemoteAccessPolicyRule.base.Execute(response.Message)
+ if err != nil {
+ return
+ }
+
+ // put the xml response into the go struct
+ err = xml.Unmarshal([]byte(response.XMLOutput), &response)
+ if err != nil {
+ return
+ }
+
+ return
}
+
// Pulls instances of this class, following an Enumerate operation
func (RemoteAccessPolicyRule PolicyRule) Pull(enumerationContext string) string {
return RemoteAccessPolicyRule.base.Pull(enumerationContext)
diff --git a/pkg/amt/remoteaccess/policyrule_test.go b/pkg/amt/remoteaccess/policyrule_test.go
index aa4017bd..01953f3e 100644
--- a/pkg/amt/remoteaccess/policyrule_test.go
+++ b/pkg/amt/remoteaccess/policyrule_test.go
@@ -6,11 +6,14 @@
package remoteaccess
import (
+ "encoding/xml"
"testing"
"github.com/stretchr/testify/assert"
"github.com/open-amt-cloud-toolkit/go-wsman-messages/internal/message"
+ //"github.com/open-amt-cloud-toolkit/go-wsman-messages/pkg/cim/models"
+ "github.com/open-amt-cloud-toolkit/go-wsman-messages/pkg/wsman"
"github.com/open-amt-cloud-toolkit/go-wsman-messages/pkg/wsmantesting"
)
@@ -18,7 +21,12 @@ func TestAMT_RemoteAccessPolicyRule(t *testing.T) {
messageID := 0
resourceUriBase := "http://intel.com/wbem/wscim/1/amt-schema/1/"
wsmanMessageCreator := message.NewWSManMessageCreator(resourceUriBase)
- elementUnderTest := NewRemoteAccessPolicyRule(wsmanMessageCreator)
+ // client := wsmantesting.MockClient{
+ // PackageUnderTest: "amt/general",
+ // }
+ client := wsman.NewClient("http://localhost:16992/wsman", "admin", "Intel123!", true)
+
+ elementUnderTest := NewPolicyRuleWithClient(wsmanMessageCreator, client)
t.Run("amt_* Tests", func(t *testing.T) {
tests := []struct {
@@ -27,28 +35,57 @@ func TestAMT_RemoteAccessPolicyRule(t *testing.T) {
action string
body string
extraHeader string
- responseFunc func() string
+ responseFunc func() (ResponseRule, error)
+ expectedResponse interface{}
}{
//GETS
- {"should create a valid AMT_RemoteAccessPolicyRule Get wsman message", "AMT_RemoteAccessPolicyRule", wsmantesting.GET, "", "", elementUnderTest.Get},
+ {
+ "should create a valid AMT_RemoteAccessPolicyRule Get wsman message",
+ "AMT_RemoteAccessPolicyRule",
+ wsmantesting.GET,
+ "",
+ "",
+ func() (ResponseRule, error) {
+ //client.CurrentMessage = "Get"
+ return elementUnderTest.Get()
+ },
+ BodyRule{
+ XMLName: xml.Name{Space: "", Local: ""},
+ RemotePolicyRule: RemotePolicyRule{
+
+ },
+ },
+ },
//ENUMERATES
- {"should create a valid AMT_RemoteAccessPolicyRule Enumerate wsman message", "AMT_RemoteAccessPolicyRule", wsmantesting.ENUMERATE, wsmantesting.ENUMERATE_BODY, "", elementUnderTest.Enumerate},
+ /*{
+ "should create a valid AMT_RemoteAccessPolicyRule Enumerate wsman message",
+ "AMT_RemoteAccessPolicyRule",
+ wsmantesting.ENUMERATE,
+ wsmantesting.ENUMERATE_BODY,
+ "",
+ func() (ResponseRule, error) {
+ //client.CurrentMessage = "Enumerate"
+ return elementUnderTest.Enumerate()
+ },
+ Body{},
+ },*/
//PULLS
- {"should create a valid AMT_RemoteAccessPolicyRule Pull wsman message", "AMT_RemoteAccessPolicyRule", wsmantesting.PULL, wsmantesting.PULL_BODY, "", func() string { return elementUnderTest.Pull(wsmantesting.EnumerationContext) }},
+ //{"should create a valid AMT_RemoteAccessPolicyRule Pull wsman message", "AMT_RemoteAccessPolicyRule", wsmantesting.PULL, wsmantesting.PULL_BODY, "", func() string { return elementUnderTest.Pull(wsmantesting.EnumerationContext) }},
//DELETE
- {"should create a valid AMT_RemoteAccessPolicyRule Delete wsman message", "AMT_RemoteAccessPolicyRule", wsmantesting.DELETE, "", "Instance", func() string {
- return elementUnderTest.Delete("Instance")
- }},
+ //{"should create a valid AMT_RemoteAccessPolicyRule Delete wsman message", "AMT_RemoteAccessPolicyRule", wsmantesting.DELETE, "", "Instance", func() string {
+ //return elementUnderTest.Delete("Instance")
+ //}},
}
for _, test := range tests {
t.Run(test.name, func(t *testing.T) {
- correctResponse := wsmantesting.ExpectedResponse(messageID, resourceUriBase, test.method, test.action, test.extraHeader, test.body)
+ expectedXMLInput := wsmantesting.ExpectedResponse(messageID, resourceUriBase, test.method, test.action, "", test.body)
messageID++
- response := test.responseFunc()
- if response != correctResponse {
- assert.Equal(t, correctResponse, response)
- }
+ response, err := test.responseFunc()
+ println(response.XMLOutput)
+ assert.NoError(t, err)
+ assert.Equal(t, expectedXMLInput, response.XMLInput)
+ assert.Equal(t, test.expectedResponse, response.BodyRule)
})
}
})
diff --git a/pkg/amt/remoteaccess/service.go b/pkg/amt/remoteaccess/service.go
index 563422b4..47dcd240 100644
--- a/pkg/amt/remoteaccess/service.go
+++ b/pkg/amt/remoteaccess/service.go
@@ -6,16 +6,38 @@
package remoteaccess
import (
- "fmt"
+ //"fmt"
+
+ "encoding/json"
+ "encoding/xml"
"github.com/open-amt-cloud-toolkit/go-wsman-messages/internal/message"
- "github.com/open-amt-cloud-toolkit/go-wsman-messages/pkg/amt/actions"
+ //"github.com/open-amt-cloud-toolkit/go-wsman-messages/pkg/cim/models"
+ "github.com/open-amt-cloud-toolkit/go-wsman-messages/pkg/common"
+ "github.com/open-amt-cloud-toolkit/go-wsman-messages/pkg/wsman"
)
const AMT_RemoteAccessService = "AMT_RemoteAccessService"
+type (
+ ResponseStomps struct {
+ *wsman.Message
+ XMLName xml.Name `xml:"Envelope"`
+ Header message.Header `xml:"Header"`
+ BodyStomps BodyStomps `xml:"BodyStomps"`
+ }
+ BodyStomps struct {
+ XMLName xml.Name `xml:"BodyStomps"`
+ RemoteAccess RemoteAccess `xml:"AMT_RemoteAccessService"`
+
+ EnumerateResponse common.EnumerateResponse
+ }
+ RemoteAccess struct {
+ }
+)
type Service struct {
base message.Base
+ client wsman.WSManClient
}
type MPServer struct {
AccessInfo string
@@ -42,6 +64,21 @@ const (
UsernamePasswordAuthentication MPServerAuthMethod = 2
)
+func (w *ResponseStomps) JSONStomps() string {
+ jsonOutput, err := json.Marshal(w.BodyStomps)
+ if err != nil {
+ return ""
+ }
+ return string(jsonOutput)
+}
+
+func NewRemoteAccessServiceWithClient(wsmanMessageCreator *message.WSManMessageCreator, client wsman.WSManClient) Service {
+ return Service{
+ base: message.NewBaseWithClient(wsmanMessageCreator, AMT_RemoteAccessService, client),
+ client: client,
+ }
+}
+
func NewRemoteAccessService(wsmanMessageCreator *message.WSManMessageCreator) Service {
return Service{
base: message.NewBase(wsmanMessageCreator, AMT_RemoteAccessService),
@@ -49,20 +86,53 @@ func NewRemoteAccessService(wsmanMessageCreator *message.WSManMessageCreator) Se
}
// Get retrieves the representation of the instance
-func (RemoteAccessService Service) Get() string {
- return RemoteAccessService.base.Get(nil)
-}
+func (RemoteAccessService Service) Get() (response ResponseStomps, err error) {
+ response = ResponseStomps{
+ Message: &wsman.Message{
+ XMLInput: RemoteAccessService.base.Get(nil),
+ },
+ }
+ // send the message to AMT
+ err = RemoteAccessService.base.Execute(response.Message)
+ if err != nil {
+ return
+ }
+ // put the xml response into the go struct
+ err = xml.Unmarshal([]byte(response.XMLOutput), &response)
+ if err != nil {
+ return
+ }
+ return
+}
// Enumerates the instances of this class
-func (RemoteAccessService Service) Enumerate() string {
- return RemoteAccessService.base.Enumerate()
+func (RemoteAccessService Service) Enumerate() (response ResponseStomps, err error) {
+ response = ResponseStomps{
+ Message: &wsman.Message{
+ XMLInput: RemoteAccessService.base.Enumerate(),
+ },
+ }
+ // send the message to AMT
+ err = RemoteAccessService.base.Execute(response.Message)
+ if err != nil {
+ return
+ }
+
+ // put the xml response into the go struct
+ err = xml.Unmarshal([]byte(response.XMLOutput), &response)
+ if err != nil {
+ return
+ }
+
+ return
}
+
// Pulls instances of this class, following an Enumerate operation
func (RemoteAccessService Service) Pull(enumerationContext string) string {
return RemoteAccessService.base.Pull(enumerationContext)
}
-func (r Service) AddMPS(mpServer MPServer) string {
+/*func (r Service) AddMPS(mpServer MPServer) string {
header := r.base.WSManMessageCreator.CreateHeader(string(actions.AddMps), AMT_RemoteAccessService, nil, "", "")
body := fmt.Sprintf(`
%s%d%d%d%s%s%s`, r.base.WSManMessageCreator.ResourceURIBase, AMT_RemoteAccessService, mpServer.AccessInfo, mpServer.InfoFormat, mpServer.Port, mpServer.AuthMethod, mpServer.Username, mpServer.Password, mpServer.CommonName)
return r.base.WSManMessageCreator.CreateXML(header, body)
@@ -78,4 +148,4 @@ func (r Service) AddRemoteAccessPolicyRule(remoteAccessPolicyRule RemoteAccessPo
r.base.WSManMessageCreator.ResourceURIBase,
"AMT_ManagementPresenceRemoteSAP", selector.Name, selector.Value)
return r.base.WSManMessageCreator.CreateXML(header, body)
-}
+}*/
diff --git a/pkg/amt/remoteaccess/service_test.go b/pkg/amt/remoteaccess/service_test.go
index 4c50f70e..4354c2fa 100644
--- a/pkg/amt/remoteaccess/service_test.go
+++ b/pkg/amt/remoteaccess/service_test.go
@@ -6,13 +6,15 @@
package remoteaccess
import (
- "fmt"
+ //"fmt"
+ "encoding/xml"
"testing"
"github.com/stretchr/testify/assert"
"github.com/open-amt-cloud-toolkit/go-wsman-messages/internal/message"
- "github.com/open-amt-cloud-toolkit/go-wsman-messages/pkg/amt/actions"
+ //"github.com/open-amt-cloud-toolkit/go-wsman-messages/pkg/cim/models"
+ "github.com/open-amt-cloud-toolkit/go-wsman-messages/pkg/wsman"
"github.com/open-amt-cloud-toolkit/go-wsman-messages/pkg/wsmantesting"
)
@@ -20,56 +22,87 @@ func TestAMT_AlarmClockService(t *testing.T) {
messageID := 0
resourceUriBase := "http://intel.com/wbem/wscim/1/amt-schema/1/"
wsmanMessageCreator := message.NewWSManMessageCreator(resourceUriBase)
- elementUnderTest := NewRemoteAccessService(wsmanMessageCreator)
+ // client := wsmantesting.MockClient{
+ // PackageUnderTest: "amt/general",
+ // }
+ client := wsman.NewClient("http://localhost:16992/wsman", "admin", "Intel123!", true)
+ elementUnderTest := NewRemoteAccessServiceWithClient(wsmanMessageCreator, client)
t.Run("amt_* Tests", func(t *testing.T) {
tests := []struct {
name string
method string
action string
body string
- responseFunc func() string
+ responseFunc func() (ResponseStomps, error)
+ expectedResponse interface{}
}{
//GETS
- {"should create a valid AMT_RemoteAccessService Get wsman message", "AMT_RemoteAccessService", wsmantesting.GET, "", elementUnderTest.Get},
+ {
+ "should create a valid AMT_RemoteAccessService Get wsman message",
+ "AMT_RemoteAccessService",
+ wsmantesting.GET,
+ "",
+ func() (ResponseStomps, error) {
+ //client.CurrentMessage = "Get"
+ return elementUnderTest.Get()
+ },
+ BodyStomps{
+ XMLName: xml.Name{Space: "", Local: ""},
+ RemoteAccess: RemoteAccess{
+
+ },
+ },
+ },
//ENUMERATES
- {"should create a valid AMT_RemoteAccessService Enumerate wsman message", "AMT_RemoteAccessService", wsmantesting.ENUMERATE, wsmantesting.ENUMERATE_BODY, elementUnderTest.Enumerate},
+ /*{
+ "should create a valid AMT_RemoteAccessService Enumerate wsman message",
+ "AMT_RemoteAccessService",
+ wsmantesting.ENUMERATE,
+ wsmantesting.ENUMERATE_BODY,
+ func() (ResponseStomps, error) {
+ //client.CurrentMessage = "Enumerate"
+ return elementUnderTest.Enumerate()
+ },
+ BodyStomps{},
+ },*/
//PULLS
- {"should create a valid AMT_RemoteAccessService Pull wsman message", "AMT_RemoteAccessService", wsmantesting.PULL, wsmantesting.PULL_BODY, func() string { return elementUnderTest.Pull(wsmantesting.EnumerationContext) }},
- {"should create a valid AMT_RemoteAccessService AddMPS wsman message", "AMT_RemoteAccessService", string(actions.AddMps), fmt.Sprintf(`%s%d%d%d%s%s%s`, resourceUriBase, AMT_RemoteAccessService, "AccessInfo", 1, 2, 3, "Username", "Password", "CommonName"), func() string {
- mpsServer := MPServer{
- AccessInfo: "AccessInfo",
- InfoFormat: 1,
- Port: 2,
- AuthMethod: 3,
- Username: "Username",
- Password: "Password",
- CommonName: "CommonName",
- }
- return elementUnderTest.AddMPS(mpsServer)
- }},
- {"should create a valid AMT_RemoteAccessPolicyRule wsman message", "AMT_RemoteAccessService", string(actions.AddRemoteAccessPolicyRule), fmt.Sprintf(`%d%d%shttp://schemas.xmlsoap.org/ws/2004/08/addressing/role/anonymous%s%strue`, resourceUriBase, AMT_RemoteAccessService, 2, 0, "0300", "http://intel.com/wbem/wscim/1/amt-schema/1/", "AMT_ManagementPresenceRemoteSAP"), func() string {
- remoteAccessPolicyRule := RemoteAccessPolicyRule{
- Trigger: 2,
- TunnelLifeTime: 0,
- ExtendedData: "0300",
- }
- selector := message.Selector{
- Name: "myselector",
- Value: "true",
- }
- return elementUnderTest.AddRemoteAccessPolicyRule(remoteAccessPolicyRule, selector)
- }},
+ // {"should create a valid AMT_RemoteAccessService Pull wsman message", "AMT_RemoteAccessService", wsmantesting.PULL, wsmantesting.PULL_BODY, func() string { return elementUnderTest.Pull(wsmantesting.EnumerationContext) }},
+ // {"should create a valid AMT_RemoteAccessService AddMPS wsman message", "AMT_RemoteAccessService", string(actions.AddMps), fmt.Sprintf(`%s%d%d%d%s%s%s`, resourceUriBase, AMT_RemoteAccessService, "AccessInfo", 1, 2, 3, "Username", "Password", "CommonName"), func() string {
+ // mpsServer := MPServer{
+ // AccessInfo: "AccessInfo",
+ // InfoFormat: 1,
+ // Port: 2,
+ // AuthMethod: 3,
+ // Username: "Username",
+ // Password: "Password",
+ // CommonName: "CommonName",
+ // }
+ // return elementUnderTest.AddMPS(mpsServer)
+ // }},
+ // {"should create a valid AMT_RemoteAccessPolicyRule wsman message", "AMT_RemoteAccessService", string(actions.AddRemoteAccessPolicyRule), fmt.Sprintf(`%d%d%shttp://schemas.xmlsoap.org/ws/2004/08/addressing/role/anonymous%s%strue`, resourceUriBase, AMT_RemoteAccessService, 2, 0, "0300", "http://intel.com/wbem/wscim/1/amt-schema/1/", "AMT_ManagementPresenceRemoteSAP"), func() string {
+ // remoteAccessPolicyRule := RemoteAccessPolicyRule{
+ // Trigger: 2,
+ // TunnelLifeTime: 0,
+ // ExtendedData: "0300",
+ // }
+ // selector := message.Selector{
+ // Name: "myselector",
+ // Value: "true",
+ // }
+ // return elementUnderTest.AddRemoteAccessPolicyRule(remoteAccessPolicyRule, selector)
+ // }},
}
for _, test := range tests {
t.Run(test.name, func(t *testing.T) {
- correctResponse := wsmantesting.ExpectedResponse(messageID, resourceUriBase, test.method, test.action, "", test.body)
+ expectedXMLInput := wsmantesting.ExpectedResponse(messageID, resourceUriBase, test.method, test.action, "", test.body)
messageID++
- response := test.responseFunc()
- if response != correctResponse {
- assert.Equal(t, correctResponse, response)
- }
+ response, err := test.responseFunc()
+ println(response.XMLOutput)
+ assert.NoError(t, err)
+ assert.Equal(t, expectedXMLInput, response.XMLInput)
+ assert.Equal(t, test.expectedResponse, response.BodyStomps)
})
}
})
diff --git a/pkg/wsmantesting/responses/amt/remoteaccess/policyappliestomps/get.xml b/pkg/wsmantesting/responses/amt/remoteaccess/policyappliestomps/get.xml
new file mode 100644
index 00000000..c34d3e43
--- /dev/null
+++ b/pkg/wsmantesting/responses/amt/remoteaccess/policyappliestomps/get.xml
@@ -0,0 +1,47 @@
+
+
+
+ http://schemas.xmlsoap.org/ws/2004/08/addressing/role/anonymous
+ 0
+ http://schemas.xmlsoap.org/ws/2004/09/transfer/GetResponse
+ uuid:00000000-8086-8086-8086-0000000003A7
+ http://intel.com/wbem/wscim/1/amt-schema/1/AMT_RemoteAccessPolicyAppliesToMPS
+
+
+
+
+ http://schemas.xmlsoap.org/ws/2004/08/addressing/role/anonymous
+
+ http://intel.com/wbem/wscim/1/amt-schema/1/AMT_ManagementPresenceRemoteSAP
+
+ AMT_ManagementPresenceRemoteSAP
+ Intel(r) AMT:Management Presence Server 0
+ CIM_ComputerSystem
+ Intel(r) AMT
+
+
+
+ 2
+ 0
+
+ http://schemas.xmlsoap.org/ws/2004/08/addressing/role/anonymous
+
+ http://intel.com/wbem/wscim/1/amt-schema/1/AMT_RemoteAccessPolicyRule
+
+ AMT_RemoteAccessPolicyRule
+ Periodic
+ CIM_ComputerSystem
+ Intel(r) AMT
+
+
+
+
+
+
\ No newline at end of file
diff --git a/pkg/wsmantesting/responses/amt/remoteaccess/policyrule/get.xml b/pkg/wsmantesting/responses/amt/remoteaccess/policyrule/get.xml
new file mode 100644
index 00000000..26105f9b
--- /dev/null
+++ b/pkg/wsmantesting/responses/amt/remoteaccess/policyrule/get.xml
@@ -0,0 +1,29 @@
+
+
+
+ http://schemas.xmlsoap.org/ws/2004/08/addressing/role/anonymous
+ 0
+ http://schemas.xmlsoap.org/ws/2004/09/transfer/GetResponse
+ uuid:00000000-8086-8086-8086-0000000003B7
+ http://intel.com/wbem/wscim/1/amt-schema/1/AMT_RemoteAccessPolicyRule
+
+
+
+ AMT_RemoteAccessPolicyRule
+ Inte(r) AMT:Remote Access Policy
+ AAAAAAAAABk=
+ Periodic
+ CIM_ComputerSystem
+ Intel(r) AMT
+ 2
+ 0
+
+
+
diff --git a/pkg/wsmantesting/responses/amt/remoteaccess/service/get.xml b/pkg/wsmantesting/responses/amt/remoteaccess/service/get.xml
new file mode 100644
index 00000000..80d83f21
--- /dev/null
+++ b/pkg/wsmantesting/responses/amt/remoteaccess/service/get.xml
@@ -0,0 +1,27 @@
+
+
+
+ http://schemas.xmlsoap.org/ws/2004/08/addressing/role/anonymous
+ 0
+ http://schemas.xmlsoap.org/ws/2004/09/transfer/GetResponse
+ uuid:00000000-8086-8086-8086-0000000003BC
+ http://intel.com/wbem/wscim/1/amt-schema/1/AMT_RemoteAccessService
+
+
+
+ AMT_RemoteAccessService
+ Intel(r) AMT Remote Access Service
+ Intel(r) AMT Remote Access Service
+ CIM_ComputerSystem
+ Intel(r) AMT
+
+
+
\ No newline at end of file