github.com/vnpaycloud-console/gophercloud/v2@v2.0.5/openstack/identity/v3/projects/testing/requests_test.go (about) 1 package testing 2 3 import ( 4 "context" 5 "testing" 6 7 "github.com/vnpaycloud-console/gophercloud/v2/openstack/identity/v3/projects" 8 "github.com/vnpaycloud-console/gophercloud/v2/pagination" 9 th "github.com/vnpaycloud-console/gophercloud/v2/testhelper" 10 "github.com/vnpaycloud-console/gophercloud/v2/testhelper/client" 11 ) 12 13 func TestListAvailableProjects(t *testing.T) { 14 th.SetupHTTP() 15 defer th.TeardownHTTP() 16 HandleListAvailableProjectsSuccessfully(t) 17 18 count := 0 19 err := projects.ListAvailable(client.ServiceClient()).EachPage(context.TODO(), func(_ context.Context, page pagination.Page) (bool, error) { 20 count++ 21 22 actual, err := projects.ExtractProjects(page) 23 th.AssertNoErr(t, err) 24 25 th.CheckDeepEquals(t, ExpectedAvailableProjectsSlice, actual) 26 27 return true, nil 28 }) 29 th.AssertNoErr(t, err) 30 th.CheckEquals(t, count, 1) 31 } 32 33 func TestListProjects(t *testing.T) { 34 th.SetupHTTP() 35 defer th.TeardownHTTP() 36 HandleListProjectsSuccessfully(t) 37 38 count := 0 39 err := projects.List(client.ServiceClient(), nil).EachPage(context.TODO(), func(_ context.Context, page pagination.Page) (bool, error) { 40 count++ 41 42 actual, err := projects.ExtractProjects(page) 43 th.AssertNoErr(t, err) 44 45 th.CheckDeepEquals(t, ExpectedProjectSlice, actual) 46 47 return true, nil 48 }) 49 th.AssertNoErr(t, err) 50 th.CheckEquals(t, count, 1) 51 } 52 53 func TestListGroupsFiltersCheck(t *testing.T) { 54 type test struct { 55 filterName string 56 wantErr bool 57 } 58 tests := []test{ 59 {"foo__contains", false}, 60 {"foo", true}, 61 {"foo_contains", true}, 62 {"foo__", true}, 63 {"__foo", true}, 64 } 65 66 var listOpts projects.ListOpts 67 for _, _test := range tests { 68 listOpts.Filters = map[string]string{_test.filterName: "bar"} 69 _, err := listOpts.ToProjectListQuery() 70 71 if !_test.wantErr { 72 th.AssertNoErr(t, err) 73 } else { 74 switch _t := err.(type) { 75 case nil: 76 t.Fatal("error expected but got a nil") 77 case projects.InvalidListFilter: 78 default: 79 t.Fatalf("unexpected error type: [%T]", _t) 80 } 81 } 82 } 83 } 84 85 func TestGetProject(t *testing.T) { 86 th.SetupHTTP() 87 defer th.TeardownHTTP() 88 HandleGetProjectSuccessfully(t) 89 90 actual, err := projects.Get(context.TODO(), client.ServiceClient(), "1234").Extract() 91 th.AssertNoErr(t, err) 92 th.CheckDeepEquals(t, RedTeam, *actual) 93 } 94 95 func TestCreateProject(t *testing.T) { 96 th.SetupHTTP() 97 defer th.TeardownHTTP() 98 HandleCreateProjectSuccessfully(t) 99 100 createOpts := projects.CreateOpts{ 101 Name: "Red Team", 102 Description: "The team that is red", 103 Tags: []string{"Red", "Team"}, 104 Extra: map[string]any{"test": "old"}, 105 } 106 107 actual, err := projects.Create(context.TODO(), client.ServiceClient(), createOpts).Extract() 108 th.AssertNoErr(t, err) 109 th.CheckDeepEquals(t, RedTeam, *actual) 110 } 111 112 func TestDeleteProject(t *testing.T) { 113 th.SetupHTTP() 114 defer th.TeardownHTTP() 115 HandleDeleteProjectSuccessfully(t) 116 117 res := projects.Delete(context.TODO(), client.ServiceClient(), "1234") 118 th.AssertNoErr(t, res.Err) 119 } 120 121 func TestUpdateProject(t *testing.T) { 122 th.SetupHTTP() 123 defer th.TeardownHTTP() 124 HandleUpdateProjectSuccessfully(t) 125 126 var description = "The team that is bright red" 127 updateOpts := projects.UpdateOpts{ 128 Name: "Bright Red Team", 129 Description: &description, 130 Tags: &[]string{"Red"}, 131 Extra: map[string]any{"test": "new"}, 132 } 133 134 actual, err := projects.Update(context.TODO(), client.ServiceClient(), "1234", updateOpts).Extract() 135 th.AssertNoErr(t, err) 136 th.CheckDeepEquals(t, UpdatedRedTeam, *actual) 137 t.Log(projects.Update(context.TODO(), client.ServiceClient(), "1234", updateOpts)) 138 } 139 140 func TestListProjectTags(t *testing.T) { 141 th.SetupHTTP() 142 defer th.TeardownHTTP() 143 HandleListProjectTagsSuccessfully(t) 144 145 actual, err := projects.ListTags(context.TODO(), client.ServiceClient(), "966b3c7d36a24facaf20b7e458bf2192").Extract() 146 th.AssertNoErr(t, err) 147 th.CheckDeepEquals(t, ExpectedTags, *actual) 148 } 149 150 func TestModifyProjectTags(t *testing.T) { 151 th.SetupHTTP() 152 defer th.TeardownHTTP() 153 HandleModifyProjectTagsSuccessfully(t) 154 155 modifyOpts := projects.ModifyTagsOpts{ 156 Tags: []string{"foo", "bar"}, 157 } 158 actual, err := projects.ModifyTags(context.TODO(), client.ServiceClient(), "966b3c7d36a24facaf20b7e458bf2192", modifyOpts).Extract() 159 th.AssertNoErr(t, err) 160 th.CheckDeepEquals(t, ExpectedProjects, *actual) 161 } 162 163 func TestDeleteTags(t *testing.T) { 164 th.SetupHTTP() 165 defer th.TeardownHTTP() 166 HandleDeleteProjectTagsSuccessfully(t) 167 168 err := projects.DeleteTags(context.TODO(), client.ServiceClient(), "966b3c7d36a24facaf20b7e458bf2192").ExtractErr() 169 th.AssertNoErr(t, err) 170 }