github.com/vmware/go-vcloud-director/v2@v2.24.0/govcd/certificate_management_test.go (about) 1 //go:build functional || openapi || certificate || ALL 2 3 /* 4 * Copyright 2021 VMware, Inc. All rights reserved. Licensed under the Apache v2 License. 5 */ 6 7 package govcd 8 9 import ( 10 _ "embed" 11 "fmt" 12 13 "github.com/vmware/go-vcloud-director/v2/types/v56" 14 15 . "gopkg.in/check.v1" 16 ) 17 18 func (vcd *TestVCD) Test_CertificateInLibrary(check *C) { 19 if vcd.skipAdminTests { 20 check.Skip(fmt.Sprintf(TestRequiresSysAdminPrivileges, check.TestName())) 21 } 22 skipOpenApiEndpointTest(vcd, check, types.OpenApiPathVersion1_0_0+types.OpenApiEndpointSSLCertificateLibrary) 23 24 alias := "Test_CertificateInLibrary" 25 26 certificateConfig := &types.CertificateLibraryItem{ 27 Alias: alias, 28 Certificate: certificate, 29 } 30 createdCertificate, err := vcd.client.Client.AddCertificateToLibrary(certificateConfig) 31 check.Assert(err, IsNil) 32 openApiEndpoint, err := getEndpointByVersion(&vcd.client.Client) 33 check.Assert(err, IsNil) 34 check.Assert(openApiEndpoint, NotNil) 35 PrependToCleanupListOpenApi(createdCertificate.CertificateLibrary.Alias, check.TestName(), openApiEndpoint+createdCertificate.CertificateLibrary.Id) 36 37 check.Assert(createdCertificate, NotNil) 38 check.Assert(createdCertificate.CertificateLibrary.Id, Not(Equals), "") 39 check.Assert(createdCertificate.CertificateLibrary.Alias, Equals, alias) 40 check.Assert(createdCertificate.CertificateLibrary.Certificate, Equals, certificate) 41 42 fetchedCertificate, err := vcd.client.Client.GetCertificateFromLibraryById(createdCertificate.CertificateLibrary.Id) 43 check.Assert(err, IsNil) 44 check.Assert(fetchedCertificate, NotNil) 45 check.Assert(fetchedCertificate.CertificateLibrary.Alias, Equals, alias) 46 check.Assert(fetchedCertificate.CertificateLibrary.Certificate, Equals, certificate) 47 48 //test with private key and upload to org context 49 adminOrg, err := vcd.client.GetAdminOrgByName(vcd.org.Org.Name) 50 check.Assert(err, IsNil) 51 check.Assert(adminOrg, NotNil) 52 53 aliasForPrivateKey := "Test_CertificateInLibrary_private_key_test" 54 description := "generated by test" 55 56 privateKeyPassphrase := "test" 57 certificateWithPrivateKeyConfig := &types.CertificateLibraryItem{ 58 Alias: aliasForPrivateKey, 59 Certificate: certificate, 60 Description: description, 61 PrivateKey: privateKey, 62 PrivateKeyPassphrase: privateKeyPassphrase, 63 } 64 createdCertificateWithPrivateKeyConfig, err := adminOrg.AddCertificateToLibrary(certificateWithPrivateKeyConfig) 65 check.Assert(err, IsNil) 66 openApiEndpoint, err = getEndpointByVersion(&vcd.client.Client) 67 check.Assert(err, IsNil) 68 check.Assert(openApiEndpoint, NotNil) 69 PrependToCleanupListOpenApi(createdCertificateWithPrivateKeyConfig.CertificateLibrary.Alias, check.TestName(), 70 openApiEndpoint+createdCertificateWithPrivateKeyConfig.CertificateLibrary.Id) 71 72 check.Assert(createdCertificateWithPrivateKeyConfig, NotNil) 73 check.Assert(createdCertificateWithPrivateKeyConfig.CertificateLibrary.Id, Not(Equals), "") 74 check.Assert(createdCertificateWithPrivateKeyConfig.CertificateLibrary.Alias, Equals, aliasForPrivateKey) 75 check.Assert(createdCertificateWithPrivateKeyConfig.CertificateLibrary.Certificate, Equals, certificate) 76 77 fetchedCertificateWithPrivateKey, err := vcd.client.Client.GetCertificateFromLibraryById(createdCertificateWithPrivateKeyConfig.CertificateLibrary.Id) 78 check.Assert(err, IsNil) 79 check.Assert(fetchedCertificateWithPrivateKey, NotNil) 80 check.Assert(fetchedCertificateWithPrivateKey.CertificateLibrary.Alias, Equals, aliasForPrivateKey) 81 check.Assert(fetchedCertificateWithPrivateKey.CertificateLibrary.Certificate, Equals, certificate) 82 83 // check fetching all certificates 84 allOrgCertificates, err := adminOrg.GetAllCertificatesFromLibrary(nil) 85 check.Assert(err, IsNil) 86 check.Assert(allOrgCertificates, NotNil) 87 88 if testVerbose { 89 fmt.Printf("(org) how many certificates: %d\n", len(allOrgCertificates)) 90 for i, oneCertificate := range allOrgCertificates { 91 fmt.Printf("%3d %-20s %-53s %s\n", i, oneCertificate.CertificateLibrary.Alias, 92 oneCertificate.CertificateLibrary.Id, oneCertificate.CertificateLibrary.Description) 93 } 94 } 95 allExistingCertificates, err := adminOrg.client.GetAllCertificatesFromLibrary(nil) 96 check.Assert(err, IsNil) 97 check.Assert(allExistingCertificates, NotNil) 98 99 if testVerbose { 100 fmt.Printf("(global) how many certificates: %d\n", len(allExistingCertificates)) 101 for i, oneCertificate := range allExistingCertificates { 102 fmt.Printf("%3d %-20s %-53s %s\n", i, oneCertificate.CertificateLibrary.Alias, 103 oneCertificate.CertificateLibrary.Id, oneCertificate.CertificateLibrary.Description) 104 } 105 } 106 107 // check fetching certificate by Name 108 foundCertificate, err := vcd.client.Client.GetCertificateFromLibraryByName(alias) 109 check.Assert(err, IsNil) 110 check.Assert(foundCertificate, NotNil) 111 check.Assert(foundCertificate.CertificateLibrary.Alias, Equals, alias) 112 113 foundCertificateWithPrivateKey, err := adminOrg.GetCertificateFromLibraryByName(aliasForPrivateKey) 114 check.Assert(err, IsNil) 115 check.Assert(foundCertificateWithPrivateKey, NotNil) 116 check.Assert(foundCertificateWithPrivateKey.CertificateLibrary.Alias, Equals, aliasForPrivateKey) 117 118 // check update 119 newAlias := "newAlias" 120 newDescription := "newDescription" 121 foundCertificateWithPrivateKey.CertificateLibrary.Alias = newAlias 122 foundCertificateWithPrivateKey.CertificateLibrary.Description = newDescription 123 updateCertificateWithPrivateKey, err := foundCertificateWithPrivateKey.Update() 124 check.Assert(err, IsNil) 125 check.Assert(updateCertificateWithPrivateKey, NotNil) 126 check.Assert(updateCertificateWithPrivateKey.CertificateLibrary.Alias, Equals, newAlias) 127 check.Assert(updateCertificateWithPrivateKey.CertificateLibrary.Description, Equals, newDescription) 128 check.Assert(updateCertificateWithPrivateKey.CertificateLibrary.Id, Not(Equals), "") 129 check.Assert(updateCertificateWithPrivateKey.CertificateLibrary.Certificate, Equals, certificate) 130 check.Assert(updateCertificateWithPrivateKey.CertificateLibrary.PrivateKey, NotNil) // isn't returned 131 check.Assert(updateCertificateWithPrivateKey.CertificateLibrary.PrivateKeyPassphrase, NotNil) // isn't returned 132 133 foundCertificate.CertificateLibrary.Alias = newAlias 134 foundCertificate.CertificateLibrary.Description = newDescription 135 updateCertificate, err := foundCertificate.Update() 136 check.Assert(err, IsNil) 137 check.Assert(updateCertificate, NotNil) 138 check.Assert(updateCertificate.CertificateLibrary.Alias, Equals, newAlias) 139 check.Assert(updateCertificate.CertificateLibrary.Description, Equals, newDescription) 140 check.Assert(updateCertificate.CertificateLibrary.Id, Not(Equals), "") 141 check.Assert(updateCertificate.CertificateLibrary.Certificate, Equals, certificate) 142 check.Assert(updateCertificate.CertificateLibrary.PrivateKey, NotNil) // isn't returned 143 check.Assert(updateCertificate.CertificateLibrary.PrivateKeyPassphrase, NotNil) // isn't returned 144 145 //delete certificate 146 err = updateCertificateWithPrivateKey.Delete() 147 check.Assert(err, IsNil) 148 deletedCertificate, err := vcd.client.Client.GetCertificateFromLibraryById(updateCertificateWithPrivateKey.CertificateLibrary.Id) 149 check.Assert(ContainsNotFound(err), Equals, true) 150 check.Assert(deletedCertificate, IsNil) 151 152 err = updateCertificate.Delete() 153 check.Assert(err, IsNil) 154 deletedCertificate, err = adminOrg.client.GetCertificateFromLibraryById(updateCertificate.CertificateLibrary.Id) 155 check.Assert(ContainsNotFound(err), Equals, true) 156 check.Assert(deletedCertificate, IsNil) 157 158 } 159 160 func (vcd *TestVCD) Test_GetCertificateFromLibraryByName_ValidatesSymbolsInName(check *C) { 161 if vcd.skipAdminTests { 162 check.Skip(fmt.Sprintf(TestRequiresSysAdminPrivileges, check.TestName())) 163 } 164 skipOpenApiEndpointTest(vcd, check, types.OpenApiPathVersion1_0_0+types.OpenApiEndpointSSLCertificateLibrary) 165 166 // When alias contains commas, semicolons, stars, or plus signs, the encoding may reject by the API when we try to Query it 167 // Also, spaces present their own issues 168 for _, symbol := range []string{";", ",", "+", " ", "*", ":"} { 169 170 alias := fmt.Sprintf("Test%sCertificate%sIn%sLibrary", symbol, symbol, symbol) 171 172 certificateConfig := &types.CertificateLibraryItem{ 173 Alias: alias, 174 Certificate: certificate, 175 } 176 createdCertificate, err := vcd.client.Client.AddCertificateToLibrary(certificateConfig) 177 check.Assert(err, IsNil) 178 openApiEndpoint, err := getEndpointByVersion(&vcd.client.Client) 179 check.Assert(err, IsNil) 180 check.Assert(openApiEndpoint, NotNil) 181 PrependToCleanupListOpenApi(createdCertificate.CertificateLibrary.Alias, check.TestName(), 182 openApiEndpoint+createdCertificate.CertificateLibrary.Id) 183 184 check.Assert(createdCertificate, NotNil) 185 check.Assert(createdCertificate.CertificateLibrary.Id, Not(Equals), "") 186 check.Assert(createdCertificate.CertificateLibrary.Alias, Equals, alias) 187 check.Assert(createdCertificate.CertificateLibrary.Certificate, Equals, certificate) 188 189 foundCertificate, err := vcd.client.Client.GetCertificateFromLibraryByName(alias) 190 check.Assert(err, IsNil) 191 check.Assert(foundCertificate, NotNil) 192 check.Assert(foundCertificate.CertificateLibrary.Alias, Equals, alias) 193 194 err = foundCertificate.Delete() 195 check.Assert(err, IsNil) 196 } 197 }