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 }