Skip to content
Snippets Groups Projects
Code owners
Assign users and groups as approvers for specific file changes. Learn more.
device_test.go 2.70 KiB
package nucleus

import (
	"reflect"
	"testing"

	"code.fbi.h-da.de/danet/gosdn/interfaces/southbound"
	"code.fbi.h-da.de/danet/gosdn/interfaces/transport"

	tpb "code.fbi.h-da.de/danet/api/go/gosdn/transport"

	"code.fbi.h-da.de/danet/yang-models/generated/openconfig"
	"github.com/google/uuid"
	"github.com/openconfig/ygot/ygot"
)

func TestDevice_Id(t *testing.T) {
	type fields struct {
		GoStruct  ygot.GoStruct
		SBI       southbound.SouthboundInterface
		Transport transport.Transport
		UUID      uuid.UUID
		Name      string
	}
	tests := []struct {
		name   string
		fields fields
		want   uuid.UUID
	}{
		{
			name: "default",
			fields: fields{
				UUID: did,
			},
			want: did,
		},
	}
	for _, tt := range tests {
		t.Run(tt.name, func(t *testing.T) {
			d := &CommonDevice{
				GoStruct:  tt.fields.GoStruct,
				sbi:       tt.fields.SBI,
				transport: tt.fields.Transport,
				UUID:      tt.fields.UUID,
				name:      tt.fields.Name,
			}
			if got := d.ID(); !reflect.DeepEqual(got, tt.want) {
				t.Errorf("ID() = %v, want %v", got, tt.want)
			}
		})
	}
}

func TestNewDevice(t *testing.T) {
	sbi := &OpenConfig{}
	type args struct {
		sbi  southbound.SouthboundInterface
		opts *tpb.TransportOption
		name string
	}
	tests := []struct {
		name    string
		args    args
		wantErr bool
	}{
		{
			name: "default",
			args: args{
				sbi: sbi,
				opts: &tpb.TransportOption{
					Address:  "test:///",
					Username: "test",
					Password: "test",
					TransportOption: &tpb.TransportOption_GnmiTransportOption{
						GnmiTransportOption: &tpb.GnmiTransportOption{
							Compression:     "",
							GrpcDialOptions: nil,
							Token:           "",
							Encoding:        0,
						},
					},
				},
				name: "MyDevice",
			},
		},
		{
			name: "invalid options",
			args: args{
				sbi: sbi,
				opts: &tpb.TransportOption{
					Address:  "test:///",
					Username: "test",
					Password: "test",
				},
				name: "MyDevice",
			},
			wantErr: true,
		},
	}
	for _, tt := range tests {
		t.Run(tt.name, func(t *testing.T) {
			resp, err := NewDevice(tt.args.name, uuid.Nil, tt.args.opts, tt.args.sbi)
			if (err != nil) != tt.wantErr {
				t.Errorf("NewDevice() error = %v, wantErr %v", err, tt.wantErr)
				return
			}
			if resp != nil {
				if reflect.TypeOf(resp.Model()) != reflect.TypeOf(&openconfig.Device{}) {
					t.Error("NewDevice() returned invalid GoStruct")
				}
				if reflect.TypeOf(resp.Transport()) != reflect.TypeOf(&Gnmi{}) {
					t.Error("NewDevice() returned invalid transport")
				}
				if reflect.TypeOf(resp.SBI()) != reflect.TypeOf(&OpenConfig{}) {
					t.Error("NewDevice() returned invalid GoStruct")
				}
				if resp.Name() != "MyDevice" {
					t.Error("NewDevice() returned wrong name")
				}
			}
		})
	}
}