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 }