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 }