diff --git a/binding/richclient.go b/binding/richclient.go index ccca92cbe..f513e1139 100644 --- a/binding/richclient.go +++ b/binding/richclient.go @@ -22,6 +22,7 @@ func init() { type RichClient struct { // Resources APIs. Application Application + Archetype Archetype Bucket Bucket BusinessService BusinessService Dependency Dependency @@ -59,6 +60,9 @@ func New(baseUrl string) (r *RichClient) { Application: Application{ client: client, }, + Archetype: Archetype{ + client: client, + }, Bucket: Bucket{ client: client, }, diff --git a/test/api/archetype/api_test.go b/test/api/archetype/api_test.go new file mode 100644 index 000000000..ff0b6cea2 --- /dev/null +++ b/test/api/archetype/api_test.go @@ -0,0 +1,78 @@ +package archetype + +import ( + "testing" + + "github.com/konveyor/tackle2-hub/test/assert" +) + +func TestArchetypeCRUD(t *testing.T) { + for _, r := range Samples { + t.Run(r.Name, func(t *testing.T) { + // Create. + err := Archetype.Create(&r) + if err != nil { + t.Errorf(err.Error()) + } + + // Get. + got, err := Archetype.Get(r.ID) + if err != nil { + t.Errorf(err.Error()) + } + if assert.FlatEqual(got, r) { + t.Errorf("Different response error. Got %v, expected %v", got, r) + } + + // Update. + r.Name = "Updated " + r.Name + err = Archetype.Update(&r) + if err != nil { + t.Errorf(err.Error()) + } + + got, err = Archetype.Get(r.ID) + if err != nil { + t.Errorf(err.Error()) + } + if got.Name != r.Name { + t.Errorf("Different response error. Got %s, expected %s", got.Name, r.Name) + } + + // Delete. + err = Archetype.Delete(r.ID) + if err != nil { + t.Errorf(err.Error()) + } + + _, err = Archetype.Get(r.ID) + if err == nil { + t.Errorf("Resource exits, but should be deleted: %v", r) + } + }) + } +} + +func TestArchetypeList(t *testing.T) { + samples := Samples + + for name := range samples { + sample := samples[name] + assert.Must(t, Archetype.Create(&sample)) + samples[name] = sample + } + + got, err := Archetype.List() + if err != nil { + t.Errorf(err.Error()) + } + if assert.FlatEqual(got, &samples) { + t.Errorf("Different response error. Got %v, expected %v", got, samples) + } + + for _, r := range samples { + assert.Must(t, Archetype.Delete(r.ID)) + } +} + +// TODO(maufart): Add assessment POST&GET methods diff --git a/test/api/archetype/pkg.go b/test/api/archetype/pkg.go new file mode 100644 index 000000000..9aea4744d --- /dev/null +++ b/test/api/archetype/pkg.go @@ -0,0 +1,20 @@ +package archetype + +import ( + "github.com/konveyor/tackle2-hub/binding" + "github.com/konveyor/tackle2-hub/test/api/client" +) + +var ( + RichClient *binding.RichClient + Archetype binding.Archetype +) + + +func init() { + // Prepare RichClient and login to Hub API (configured from env variables). + RichClient = client.PrepareRichClient() + + // Shortcut for Archetype-related RichClient methods. + Archetype = RichClient.Archetype +} diff --git a/test/api/archetype/samples.go b/test/api/archetype/samples.go new file mode 100644 index 000000000..6832d8f6d --- /dev/null +++ b/test/api/archetype/samples.go @@ -0,0 +1,15 @@ +package archetype + +import ( + "github.com/konveyor/tackle2-hub/api" +) + +// Set of valid resources for tests and reuse. +var ( + MinimalArchetype = api.Archetype{ + Name: "Minimal Archetype", + Description: "Archetype minimal sample 1", + Comments: "Archetype comments", + } + Samples = []api.Archetype{MinimalArchetype} +)