github.com/vmware/govmomi@v0.51.0/cli/esx/response_test.go (about)

     1  // © Broadcom. All Rights Reserved.
     2  // The term “Broadcom” refers to Broadcom Inc. and/or its subsidiaries.
     3  // SPDX-License-Identifier: Apache-2.0
     4  
     5  package esx
     6  
     7  import (
     8  	"bytes"
     9  	"fmt"
    10  	"os"
    11  	"reflect"
    12  	"testing"
    13  
    14  	"github.com/vmware/govmomi/vim25/types"
    15  	"github.com/vmware/govmomi/vim25/xml"
    16  )
    17  
    18  func load(name string) *Response {
    19  	f, err := os.Open(name)
    20  	if err != nil {
    21  		panic(err)
    22  	}
    23  
    24  	defer f.Close()
    25  
    26  	var b Response
    27  
    28  	dec := xml.NewDecoder(f)
    29  	dec.TypeFunc = types.TypeFunc()
    30  	if err := dec.Decode(&b); err != nil {
    31  		panic(err)
    32  	}
    33  
    34  	return &b
    35  }
    36  
    37  func TestSystemHostnameGetResponse(t *testing.T) {
    38  	res := load("fixtures/system_hostname_get.xml")
    39  
    40  	expect := []Values{
    41  		{
    42  			"DomainName":               {"localdomain"},
    43  			"FullyQualifiedDomainName": {"esxbox.localdomain"},
    44  			"HostName":                 {"esxbox"},
    45  		},
    46  	}
    47  
    48  	if !reflect.DeepEqual(res.Values, expect) {
    49  		t.Errorf("%s != %s", res.Values, expect)
    50  	}
    51  }
    52  
    53  func TestNetworkVmList(t *testing.T) {
    54  	res := load("fixtures/network_vm_list.xml")
    55  
    56  	expect := []Values{
    57  		{
    58  			"Name":     {"foo"},
    59  			"Networks": {"VM Network", "dougm"},
    60  			"NumPorts": {"2"},
    61  			"WorldID":  {"98842"},
    62  		},
    63  		{
    64  			"Name":     {"bar"},
    65  			"Networks": {"VM Network"},
    66  			"NumPorts": {"1"},
    67  			"WorldID":  {"236235"},
    68  		},
    69  	}
    70  
    71  	if !reflect.DeepEqual(res.Values, expect) {
    72  		t.Errorf("%s != %s", res.Values, expect)
    73  	}
    74  }
    75  
    76  func TestNetworkVmPortList(t *testing.T) {
    77  	r := load("fixtures/network_vm_port_list.xml")
    78  
    79  	expect := []Values{
    80  		{
    81  			"IPAddress":    {"192.168.247.149"},
    82  			"MACAddress":   {"00:0c:29:12:b2:cf"},
    83  			"PortID":       {"33554438"},
    84  			"Portgroup":    {"VM Network"},
    85  			"TeamUplink":   {"vmnic0"},
    86  			"UplinkPortID": {"33554434"},
    87  			"vSwitch":      {"vSwitch0"},
    88  			"DVPortID":     {""},
    89  		},
    90  	}
    91  
    92  	if !reflect.DeepEqual(r.Values, expect) {
    93  		t.Errorf("%s != %s", r.Values, expect)
    94  	}
    95  }
    96  
    97  func TestMarshalResponse(t *testing.T) {
    98  	values := []Values{
    99  		{
   100  			"IPAddress":    {"192.168.247.149"},
   101  			"MACAddress":   {"00:0c:29:12:b2:cf"},
   102  			"PortID":       {"33554438"},
   103  			"Portgroup":    {"VM Network"},
   104  			"TeamUplink":   {"vmnic0"},
   105  			"UplinkPortID": {"33554434"},
   106  			"vSwitch":      {"vSwitch0"},
   107  			"DVPortID":     {""},
   108  			"Tags":         {"one", "two"},
   109  		},
   110  	}
   111  
   112  	{
   113  		res := &Response{
   114  			Values: values,
   115  		}
   116  
   117  		var out bytes.Buffer
   118  
   119  		fmt.Fprint(&out, xml.Header)
   120  		e := xml.NewEncoder(&out)
   121  		e.Indent("", "  ")
   122  		err := e.Encode(res)
   123  		if err != nil {
   124  			t.Fatal(err)
   125  		}
   126  		_ = e.Flush()
   127  
   128  		t.Log(out.String())
   129  	}
   130  
   131  	{
   132  		res := &Response{
   133  			String: "time",
   134  		}
   135  
   136  		var out bytes.Buffer
   137  
   138  		fmt.Fprint(&out, xml.Header)
   139  		e := xml.NewEncoder(&out)
   140  		e.Indent("", "  ")
   141  		err := e.Encode(res)
   142  		if err != nil {
   143  			t.Fatal(err)
   144  		}
   145  		_ = e.Flush()
   146  
   147  		t.Log(out.String())
   148  	}
   149  }