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 }