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  }