github.com/vnpaycloud-console/gophercloud/v2@v2.0.5/openstack/image/v2/members/testing/requests_test.go (about)

     1  package testing
     2  
     3  import (
     4  	"context"
     5  	"testing"
     6  	"time"
     7  
     8  	"github.com/vnpaycloud-console/gophercloud/v2/openstack/image/v2/members"
     9  	"github.com/vnpaycloud-console/gophercloud/v2/pagination"
    10  	th "github.com/vnpaycloud-console/gophercloud/v2/testhelper"
    11  	fakeclient "github.com/vnpaycloud-console/gophercloud/v2/testhelper/client"
    12  )
    13  
    14  const createdAtString = "2013-09-20T19:22:19Z"
    15  const updatedAtString = "2013-09-20T19:25:31Z"
    16  
    17  func TestCreateMemberSuccessfully(t *testing.T) {
    18  	th.SetupHTTP()
    19  	defer th.TeardownHTTP()
    20  
    21  	HandleCreateImageMemberSuccessfully(t)
    22  	im, err := members.Create(context.TODO(), fakeclient.ServiceClient(), "da3b75d9-3f4a-40e7-8a2c-bfab23927dea",
    23  		"8989447062e04a818baf9e073fd04fa7").Extract()
    24  	th.AssertNoErr(t, err)
    25  
    26  	createdAt, err := time.Parse(time.RFC3339, createdAtString)
    27  	th.AssertNoErr(t, err)
    28  
    29  	updatedAt, err := time.Parse(time.RFC3339, updatedAtString)
    30  	th.AssertNoErr(t, err)
    31  
    32  	th.AssertDeepEquals(t, members.Member{
    33  		CreatedAt: createdAt,
    34  		ImageID:   "da3b75d9-3f4a-40e7-8a2c-bfab23927dea",
    35  		MemberID:  "8989447062e04a818baf9e073fd04fa7",
    36  		Schema:    "/v2/schemas/member",
    37  		Status:    "pending",
    38  		UpdatedAt: updatedAt,
    39  	}, *im)
    40  
    41  }
    42  
    43  func TestMemberListSuccessfully(t *testing.T) {
    44  	th.SetupHTTP()
    45  	defer th.TeardownHTTP()
    46  
    47  	HandleImageMemberList(t)
    48  
    49  	pager := members.List(fakeclient.ServiceClient(), "da3b75d9-3f4a-40e7-8a2c-bfab23927dea")
    50  	t.Logf("Pager state %v", pager)
    51  	count, pages := 0, 0
    52  	err := pager.EachPage(context.TODO(), func(_ context.Context, page pagination.Page) (bool, error) {
    53  		pages++
    54  		t.Logf("Page %v", page)
    55  		members, err := members.ExtractMembers(page)
    56  		if err != nil {
    57  			return false, err
    58  		}
    59  
    60  		for _, i := range members {
    61  			t.Logf("%s\t%s\t%s\t%s\t\n", i.ImageID, i.MemberID, i.Status, i.Schema)
    62  			count++
    63  		}
    64  
    65  		return true, nil
    66  	})
    67  
    68  	th.AssertNoErr(t, err)
    69  	th.AssertEquals(t, 1, pages)
    70  	th.AssertEquals(t, 2, count)
    71  }
    72  
    73  func TestMemberListEmpty(t *testing.T) {
    74  	th.SetupHTTP()
    75  	defer th.TeardownHTTP()
    76  
    77  	HandleImageMemberEmptyList(t)
    78  
    79  	pager := members.List(fakeclient.ServiceClient(), "da3b75d9-3f4a-40e7-8a2c-bfab23927dea")
    80  	t.Logf("Pager state %v", pager)
    81  	count, pages := 0, 0
    82  	err := pager.EachPage(context.TODO(), func(_ context.Context, page pagination.Page) (bool, error) {
    83  		pages++
    84  		t.Logf("Page %v", page)
    85  		members, err := members.ExtractMembers(page)
    86  		if err != nil {
    87  			return false, err
    88  		}
    89  
    90  		for _, i := range members {
    91  			t.Logf("%s\t%s\t%s\t%s\t\n", i.ImageID, i.MemberID, i.Status, i.Schema)
    92  			count++
    93  		}
    94  
    95  		return true, nil
    96  	})
    97  
    98  	th.AssertNoErr(t, err)
    99  	th.AssertEquals(t, 0, pages)
   100  	th.AssertEquals(t, 0, count)
   101  }
   102  
   103  func TestShowMemberDetails(t *testing.T) {
   104  	th.SetupHTTP()
   105  	defer th.TeardownHTTP()
   106  
   107  	HandleImageMemberDetails(t)
   108  	md, err := members.Get(context.TODO(), fakeclient.ServiceClient(),
   109  		"da3b75d9-3f4a-40e7-8a2c-bfab23927dea",
   110  		"8989447062e04a818baf9e073fd04fa7").Extract()
   111  
   112  	th.AssertNoErr(t, err)
   113  	if md == nil {
   114  		t.Fatalf("Expected non-nil value for md")
   115  	}
   116  
   117  	createdAt, err := time.Parse(time.RFC3339, "2013-11-26T07:21:21Z")
   118  	th.AssertNoErr(t, err)
   119  
   120  	updatedAt, err := time.Parse(time.RFC3339, "2013-11-26T07:21:21Z")
   121  	th.AssertNoErr(t, err)
   122  
   123  	th.AssertDeepEquals(t, members.Member{
   124  		CreatedAt: createdAt,
   125  		ImageID:   "da3b75d9-3f4a-40e7-8a2c-bfab23927dea",
   126  		MemberID:  "8989447062e04a818baf9e073fd04fa7",
   127  		Schema:    "/v2/schemas/member",
   128  		Status:    "pending",
   129  		UpdatedAt: updatedAt,
   130  	}, *md)
   131  }
   132  
   133  func TestDeleteMember(t *testing.T) {
   134  	th.SetupHTTP()
   135  	defer th.TeardownHTTP()
   136  
   137  	counter := HandleImageMemberDeleteSuccessfully(t)
   138  
   139  	result := members.Delete(context.TODO(), fakeclient.ServiceClient(), "da3b75d9-3f4a-40e7-8a2c-bfab23927dea",
   140  		"8989447062e04a818baf9e073fd04fa7")
   141  	th.AssertEquals(t, 1, counter.Counter)
   142  	th.AssertNoErr(t, result.Err)
   143  }
   144  
   145  func TestMemberUpdateSuccessfully(t *testing.T) {
   146  	th.SetupHTTP()
   147  	defer th.TeardownHTTP()
   148  
   149  	counter := HandleImageMemberUpdate(t)
   150  	im, err := members.Update(context.TODO(), fakeclient.ServiceClient(), "da3b75d9-3f4a-40e7-8a2c-bfab23927dea",
   151  		"8989447062e04a818baf9e073fd04fa7",
   152  		members.UpdateOpts{
   153  			Status: "accepted",
   154  		}).Extract()
   155  	th.AssertEquals(t, 1, counter.Counter)
   156  	th.AssertNoErr(t, err)
   157  
   158  	createdAt, err := time.Parse(time.RFC3339, "2013-11-26T07:21:21Z")
   159  	th.AssertNoErr(t, err)
   160  
   161  	updatedAt, err := time.Parse(time.RFC3339, "2013-11-26T07:21:21Z")
   162  	th.AssertNoErr(t, err)
   163  
   164  	th.AssertDeepEquals(t, members.Member{
   165  		CreatedAt: createdAt,
   166  		ImageID:   "da3b75d9-3f4a-40e7-8a2c-bfab23927dea",
   167  		MemberID:  "8989447062e04a818baf9e073fd04fa7",
   168  		Schema:    "/v2/schemas/member",
   169  		Status:    "accepted",
   170  		UpdatedAt: updatedAt,
   171  	}, *im)
   172  
   173  }