github.com/vmware/govmomi@v0.51.0/session/manager_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 session
     6  
     7  import (
     8  	"context"
     9  	"net/url"
    10  	"testing"
    11  
    12  	"github.com/vmware/govmomi/test"
    13  	"github.com/vmware/govmomi/vim25"
    14  	"github.com/vmware/govmomi/vim25/soap"
    15  )
    16  
    17  func sessionClient(u *url.URL, t *testing.T) *Manager {
    18  	soapClient := soap.NewClient(u, true)
    19  	vimClient, err := vim25.NewClient(context.Background(), soapClient)
    20  	if err != nil {
    21  		t.Fatal(err)
    22  	}
    23  
    24  	return NewManager(vimClient)
    25  }
    26  
    27  func TestLogin(t *testing.T) {
    28  	u := test.URL()
    29  	if u == nil {
    30  		t.SkipNow()
    31  	}
    32  
    33  	session := sessionClient(u, t)
    34  	err := session.Login(context.Background(), u.User)
    35  	if err != nil {
    36  		t.Errorf("Expected no error, got %v", err)
    37  	}
    38  }
    39  
    40  func TestLogout(t *testing.T) {
    41  	u := test.URL()
    42  	if u == nil {
    43  		t.SkipNow()
    44  	}
    45  
    46  	session := sessionClient(u, t)
    47  	err := session.Login(context.Background(), u.User)
    48  	if err != nil {
    49  		t.Error("Login Error: ", err)
    50  	}
    51  
    52  	err = session.Logout(context.Background())
    53  	if err != nil {
    54  		t.Errorf("Expected nil, got %v", err)
    55  	}
    56  
    57  	err = session.Logout(context.Background())
    58  	if err == nil {
    59  		t.Errorf("Expected NotAuthenticated, got nil")
    60  	}
    61  }
    62  
    63  func TestSessionIsActive(t *testing.T) {
    64  	u := test.URL()
    65  	if u == nil {
    66  		t.SkipNow()
    67  	}
    68  
    69  	session := sessionClient(u, t)
    70  
    71  	// Skip test against ESXi -- SessionIsActive is not implemented
    72  	if session.client.ServiceContent.About.ApiType != "VirtualCenter" {
    73  		t.Skipf("Talking to %s instead of %s", session.client.ServiceContent.About.ApiType, "VirtualCenter")
    74  	}
    75  
    76  	err := session.Login(context.Background(), u.User)
    77  	if err != nil {
    78  		t.Error("Login Error: ", err)
    79  	}
    80  
    81  	active, err := session.SessionIsActive(context.Background())
    82  	if err != nil || !active {
    83  		t.Errorf("Expected %t, got %t", true, active)
    84  		t.Errorf("Expected nil, got %v", err)
    85  	}
    86  
    87  	session.Logout(context.Background())
    88  
    89  	active, err = session.SessionIsActive(context.Background())
    90  	if err == nil || active {
    91  		t.Errorf("Expected %t, got %t", false, active)
    92  		t.Errorf("Expected NotAuthenticated, got %v", err)
    93  	}
    94  }