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  }