github.com/opentelekomcloud/gophertelekomcloud@v0.9.3/acceptance/openstack/identity/v3/fed_mappings_test.go (about)

     1  package v3
     2  
     3  import (
     4  	"os"
     5  	"testing"
     6  
     7  	"github.com/opentelekomcloud/gophertelekomcloud/acceptance/clients"
     8  	"github.com/opentelekomcloud/gophertelekomcloud/acceptance/tools"
     9  	"github.com/opentelekomcloud/gophertelekomcloud/openstack/identity/v3/federation/mappings"
    10  	th "github.com/opentelekomcloud/gophertelekomcloud/testhelper"
    11  )
    12  
    13  func TestFederatedMappingLifecycle(t *testing.T) {
    14  	if os.Getenv("OS_TENANT_ADMIN") == "" {
    15  		t.Skip("Policy doesn't allow iam:identityProviders:createMapping to be performed.")
    16  	}
    17  
    18  	client, err := clients.NewIdentityV3Client()
    19  	th.AssertNoErr(t, err)
    20  
    21  	createOpts := mappings.CreateOpts{
    22  		Rules: []mappings.RuleOpts{
    23  			{
    24  				Local: []mappings.LocalRuleOpts{
    25  					{
    26  						User: &mappings.UserOpts{
    27  							Name: "{0}",
    28  						},
    29  					},
    30  					{
    31  						Groups: "[\"admin\",\"manager\"]",
    32  					},
    33  				},
    34  				Remote: []mappings.RemoteRuleOpts{
    35  					{
    36  						Type: "uid",
    37  					},
    38  				},
    39  			},
    40  		},
    41  	}
    42  
    43  	mappingName := tools.RandomString("muh", 3)
    44  
    45  	mapping, err := mappings.Create(client, mappingName, createOpts).Extract()
    46  	th.AssertNoErr(t, err)
    47  
    48  	t.Cleanup(func() {
    49  		err = mappings.Delete(client, mapping.ID).ExtractErr()
    50  		th.AssertNoErr(t, err)
    51  	})
    52  
    53  	th.AssertEquals(t, mappingName, mapping.ID)
    54  
    55  	got, err := mappings.Get(client, mapping.ID).Extract()
    56  	th.AssertNoErr(t, err)
    57  	th.AssertDeepEquals(t, mapping, got)
    58  
    59  	pages, err := mappings.List(client).AllPages()
    60  	th.AssertNoErr(t, err)
    61  
    62  	mappingList, err := mappings.ExtractMappings(pages)
    63  	th.AssertNoErr(t, err)
    64  	found := false
    65  	for _, m := range mappingList {
    66  		if m.ID == mapping.ID {
    67  			found = true
    68  			break
    69  		}
    70  	}
    71  	if !found {
    72  		t.Fatalf("created mapping not found in the list")
    73  	}
    74  
    75  	updateOpts := mappings.UpdateOpts{
    76  		Rules: []mappings.RuleOpts{
    77  			{
    78  				Local: []mappings.LocalRuleOpts{
    79  					{
    80  						User: &mappings.UserOpts{
    81  							Name: "samltestid-{0}",
    82  						},
    83  					},
    84  				},
    85  				Remote: []mappings.RemoteRuleOpts{
    86  					{
    87  						Type: "uid",
    88  					},
    89  				},
    90  			},
    91  		},
    92  	}
    93  	updated, err := mappings.Update(client, mapping.ID, updateOpts).Extract()
    94  	th.AssertNoErr(t, err)
    95  
    96  	got2, err := mappings.Get(client, mapping.ID).Extract()
    97  	th.AssertNoErr(t, err)
    98  	th.AssertDeepEquals(t, updated, got2)
    99  }