github.com/opentelekomcloud/gophertelekomcloud@v0.9.3/acceptance/openstack/ims/members_test.go (about)

     1  package ims
     2  
     3  import (
     4  	"os"
     5  	"testing"
     6  
     7  	"github.com/opentelekomcloud/gophertelekomcloud/acceptance/clients"
     8  	"github.com/opentelekomcloud/gophertelekomcloud/openstack/image/v2/members"
     9  	th "github.com/opentelekomcloud/gophertelekomcloud/testhelper"
    10  )
    11  
    12  func TestImageServiceV2MemberLifecycle(t *testing.T) {
    13  	client, err := clients.NewIMSV2Client()
    14  	th.AssertNoErr(t, err)
    15  
    16  	shareProjectID := clients.EnvOS.GetEnv("PROJECT_ID_2")
    17  	privateImageID := clients.EnvOS.GetEnv("PRIVATE_IMAGE_ID")
    18  	if shareProjectID == "" || privateImageID == "" {
    19  		t.Skipf("OS_PROJECT_ID_2 or OS_PRIVATE_IMAGE_ID env vars are missing but IMS member test requires it")
    20  	}
    21  	createOpts := members.MemberOpts{
    22  		ImageId:  privateImageID,
    23  		MemberId: shareProjectID,
    24  	}
    25  
    26  	share, err := members.Create(client, createOpts)
    27  	t.Cleanup(func() {
    28  		th.AssertNoErr(t, members.Delete(client, members.MemberOpts{
    29  			ImageId:  privateImageID,
    30  			MemberId: shareProjectID,
    31  		}))
    32  	})
    33  
    34  	th.AssertNoErr(t, err)
    35  	th.AssertEquals(t, createOpts.MemberId, share.MemberId)
    36  	th.AssertEquals(t, "pending", share.Status)
    37  
    38  	newCloud := clients.EnvOS.GetEnv("CLOUD_2")
    39  	if newCloud != "" {
    40  		err = os.Setenv("OS_CLOUD", newCloud)
    41  		th.AssertNoErr(t, err)
    42  		_, err := clients.EnvOS.Cloud(newCloud)
    43  		th.AssertNoErr(t, err)
    44  		newClient, err := clients.NewIMSV2Client()
    45  		th.AssertNoErr(t, err)
    46  		updateOpts := members.UpdateOpts{
    47  			ImageId:  privateImageID,
    48  			MemberId: shareProjectID,
    49  			Status:   "accepted",
    50  			VaultID:  "",
    51  		}
    52  		_, err = members.Update(newClient, updateOpts)
    53  		th.AssertNoErr(t, err)
    54  
    55  		newShare, err := members.Get(client, createOpts)
    56  		th.AssertNoErr(t, err)
    57  		th.AssertEquals(t, updateOpts.Status, newShare.Status)
    58  	}
    59  }