github.com/opentelekomcloud/gophertelekomcloud@v0.9.3/acceptance/openstack/elb/v3/security_policy_test.go (about) 1 package v3 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/elb/v3/listeners" 10 "github.com/opentelekomcloud/gophertelekomcloud/openstack/elb/v3/security_policy" 11 th "github.com/opentelekomcloud/gophertelekomcloud/testhelper" 12 ) 13 14 func TestSystemSecurityPolicy(t *testing.T) { 15 client, err := clients.NewElbV3Client() 16 th.AssertNoErr(t, err) 17 18 systemPolicies, err := security_policy.ListSystemPolicies(client) 19 th.AssertNoErr(t, err) 20 21 tools.PrintResource(t, systemPolicies) 22 } 23 24 func TestSecurityPolicyList(t *testing.T) { 25 client, err := clients.NewElbV3Client() 26 th.AssertNoErr(t, err) 27 28 allPolicies, err := security_policy.List(client, security_policy.ListOpts{}) 29 th.AssertNoErr(t, err) 30 31 tools.PrintResource(t, allPolicies) 32 } 33 34 func TestSecurityPolicyLifecycle(t *testing.T) { 35 client, err := clients.NewElbV3Client() 36 th.AssertNoErr(t, err) 37 38 policyName := tools.RandomString("create-policy-", 3) 39 40 secPolicy := createSecurityPolicy(t, client, policyName) 41 tools.PrintResource(t, secPolicy) 42 43 defer deleteSecurityPolicy(t, client, secPolicy.SecurityPolicy.ID) 44 45 updatedName := tools.RandomString("update-policy-", 3) 46 47 updateOpts := security_policy.UpdateOpts{ 48 Name: updatedName, 49 } 50 51 putPolicy, err := security_policy.Update(client, updateOpts, secPolicy.SecurityPolicy.ID) 52 th.AssertNoErr(t, err) 53 th.AssertEquals(t, putPolicy.SecurityPolicy.Name, updatedName) 54 55 getPolicy, err := security_policy.Get(client, secPolicy.SecurityPolicy.ID) 56 th.AssertNoErr(t, err) 57 58 tools.PrintResource(t, getPolicy) 59 th.AssertEquals(t, getPolicy.SecurityPolicy.ID, secPolicy.SecurityPolicy.ID) 60 th.AssertEquals(t, getPolicy.SecurityPolicy.Name, putPolicy.SecurityPolicy.Name) 61 th.AssertEquals(t, getPolicy.SecurityPolicy.ProjectId, secPolicy.SecurityPolicy.ProjectId) 62 63 listOpts := security_policy.ListOpts{ 64 Name: []string{ 65 updatedName, 66 }, 67 } 68 69 listPolicy, err := security_policy.List(client, listOpts) 70 th.AssertNoErr(t, err) 71 tools.PrintResource(t, listPolicy) 72 } 73 74 func TestPolicyAssignment(t *testing.T) { 75 client, err := clients.NewElbV3Client() 76 th.AssertNoErr(t, err) 77 78 policyName := tools.RandomString("create-policy-", 3) 79 80 loadbalancerID := createLoadBalancer(t, client) 81 defer deleteLoadbalancer(t, client, loadbalancerID) 82 83 certificateID := createCertificate(t, client) 84 defer deleteCertificate(t, client, certificateID) 85 86 t.Run("AssignSecurityPolicyListenerCreation", func(t *testing.T) { 87 secPolicyID := createSecurityPolicy(t, client, policyName).SecurityPolicy.ID 88 defer deleteSecurityPolicy(t, client, secPolicyID) 89 90 listenerName := tools.RandomString("create-listener-", 3) 91 92 createOpts := listeners.CreateOpts{ 93 DefaultTlsContainerRef: certificateID, 94 Description: "some interesting description", 95 LoadbalancerID: loadbalancerID, 96 Name: listenerName, 97 Protocol: "HTTPS", 98 ProtocolPort: 443, 99 SecurityPolicy: secPolicyID, 100 } 101 102 listener, err := listeners.Create(client, createOpts).Extract() 103 defer func() { 104 t.Logf("Attempting to delete ELBv3 Listener: %s", listener.ID) 105 err := listeners.Delete(client, listener.ID).ExtractErr() 106 th.AssertNoErr(t, err) 107 t.Logf("Deleted ELBv3 Listener: %s", listener.ID) 108 }() 109 th.AssertNoErr(t, err) 110 th.AssertEquals(t, listener.SecurityPolicy, secPolicyID) 111 }) 112 113 t.Run("AssignSecurityPolicyListenerUpdate", func(t *testing.T) { 114 secPolicyUpdatedID := createSecurityPolicy(t, client, policyName).SecurityPolicy.ID 115 defer deleteSecurityPolicy(t, client, secPolicyUpdatedID) 116 listenerName := tools.RandomString("create-listener-", 3) 117 118 createOpts := listeners.CreateOpts{ 119 DefaultTlsContainerRef: certificateID, 120 Description: "some interesting description", 121 LoadbalancerID: loadbalancerID, 122 Name: listenerName, 123 Protocol: "HTTPS", 124 ProtocolPort: 443, 125 } 126 127 listener, err := listeners.Create(client, createOpts).Extract() 128 th.AssertNoErr(t, err) 129 defer func() { 130 t.Logf("Attempting to delete ELBv3 Listener: %s", listener.ID) 131 err := listeners.Delete(client, listener.ID).ExtractErr() 132 th.AssertNoErr(t, err) 133 t.Logf("Deleted ELBv3 Listener: %s", listener.ID) 134 }() 135 136 updateOpts := listeners.UpdateOpts{ 137 SecurityPolicy: secPolicyUpdatedID, 138 } 139 140 _ = listeners.Update(client, listener.ID, updateOpts) 141 142 updatedListener, err := listeners.Get(client, listener.ID).Extract() 143 th.AssertNoErr(t, err) 144 th.AssertEquals(t, updatedListener.SecurityPolicy, secPolicyUpdatedID) 145 }) 146 } 147 148 func deleteSecurityPolicy(t *testing.T, client *golangsdk.ServiceClient, secPolicyID string) { 149 t.Logf("Attempting to delete ELBv3 Security Policy: %s", secPolicyID) 150 err := security_policy.Delete(client, secPolicyID) 151 th.AssertNoErr(t, err) 152 t.Logf("Deleted ELBv3 security policy: %s", secPolicyID) 153 } 154 155 func createSecurityPolicy(t *testing.T, client *golangsdk.ServiceClient, policyName string) *security_policy.SecurityPolicy { 156 t.Logf("Attempting to create ELBv3 security policy") 157 secOpts := security_policy.CreateOpts{ 158 Name: policyName, 159 Description: "test policy for acceptance testing", 160 Protocols: []string{ 161 "TLSv1", 162 }, 163 Ciphers: []string{ 164 "AES256-SHA", 165 }, 166 } 167 168 secPolicy, err := security_policy.Create(client, secOpts) 169 th.AssertNoErr(t, err) 170 t.Logf("Created ELBv3 security policy: %s", secPolicy.SecurityPolicy.ID) 171 172 return secPolicy 173 }