github.com/gophercloud/gophercloud@v1.11.0/internal/acceptance/openstack/identity/v3/federation_test.go (about) 1 //go:build acceptance 2 // +build acceptance 3 4 package v3 5 6 import ( 7 "testing" 8 9 "github.com/gophercloud/gophercloud" 10 "github.com/gophercloud/gophercloud/internal/acceptance/clients" 11 "github.com/gophercloud/gophercloud/internal/acceptance/tools" 12 "github.com/gophercloud/gophercloud/openstack/identity/v3/extensions/federation" 13 th "github.com/gophercloud/gophercloud/testhelper" 14 ) 15 16 func TestListMappings(t *testing.T) { 17 client, err := clients.NewIdentityV3Client() 18 th.AssertNoErr(t, err) 19 20 allPages, err := federation.ListMappings(client).AllPages() 21 th.AssertNoErr(t, err) 22 23 mappings, err := federation.ExtractMappings(allPages) 24 th.AssertNoErr(t, err) 25 26 tools.PrintResource(t, mappings) 27 } 28 29 func TestMappingsCRUD(t *testing.T) { 30 mappingName := tools.RandomString("TESTMAPPING-", 8) 31 32 clients.RequireAdmin(t) 33 34 client, err := clients.NewIdentityV3Client() 35 th.AssertNoErr(t, err) 36 37 createOpts := federation.CreateMappingOpts{ 38 Rules: []federation.MappingRule{ 39 { 40 Local: []federation.RuleLocal{ 41 { 42 User: &federation.RuleUser{ 43 Name: "{0}", 44 }, 45 }, 46 { 47 Group: &federation.Group{ 48 ID: "0cd5e9", 49 }, 50 }, 51 }, 52 Remote: []federation.RuleRemote{ 53 { 54 Type: "UserName", 55 }, 56 { 57 Type: "orgPersonType", 58 NotAnyOf: []string{ 59 "Contractor", 60 "Guest", 61 }, 62 }, 63 }, 64 }, 65 }, 66 } 67 68 createdMapping, err := federation.CreateMapping(client, mappingName, createOpts).Extract() 69 th.AssertNoErr(t, err) 70 th.AssertEquals(t, len(createOpts.Rules), len(createdMapping.Rules)) 71 th.CheckDeepEquals(t, createOpts.Rules[0], createdMapping.Rules[0]) 72 73 mapping, err := federation.GetMapping(client, mappingName).Extract() 74 th.AssertNoErr(t, err) 75 th.AssertEquals(t, len(createOpts.Rules), len(mapping.Rules)) 76 th.CheckDeepEquals(t, createOpts.Rules[0], mapping.Rules[0]) 77 78 updateOpts := federation.UpdateMappingOpts{ 79 Rules: []federation.MappingRule{ 80 { 81 Local: []federation.RuleLocal{ 82 { 83 User: &federation.RuleUser{ 84 Name: "{0}", 85 }, 86 }, 87 { 88 Group: &federation.Group{ 89 ID: "0cd5e9", 90 }, 91 }, 92 }, 93 Remote: []federation.RuleRemote{ 94 { 95 Type: "UserName", 96 }, 97 { 98 Type: "orgPersonType", 99 AnyOneOf: []string{ 100 "Contractor", 101 "SubContractor", 102 }, 103 }, 104 }, 105 }, 106 }, 107 } 108 109 updatedMapping, err := federation.UpdateMapping(client, mappingName, updateOpts).Extract() 110 th.AssertNoErr(t, err) 111 th.AssertEquals(t, len(updateOpts.Rules), len(updatedMapping.Rules)) 112 th.CheckDeepEquals(t, updateOpts.Rules[0], updatedMapping.Rules[0]) 113 114 err = federation.DeleteMapping(client, mappingName).ExtractErr() 115 th.AssertNoErr(t, err) 116 117 resp := federation.GetMapping(client, mappingName) 118 th.AssertErr(t, resp.Err) 119 _, ok := resp.Err.(gophercloud.ErrDefault404) 120 th.AssertEquals(t, true, ok) 121 }