github.com/opentelekomcloud/gophertelekomcloud@v0.9.3/acceptance/openstack/swr/v2/repositories_test.go (about)

     1  package v2
     2  
     3  import (
     4  	"fmt"
     5  	"testing"
     6  
     7  	"github.com/opentelekomcloud/gophertelekomcloud/acceptance/clients"
     8  	"github.com/opentelekomcloud/gophertelekomcloud/acceptance/tools"
     9  	"github.com/opentelekomcloud/gophertelekomcloud/openstack/common/pointerto"
    10  	"github.com/opentelekomcloud/gophertelekomcloud/openstack/swr/v2/repositories"
    11  	"github.com/opentelekomcloud/gophertelekomcloud/pagination"
    12  	th "github.com/opentelekomcloud/gophertelekomcloud/testhelper"
    13  )
    14  
    15  func TestRepositoryWorkflow(t *testing.T) {
    16  	client, err := clients.NewSwrV2Client()
    17  	th.AssertNoErr(t, err)
    18  
    19  	// setup org
    20  	orgName := fmt.Sprintf("repo-test-%d", tools.RandomInt(0, 0xf))
    21  	dep := dependencies{t: t, client: client}
    22  	dep.createOrganization(orgName)
    23  	t.Cleanup(func() {
    24  		dep.deleteOrganization(orgName)
    25  	})
    26  
    27  	repoName := "magic-test-repo"
    28  	createOpts := repositories.CreateOpts{
    29  		Namespace:   orgName,
    30  		Repository:  repoName,
    31  		Category:    "linux",
    32  		Description: "Test linux repository",
    33  		IsPublic:    true,
    34  	}
    35  	err = repositories.Create(client, createOpts)
    36  	th.AssertNoErr(t, err)
    37  
    38  	t.Cleanup(func() {
    39  		th.AssertNoErr(t, repositories.Delete(client, orgName, repoName))
    40  	})
    41  
    42  	repo, err := repositories.Get(client, orgName, repoName)
    43  	th.AssertNoErr(t, err)
    44  	th.AssertEquals(t, repoName, repo.Name)
    45  	th.AssertEquals(t, createOpts.Category, repo.Category)
    46  	th.AssertEquals(t, createOpts.IsPublic, repo.IsPublic)
    47  
    48  	found := false
    49  	err = repositories.List(client, repositories.ListOpts{
    50  		Offset: pointerto.Int(0),
    51  		Limit:  4,
    52  	}).EachPage(func(p pagination.Page) (bool, error) {
    53  		rps, err := repositories.ExtractRepositories(p)
    54  		if err != nil {
    55  			return false, err
    56  		}
    57  		for _, r := range rps {
    58  			if r.Name == repoName {
    59  				found = true
    60  				return false, nil
    61  			}
    62  		}
    63  		return true, nil
    64  	})
    65  	th.AssertNoErr(t, err)
    66  	th.AssertEquals(t, true, found)
    67  
    68  	pages, err := repositories.List(client, repositories.ListOpts{}).AllPages()
    69  	th.AssertNoErr(t, err)
    70  	_, err = repositories.ExtractRepositories(pages)
    71  	th.AssertNoErr(t, err)
    72  
    73  	updateOpts := repositories.UpdateOpts{
    74  		Namespace:   orgName,
    75  		Repository:  repoName,
    76  		Category:    "other",
    77  		Description: "Updated description",
    78  		IsPublic:    false,
    79  	}
    80  	err = repositories.Update(client, updateOpts)
    81  	th.AssertNoErr(t, err)
    82  
    83  	updated, err := repositories.Get(client, orgName, repoName)
    84  	th.AssertNoErr(t, err)
    85  	th.AssertEquals(t, updateOpts.Description, updated.Description)
    86  	th.AssertEquals(t, updateOpts.Category, updated.Category)
    87  	th.AssertEquals(t, updateOpts.IsPublic, updated.IsPublic)
    88  
    89  	listTagsOpts := repositories.ListTagsOpts{
    90  		Namespace:   orgName,
    91  		Repository:  repoName,
    92  		Limit:       500,
    93  		OrderColumn: "updated_at",
    94  		OrderType:   "asc",
    95  		Offset:      pointerto.Int(0),
    96  	}
    97  	listTags, err := repositories.ListTags(client, listTagsOpts)
    98  	th.AssertNoErr(t, err)
    99  	if len(listTags) > 0 {
   100  		th.AssertEquals(t, listTags[0].RepoId, repo.ID)
   101  	}
   102  
   103  }