ipld-eth-server/vendor/github.com/aristanetworks/goarista/gnmi/operation_test.go

77 lines
1.9 KiB
Go
Raw Normal View History

// Copyright (c) 2017 Arista Networks, Inc.
// Use of this source code is governed by the Apache License 2.0
// that can be found in the COPYING file.
package gnmi
import (
"testing"
"github.com/aristanetworks/goarista/test"
pb "github.com/openconfig/gnmi/proto/gnmi"
)
func TestNewSetRequest(t *testing.T) {
pathFoo := &pb.Path{
Element: []string{"foo"},
Elem: []*pb.PathElem{&pb.PathElem{Name: "foo"}},
}
pathCli := &pb.Path{
Origin: "cli",
}
testCases := map[string]struct {
setOps []*Operation
exp pb.SetRequest
}{
"delete": {
setOps: []*Operation{&Operation{Type: "delete", Path: []string{"foo"}}},
exp: pb.SetRequest{Delete: []*pb.Path{pathFoo}},
},
"update": {
setOps: []*Operation{&Operation{Type: "update", Path: []string{"foo"}, Val: "true"}},
exp: pb.SetRequest{
Update: []*pb.Update{&pb.Update{
Path: pathFoo,
Val: &pb.TypedValue{
Value: &pb.TypedValue_JsonIetfVal{JsonIetfVal: []byte("true")}},
}},
},
},
"replace": {
setOps: []*Operation{&Operation{Type: "replace", Path: []string{"foo"}, Val: "true"}},
exp: pb.SetRequest{
Replace: []*pb.Update{&pb.Update{
Path: pathFoo,
Val: &pb.TypedValue{
Value: &pb.TypedValue_JsonIetfVal{JsonIetfVal: []byte("true")}},
}},
},
},
"cli-replace": {
setOps: []*Operation{&Operation{Type: "replace", Path: []string{"cli"},
Val: "hostname foo\nip routing"}},
exp: pb.SetRequest{
Replace: []*pb.Update{&pb.Update{
Path: pathCli,
Val: &pb.TypedValue{
Value: &pb.TypedValue_AsciiVal{AsciiVal: "hostname foo\nip routing"}},
}},
},
},
}
for name, tc := range testCases {
t.Run(name, func(t *testing.T) {
got, err := newSetRequest(tc.setOps)
if err != nil {
t.Fatal(err)
}
if diff := test.Diff(tc.exp, *got); diff != "" {
t.Errorf("unexpected diff: %s", diff)
}
})
}
}