github.com/opentelekomcloud/gophertelekomcloud@v0.9.3/acceptance/openstack/apigw/v2/domain_test.go (about) 1 package v2 2 3 import ( 4 "testing" 5 6 golangsdk "github.com/opentelekomcloud/gophertelekomcloud" 7 "github.com/opentelekomcloud/gophertelekomcloud/acceptance/clients" 8 "github.com/opentelekomcloud/gophertelekomcloud/acceptance/tools" 9 "github.com/opentelekomcloud/gophertelekomcloud/openstack/apigw/v2/domain" 10 "github.com/opentelekomcloud/gophertelekomcloud/openstack/apigw/v2/group" 11 "github.com/opentelekomcloud/gophertelekomcloud/openstack/dns/v2/recordsets" 12 "github.com/opentelekomcloud/gophertelekomcloud/openstack/dns/v2/zones" 13 th "github.com/opentelekomcloud/gophertelekomcloud/testhelper" 14 ) 15 16 const ( 17 certificate = `<<EOT 18 -----BEGIN CERTIFICATE----- 19 MIIEMDCCAxigAwIBAgISBKmXWIa316BWEURqVnLroXwgMA0GCSqGSIb3DQEBCwUA 20 MDIxCzAJBgNVBAYTAlVTMRYwFAYDVQQKEw1MZXQncyBFbmNyeXB0MQswCQYDVQQD 21 EwJSMzAeFw0yNDAzMDExMDQ3MTRaFw0yNDA1MzAxMDQ3MTNaMCIxIDAeBgNVBAMT 22 F3JhbmNoZXItdGVzdC52YXh4Y2hhLmluMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcD 23 QgAE8ps2bDLATJ8Lyufn4VG8y0zxBK5AJ9p60bE9kTwftr3xKgE0mC25qWt0M1JY 24 z6opBmChuwGyx/M7L/L4dhp7ZaOCAhkwggIVMA4GA1UdDwEB/wQEAwIHgDAdBgNV 25 HSUEFjAUBggrBgEFBQcDAQYIKwYBBQUHAwIwDAYDVR0TAQH/BAIwADAdBgNVHQ4E 26 FgQU1Uw51mX15Fovr1jOqEItb7J90lgwHwYDVR0jBBgwFoAUFC6zF7dYVsuuUAlA 27 5h+vnYsUwsYwVQYIKwYBBQUHAQEESTBHMCEGCCsGAQUFBzABhhVodHRwOi8vcjMu 28 by5sZW5jci5vcmcwIgYIKwYBBQUHMAKGFmh0dHA6Ly9yMy5pLmxlbmNyLm9yZy8w 29 IgYDVR0RBBswGYIXcmFuY2hlci10ZXN0LnZheHhjaGEuaW4wEwYDVR0gBAwwCjAI 30 BgZngQwBAgEwggEEBgorBgEEAdZ5AgQCBIH1BIHyAPAAdQA7U3d1Pi25gE6LMFsG 31 /kA7Z9hPw/THvQANLXJv4frUFwAAAY351wROAAAEAwBGMEQCICGcAZhHtchF6tLQ 32 yolMSuU5ZQX9ZQ/Ld1Mqg3t1kHBpAiB5zPoxpc2Nvty+U+lNVx5QI6GqY8+oIOP2 33 +PNhpJleaAB3AO7N0GTV2xrOxVy3nbTNE6Iyh0Z8vOzew1FIWUZxH7WbAAABjfnX 34 BE4AAAQDAEgwRgIhALgFmbF4pFUBeEXD8sjaKB80f7ZYQ+WBXS9887VgBZvqAiEA 35 892Gdv3ZP8uR4ptXUOfXsR7JTCBCsFCAG3rk5e8vt5MwDQYJKoZIhvcNAQELBQAD 36 ggEBAEk8Gj7laMCp9mx/55lCELBCdSBtCBQKvAJrDKVZHZ35keeOcxWpzVsQrall 37 WgB5UuIspH/EBFHe7hrwcRXW4IkjXFS0mWz4GqwiQ7EBnk6ITiw4Zyj4ejLPNGKj 38 v2YSBwrBZqxXVqW981FvTGNhmcp45j2fEA37DwoSWU/wKWHpRqA0akIZOGoWwAfu 39 kRE9ZuPYykvnnl4qk25KWbIYAO4/65WjMqSkj5imOVA8yNtK3j3qnAcNwQL8VPr/ 40 qH2IF4KjanBUK76qT2wHKkj2GPMP/vcB9Nzg+mY+elax9XUhtpR0ZJVWDzE150Vo 41 ii8i6whnmTj+S/QRvhOqHmWU0Xk= 42 -----END CERTIFICATE----- 43 EOT 44 ` 45 46 privateKey = `<<EOT 47 -----BEGIN PRIVATE KEY----- 48 MIGHAgEAMBMGByqGSM49AgEGCCqGSM49AwEHBG0wawIBAQQgpR2jFW8FNrJCaSTf 49 evnYeTMA7AIS/DgMsmoIeD1CWDyhRANCAATymzZsMsBMnwvK5+fhUbzLTPEErkAn 50 2nrRsT2RPB+2vfEqATSYLbmpa3QzUljPqikGYKG7AbLH8zsv8vh2Gntl 51 -----END PRIVATE KEY----- 52 EOT 53 ` 54 ) 55 56 func TestDomainLifecycle(t *testing.T) { 57 apiGwID := clients.EnvOS.GetEnv("APIGW_ID") 58 59 if apiGwID == "" { 60 t.Skip("`apiGwID` need to be defined") 61 } 62 63 client, err := clients.NewAPIGWClient() 64 th.AssertNoErr(t, err) 65 66 t.Logf("Attempting to create API Gateway Group") 67 grp := CreateGroup(client, t, apiGwID) 68 t.Cleanup(func() { 69 t.Logf("Attempting to delete API Gateway Group") 70 th.AssertNoErr(t, group.Delete(client, apiGwID, grp.ID)) 71 }) 72 73 t.Logf("Attempting to create Public DNS zone with A record") 74 clientNetwork, err := clients.NewDNSV2Client() 75 th.AssertNoErr(t, err) 76 rs := CreateDns(clientNetwork, t) 77 t.Cleanup(func() { 78 t.Logf("Attempting to delete Public DNS zone") 79 _, err := zones.Delete(clientNetwork, rs.ZoneID).Extract() 80 th.AssertNoErr(t, err) 81 }) 82 83 createOpts := domain.CreateOpts{ 84 GatewayID: apiGwID, 85 GroupID: grp.ID, 86 UrlDomain: rs.Name, 87 } 88 t.Logf("Attempting to create API Gateway Domain") 89 dom, err := domain.Create(client, createOpts) 90 th.AssertNoErr(t, err) 91 t.Cleanup(func() { 92 t.Logf("Attempting to delete API Gateway Domain") 93 th.AssertNoErr(t, domain.Delete(client, domain.DeleteOpts{ 94 GatewayID: apiGwID, 95 GroupID: grp.ID, 96 DomainID: dom.ID, 97 })) 98 }) 99 100 updateOpts := domain.UpdateOpts{ 101 GatewayID: apiGwID, 102 GroupID: grp.ID, 103 DomainID: dom.ID, 104 MinSslVersion: "TLSv1.2", 105 } 106 t.Logf("Attempting to update API Gateway Domain") 107 domUpdated, err := domain.Update(client, updateOpts) 108 th.AssertNoErr(t, err) 109 th.AssertEquals(t, "TLSv1.2", domUpdated.MinSslVersion) 110 111 t.Logf("Attempting to asssign API Gateway Domain Certificate") 112 certName := tools.RandomString("acc_domain_certificate_", 5) 113 certOpts := domain.CreateCertOpts{ 114 GatewayID: apiGwID, 115 GroupID: grp.ID, 116 DomainID: dom.ID, 117 Content: certificate, 118 PrivateKey: privateKey, 119 Name: certName, 120 } 121 domCertificate, err := domain.AssignCertificate(client, certOpts) 122 th.AssertNoErr(t, err) 123 124 t.Cleanup(func() { 125 t.Logf("Attempting to delete API Gateway Domain Certificate") 126 th.AssertNoErr(t, domain.UnbindCertificate(client, domain.CertificateOpts{ 127 GatewayID: apiGwID, 128 GroupID: grp.ID, 129 DomainID: dom.ID, 130 CertificateID: domCertificate.ID, 131 })) 132 }) 133 134 t.Logf("Attempting to get API Gateway Domain Certificate") 135 getCert, err := domain.GetCertificate(client, domain.CertificateOpts{ 136 GatewayID: apiGwID, 137 GroupID: grp.ID, 138 DomainID: dom.ID, 139 CertificateID: domCertificate.ID, 140 }) 141 th.AssertNoErr(t, err) 142 th.AssertEquals(t, certName, getCert.Name) 143 } 144 145 func CreateDns(client *golangsdk.ServiceClient, t *testing.T) *recordsets.RecordSet { 146 zoneName := "otc-acc.test-gateway.com" 147 createOpts := zones.CreateOpts{ 148 Description: "api gw public zone", 149 Name: zoneName, 150 TTL: 300, 151 } 152 zone, err := zones.Create(client, createOpts).Extract() 153 th.AssertNoErr(t, err) 154 155 recordOpts := recordsets.CreateOpts{ 156 Name: "domain." + zone.Name, 157 Description: "record set api gw", 158 Records: []string{"10.0.0.20"}, 159 Type: "A", 160 } 161 recordSet, err := recordsets.Create(client, zone.ID, recordOpts).Extract() 162 th.AssertNoErr(t, err) 163 164 return recordSet 165 }