github.com/vmware/go-vcloud-director/v2@v2.24.0/govcd/service_account_test.go (about)

     1  //go:build api || functional || ALL
     2  
     3  /*
     4   * Copyright 2023 VMware, Inc.  All rights reserved.  Licensed under the Apache v2 License.
     5   */
     6  
     7  package govcd
     8  
     9  import (
    10  	"github.com/vmware/go-vcloud-director/v2/types/v56"
    11  	. "gopkg.in/check.v1"
    12  )
    13  
    14  func (vcd *TestVCD) Test_ServiceAccount(check *C) {
    15  	isApiTokenEnabled, err := vcd.client.Client.VersionEqualOrGreater("10.4.0", 3)
    16  	check.Assert(err, IsNil)
    17  	if !isApiTokenEnabled {
    18  		check.Skip("This test requires VCD 10.4.0 or greater")
    19  	}
    20  
    21  	serviceAccount, err := vcd.client.CreateServiceAccount(
    22  		vcd.config.VCD.Org,
    23  		check.TestName(),
    24  		"urn:vcloud:role:vApp%20Author",
    25  		"12345678-1234-1234-1234-1234567890ab",
    26  		"",
    27  		"",
    28  	)
    29  	check.Assert(err, IsNil)
    30  	check.Assert(serviceAccount, NotNil)
    31  	check.Assert(serviceAccount.ServiceAccount.Status, Equals, "CREATED")
    32  
    33  	endpoint := types.OpenApiPathVersion1_0_0 + types.OpenApiEndpointServiceAccounts
    34  	check.Assert(err, IsNil)
    35  
    36  	AddToCleanupListOpenApi(check.TestName(), check.TestName(), endpoint+serviceAccount.ServiceAccount.ID)
    37  
    38  	err = serviceAccount.Authorize()
    39  	check.Assert(err, IsNil)
    40  
    41  	err = serviceAccount.Refresh()
    42  	check.Assert(err, IsNil)
    43  	check.Assert(serviceAccount.ServiceAccount.Status, Equals, "REQUESTED")
    44  
    45  	err = serviceAccount.Grant()
    46  	check.Assert(err, IsNil)
    47  
    48  	err = serviceAccount.Refresh()
    49  	check.Assert(err, IsNil)
    50  	check.Assert(serviceAccount.ServiceAccount.Status, Equals, "GRANTED")
    51  
    52  	_, err = serviceAccount.GetInitialApiToken()
    53  	check.Assert(err, IsNil)
    54  
    55  	err = serviceAccount.Refresh()
    56  	check.Assert(err, IsNil)
    57  	check.Assert(serviceAccount.ServiceAccount.Status, Equals, "ACTIVE")
    58  
    59  	err = serviceAccount.Revoke()
    60  	check.Assert(err, IsNil)
    61  
    62  	err = serviceAccount.Refresh()
    63  	check.Assert(err, IsNil)
    64  	check.Assert(serviceAccount.ServiceAccount.Status, Equals, "CREATED")
    65  
    66  	err = serviceAccount.Delete()
    67  	check.Assert(err, IsNil)
    68  
    69  	org, err := vcd.client.GetOrgByName(vcd.config.VCD.Org)
    70  	check.Assert(err, IsNil)
    71  	check.Assert(org, NotNil)
    72  
    73  	notFound, err := org.GetServiceAccountById(serviceAccount.ServiceAccount.ID)
    74  	check.Assert(err, NotNil)
    75  	check.Assert(notFound, IsNil)
    76  }
    77  
    78  func (vcd *TestVCD) Test_ServiceAccount_SysOrg(check *C) {
    79  	isApiTokenEnabled, err := vcd.client.Client.VersionEqualOrGreater("10.4.0", 3)
    80  	check.Assert(err, IsNil)
    81  	if !isApiTokenEnabled {
    82  		check.Skip("This test requires VCD 10.4.0 or greater")
    83  	}
    84  
    85  	if !vcd.org.client.IsSysAdmin {
    86  		check.Skip("This test requires System Administrator role")
    87  	}
    88  
    89  	serviceAccountSysOrg, err := vcd.client.CreateServiceAccount(
    90  		vcd.config.Provider.SysOrg,
    91  		check.TestName(),
    92  		"urn:vcloud:role:System%20Administrator",
    93  		"12345678-1234-1234-1234-1234567890ab",
    94  		"",
    95  		"",
    96  	)
    97  	check.Assert(err, IsNil)
    98  	check.Assert(serviceAccountSysOrg, NotNil)
    99  	check.Assert(serviceAccountSysOrg.ServiceAccount.Status, Equals, "CREATED")
   100  
   101  	endpoint := types.OpenApiPathVersion1_0_0 + types.OpenApiEndpointServiceAccounts
   102  	check.Assert(err, IsNil)
   103  
   104  	AddToCleanupListOpenApi(check.TestName(), check.TestName(), endpoint+serviceAccountSysOrg.ServiceAccount.ID)
   105  
   106  	err = serviceAccountSysOrg.Authorize()
   107  	check.Assert(err, IsNil)
   108  
   109  	err = serviceAccountSysOrg.Refresh()
   110  	check.Assert(err, IsNil)
   111  	check.Assert(serviceAccountSysOrg.ServiceAccount.Status, Equals, "REQUESTED")
   112  
   113  	err = serviceAccountSysOrg.Grant()
   114  	check.Assert(err, IsNil)
   115  
   116  	err = serviceAccountSysOrg.Refresh()
   117  	check.Assert(err, IsNil)
   118  	check.Assert(serviceAccountSysOrg.ServiceAccount.Status, Equals, "GRANTED")
   119  
   120  	_, err = serviceAccountSysOrg.GetInitialApiToken()
   121  	check.Assert(err, IsNil)
   122  
   123  	err = serviceAccountSysOrg.Refresh()
   124  	check.Assert(err, IsNil)
   125  	check.Assert(serviceAccountSysOrg.ServiceAccount.Status, Equals, "ACTIVE")
   126  
   127  	err = serviceAccountSysOrg.Revoke()
   128  	check.Assert(err, IsNil)
   129  
   130  	err = serviceAccountSysOrg.Refresh()
   131  	check.Assert(err, IsNil)
   132  	check.Assert(serviceAccountSysOrg.ServiceAccount.Status, Equals, "CREATED")
   133  
   134  	err = serviceAccountSysOrg.Delete()
   135  	check.Assert(err, IsNil)
   136  
   137  	sysorg, err := vcd.client.GetOrgByName(vcd.config.Provider.SysOrg)
   138  	check.Assert(err, IsNil)
   139  	check.Assert(sysorg, NotNil)
   140  
   141  	notFound, err := sysorg.GetServiceAccountById(serviceAccountSysOrg.ServiceAccount.ID)
   142  	check.Assert(err, NotNil)
   143  	check.Assert(notFound, IsNil)
   144  }