Skip to content

Commit

Permalink
Fix test for HA
Browse files Browse the repository at this point in the history
  • Loading branch information
kairen committed Aug 6, 2019
1 parent c8b4277 commit 661e036
Showing 1 changed file with 149 additions and 128 deletions.
277 changes: 149 additions & 128 deletions testdata/testdata.go
Original file line number Diff line number Diff line change
@@ -1,204 +1,205 @@
package testdata

import (
"fmt"
"encoding/xml"
"encoding/xml"
"fmt"

"github.com/inwinstack/pango/version"
"github.com/inwinstack/pango/util"
"github.com/inwinstack/pango/util"
"github.com/inwinstack/pango/version"
)


type Response struct {
Raw []byte
Error error
Raw []byte
Error error
}

type MockClient struct {
// Variables for response.
Resp []Response
Called int
Version version.Number
Plugin []map[string] string
PasswordHash string
UnimportError error

// Variables saved from the mock client's invocation.
Function string
Imports []string
Unimports []string
Path string
Elm string
Template string
TemplateStack string
Vsys string
Extras interface{}
}

func (c *MockClient) String() string { return "mock" }
func (c *MockClient) Versioning() version.Number { return c.Version }
func (c *MockClient) Plugins() []map[string] string { return c.Plugin }
func (c *MockClient) LogAction(f string, a...interface{}) {}
func (c *MockClient) LogQuery(f string, a...interface{}) {}
func (c *MockClient) LogOp(f string, a...interface{}) {}
func (c *MockClient) LogUid(f string, a...interface{}) {}
func (c *MockClient) Commit(d string, e []string, f, g, h, i bool) (uint, error) { return 0, nil }
// Variables for response.
Resp []Response
Called int
Version version.Number
Plugin []map[string]string
PasswordHash string
UnimportError error

// Variables saved from the mock client's invocation.
Function string
Imports []string
Unimports []string
Path string
Elm string
Template string
TemplateStack string
Vsys string
Extras interface{}
}

func (c *MockClient) String() string { return "mock" }
func (c *MockClient) Versioning() version.Number { return c.Version }
func (c *MockClient) Plugins() []map[string]string { return c.Plugin }
func (c *MockClient) LogAction(f string, a ...interface{}) {}
func (c *MockClient) LogQuery(f string, a ...interface{}) {}
func (c *MockClient) LogOp(f string, a ...interface{}) {}
func (c *MockClient) LogUid(f string, a ...interface{}) {}
func (c *MockClient) Commit(d string, e []string, f, g, h, i bool) (uint, error) { return 0, nil }
func (c *MockClient) PositionFirstEntity(d int, e, f string, g, h []string) error { return nil }

func (c *MockClient) Op(req interface{}, vsys string, extras interface{}, ans interface{}) ([]byte, error) {
c.Function = "op"
if err := c.SetElm(req); err != nil {
return nil, err
}
c.Vsys = vsys
c.Extras = extras

return c.finalize(ans)
c.Function = "op"
if err := c.SetElm(req); err != nil {
return nil, err
}
c.Vsys = vsys
c.Extras = extras

return c.finalize(ans)
}

func (c *MockClient) Show(path interface{}, extras interface{}, ans interface{}) ([]byte, error) {
c.Function = "show"
c.Path = util.AsXpath(path)
c.Extras = extras
c.Function = "show"
c.Path = util.AsXpath(path)
c.Extras = extras

return c.finalize(ans)
return c.finalize(ans)
}

func (c *MockClient) Get(path interface{}, extras interface{}, ans interface{}) ([]byte, error) {
c.Function = "get"
c.Path = util.AsXpath(path)
c.Extras = extras
c.Function = "get"
c.Path = util.AsXpath(path)
c.Extras = extras

return c.finalize(ans)
return c.finalize(ans)
}

func (c *MockClient) Delete(path interface{}, extras interface{}, ans interface{}) ([]byte, error) {
c.Function = "delete"
c.Path = util.AsXpath(path)
c.Extras = extras
c.Function = "delete"
c.Path = util.AsXpath(path)
c.Extras = extras

return c.finalize(ans)
return c.finalize(ans)
}

func (c *MockClient) Set(path, elm, extras, ans interface{}) ([]byte, error) {
c.Function = "set"
if err := c.SetElm(elm); err != nil {
return nil, err
}
c.Path = util.AsXpath(path)
c.Extras = extras

return c.finalize(ans)
c.Function = "set"
if err := c.SetElm(elm); err != nil {
return nil, err
}
c.Path = util.AsXpath(path)
c.Extras = extras

return c.finalize(ans)
}

func (c *MockClient) Edit(path, elm, extras, ans interface{}) ([]byte, error) {
c.Function = "edit"
if err := c.SetElm(elm); err != nil {
return nil, err
}
c.Path = util.AsXpath(path)
c.Extras = extras

return c.finalize(ans)
c.Function = "edit"
if err := c.SetElm(elm); err != nil {
return nil, err
}
c.Path = util.AsXpath(path)
c.Extras = extras

return c.finalize(ans)
}

func (c *MockClient) Move(path interface{}, where, dst string, extras, ans interface{}) ([]byte, error) { return nil, nil }
func (c *MockClient) Move(path interface{}, where, dst string, extras, ans interface{}) ([]byte, error) {
return nil, nil
}

func (c *MockClient) Uid(cmd interface{}, vsys string, extras, resp interface{}) ([]byte, error) {
c.Function = "uid"
if err := c.SetElm(cmd); err != nil {
return nil, err
}
c.Vsys = vsys
c.Extras = extras

return c.finalize(resp)
c.Function = "uid"
if err := c.SetElm(cmd); err != nil {
return nil, err
}
c.Vsys = vsys
c.Extras = extras

return c.finalize(resp)
}

func (c *MockClient) EntryListUsing(fn util.Retriever, path []string) ([]string, error) {
c.Path = util.AsXpath(path)
return nil, nil
c.Path = util.AsXpath(path)
return nil, nil
}

func (c *MockClient) MemberListUsing(fn util.Retriever, path []string) ([]string, error) {
c.Path = util.AsXpath(path)
return nil, nil
c.Path = util.AsXpath(path)
return nil, nil
}

func (c *MockClient) RequestPasswordHash(a string) (string, error) { return c.PasswordHash, nil }

func (c *MockClient) finalize(resp interface{}) ([]byte, error) {
ans := c.Resp[c.Called % len(c.Resp)]
c.Called++
ans := c.Resp[c.Called%len(c.Resp)]
c.Called++

if resp == nil {
return ans.Raw, ans.Error
}
if resp == nil {
return ans.Raw, ans.Error
}

if err := xml.Unmarshal(ans.Raw, resp); err != nil {
return nil, err
}
if err := xml.Unmarshal(ans.Raw, resp); err != nil {
return nil, err
}

return ans.Raw, ans.Error
return ans.Raw, ans.Error
}

func (c *MockClient) SetElm(e interface{}) error {
if e == nil {
return nil
}
if e == nil {
return nil
}

rb, err := xml.Marshal(e)
if err != nil {
return err
}
rb, err := xml.Marshal(e)
if err != nil {
return err
}

c.Elm = string(rb)
return nil
c.Elm = string(rb)
return nil
}

func (c *MockClient) VsysImport(ns, tmpl, ts, vsys string, names []string) error {
c.Template = tmpl
c.TemplateStack = ts
c.Vsys = vsys
c.Imports = names
c.Template = tmpl
c.TemplateStack = ts
c.Vsys = vsys
c.Imports = names

return nil
return nil
}

func (c *MockClient) VsysUnimport(ns, tmpl, ts string, names []string) error {
c.Template = tmpl
c.TemplateStack = ts
c.Unimports = names
c.Template = tmpl
c.TemplateStack = ts
c.Unimports = names

return c.UnimportError
return c.UnimportError
}

func (c *MockClient) WaitForJob(a uint, resp interface{}) error {
_, err := c.finalize(resp)
return err
_, err := c.finalize(resp)
return err
}

func (c *MockClient) AddResp(val string) {
c.Resp = append(c.Resp, Response{
[]byte(fmt.Sprintf("<response><result>%s</result></response>", val)), nil,
})
c.Resp = append(c.Resp, Response{
[]byte(fmt.Sprintf("<response><result>%s</result></response>", val)), nil,
})
}

func (c *MockClient) Reset() {
c.Function = ""
c.Imports = []string{}
c.Unimports = []string{}
c.Path = ""
c.Elm = ""
c.Template = ""
c.TemplateStack = ""
c.Vsys = ""
c.Extras = nil
c.Function = ""
c.Imports = []string{}
c.Unimports = []string{}
c.Path = ""
c.Elm = ""
c.Template = ""
c.TemplateStack = ""
c.Vsys = ""
c.Extras = nil
}

const (
ApiKeyXml = "<response><result><key>secret</key></result></response>"
LicenseXml = `<response><result><licenses>
ApiKeyXml = "<response><result><key>secret</key></result></response>"
LicenseXml = `<response><result><licenses>
<entry>
<feature>Feature 1</feature>
<description>License for feature</description>
Expand All @@ -216,7 +217,7 @@ const (
<expired>N/A</expired>
</entry>
</licenses></result></response>`
UserIdXml = `<response><result>
UserIdXml = `<response><result>
<entry ip="10.1.1.1">
<tag>
<member>one</member>
Expand All @@ -237,3 +238,23 @@ const (
</entry>
</result></response>`
)

func (c *MockClient) GetHighAvailabilityStatus() (*util.HighAvailability, error) {
ha := &util.HighAvailability{
Enable: "yes",
Group: util.HighAvailabilityGroup{
Mode: "Active-Passive",
Local: util.HighAvailabilityInfo{
State: "active",
StateSync: "Complete",
ManageIP: "211.73.95.22/28",
},
Peer: util.HighAvailabilityInfo{
State: "passive",
StateSync: "Complete",
ManageIP: "211.73.95.23/28",
},
},
}
return ha, nil
}

0 comments on commit 661e036

Please sign in to comment.