Error 404 Not Found while unit testing govmomi vapi rest client using simulator

244 Views Asked by At

I'm working with vSphere govmomi client to interact with vCenter.

I'm having problem in unit testing the govmomi vapi/rest client. The sample code for creating rest client is:

var insecure bool = true
type RestClient struct {
 url *url.URL
 restClient *rest.Client
}

func (c *RestClient) GetRestClient(ctx context.Context) (*rest.Client, error){
 soapClient := soap.NewClient(c.url, insecure)
 vim25Client, err := vim25.NewClient(ctx, soapClient)
 if err != nil {
  return nil, err
 }
 c.restClient = rest.NewClient(vim25Client)
 err = c.restClient.Login(ctx, c.url.User)
 if err != nil {
  return nil, err
 }
 return c.restClient, nil
}

To write their unit tests, I'm using govmomi simulator and vapi/simulator.

import(
 "context"
 "testing"
 "net/url"
 "github.com/vmware/govmomi/simulator"
 _ "github.com/vmware/govmomi/vapi/simulator"
)

func TestGetRestClient(t *testing.T){
 ctx := context.Background()
 model := simulator.ESX()
 defer model.Remove()
 err := model.Create()
 if err != nil {
  t.Fatal(err)
 }
 server := model.Service.NewServer()
 defer server.Close()
 url := server.URL
 var client RestClient = RestClient{url: url,}
 _, err := client.GetRestClient(ctx)
 if err != nil {
  t.Errorf("err = %v", err)
  return
 }
}

The testcase should pass, but it returns an error

err= POST "http://127.0.0.1:34691/rest/com/vmware/cis/session: 404 Not Found

I'm not able to understand what I'm missing or doing wrong in unit testing. I've done similar test for creating a govmomi client using simulator and it never came across this error.

NOTE: This rest client is created successfully as I'm able to interact with vCenter using this client.

Thanks in advance!

0

There are 0 best solutions below