-
Notifications
You must be signed in to change notification settings - Fork 32
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
- Loading branch information
1 parent
5dbd10d
commit e3f8fa9
Showing
6 changed files
with
322 additions
and
1 deletion.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,74 @@ | ||
package binding | ||
|
||
import ( | ||
"github.com/konveyor/tackle2-hub/api" | ||
) | ||
|
||
// | ||
// Tracker API. | ||
type Tracker struct { | ||
client *Client | ||
} | ||
|
||
// | ||
// Create a Tracker. | ||
func (h *Tracker) Create(r *api.Tracker) (err error) { | ||
err = h.client.Post(api.TrackersRoot, &r) | ||
return | ||
} | ||
|
||
// | ||
// Get a Tracker by ID. | ||
func (h *Tracker) Get(id uint) (r *api.Tracker, err error) { | ||
r = &api.Tracker{} | ||
path := Path(api.TrackerRoot).Inject(Params{api.ID: id}) | ||
err = h.client.Get(path, r) | ||
return | ||
} | ||
|
||
// | ||
// List Trackers. | ||
func (h *Tracker) List() (list []api.Tracker, err error) { | ||
list = []api.Tracker{} | ||
err = h.client.Get(api.TrackersRoot, &list) | ||
return | ||
} | ||
|
||
// | ||
// Update a Tracker. | ||
func (h *Tracker) Update(r *api.Tracker) (err error) { | ||
path := Path(api.TrackerRoot).Inject(Params{api.ID: r.ID}) | ||
err = h.client.Put(path, r) | ||
return | ||
} | ||
|
||
// | ||
// Delete a Tracker. | ||
func (h *Tracker) Delete(id uint) (err error) { | ||
err = h.client.Delete(Path(api.TrackerRoot).Inject(Params{api.ID: id})) | ||
return | ||
} | ||
|
||
// | ||
// List Projects. | ||
func (h *Tracker) ListProjects(id uint) (projectList []api.Project, err error) { | ||
projectList = []api.Project{} | ||
err = h.client.Get(Path(api.TrackerProjects).Inject(Params{api.ID: id}), &projectList) | ||
return | ||
} | ||
|
||
// | ||
// Get Projects. | ||
func (h *Tracker) GetProjects(id1 uint, id2 uint) (project api.Project, err error) { | ||
project = api.Project{} | ||
err = h.client.Get(Path(api.TrackerProject).Inject(Params{api.ID: id1, api.ID2: id2}), &project) | ||
return | ||
} | ||
|
||
// | ||
// List Project Issue Types. | ||
func (h *Tracker) ListProjectIssueTypes(id1 uint, id2 uint) (issueType []api.IssueType, err error) { | ||
issueType = []api.IssueType{} | ||
err = h.client.Get(Path(api.TrackerProjectIssueTypes).Inject(Params{api.ID: id1, api.ID2: id2}), &issueType) | ||
return | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,186 @@ | ||
package tracker | ||
|
||
import ( | ||
"strconv" | ||
"testing" | ||
|
||
"github.com/konveyor/tackle2-hub/api" | ||
"github.com/konveyor/tackle2-hub/test/assert" | ||
) | ||
|
||
func TestTrackerCRUD(t *testing.T) { | ||
for _, r := range Samples { | ||
t.Run("Tracker "+r.Kind+" CRUD", func(t *testing.T) { | ||
// Create a sample identity for the tracker. | ||
identity := api.Identity{ | ||
Kind: r.Kind, | ||
Name: r.Identity.Name, | ||
} | ||
assert.Must(t, Identity.Create(&identity)) | ||
// Copy the identity name to the tracker. | ||
r.Identity.ID = identity.ID | ||
|
||
// Create a tracker. | ||
assert.Must(t, Tracker.Create(&r)) | ||
|
||
// Get. | ||
got, err := Tracker.Get(r.ID) | ||
if err != nil { | ||
t.Errorf(err.Error()) | ||
} | ||
|
||
// Compare got values with expected values. | ||
AssertEqualTrackers(t, got, r) | ||
|
||
// Update Message. | ||
r.Message = "Updated Comment " + r.Message | ||
assert.Should(t, Tracker.Update(&r)) | ||
|
||
// Find Tracker and check its parameters with the got(On Updation). | ||
got, err = Tracker.Get(r.ID) | ||
if err != nil { | ||
t.Errorf(err.Error()) | ||
} | ||
|
||
// Check if the unchanged values remain same or not. | ||
AssertEqualTrackers(t, got, r) | ||
|
||
// Delete identity and tracker. | ||
assert.Must(t, Tracker.Delete(r.ID)) | ||
assert.Must(t, Identity.Delete(identity.ID)) | ||
|
||
// Check if the Tracker is present even after deletion or not. | ||
_, err = Tracker.Get(r.ID) | ||
if err == nil { | ||
t.Errorf("Resource exits, but should be deleted: %v", r) | ||
} | ||
}) | ||
|
||
t.Run("Tracker "+r.Kind+" Project", func(t *testing.T) { | ||
// Create a sample identity for the tracker. | ||
identity := api.Identity{ | ||
Kind: r.Kind, | ||
Name: r.Identity.Name, | ||
} | ||
assert.Must(t, Identity.Create(&identity)) | ||
|
||
// Copy the identity name to the tracker. | ||
r.Identity.ID = identity.ID | ||
|
||
// Create a tracker. | ||
assert.Must(t, Tracker.Create(&r)) | ||
|
||
projectsList, err := Tracker.ListProjects(r.ID) | ||
if err != nil { | ||
// check for type of service (maybe Connected?) | ||
// if API service then print Not connected to Jira and pass the test | ||
// else fail the test | ||
if r.Connected == false { | ||
t.Logf("Not connected to Jira(Thus passing the API Test)") | ||
} else { | ||
t.Errorf(err.Error()) | ||
} | ||
} | ||
|
||
for _, projects := range projectsList { | ||
|
||
// convert project Id's to uint. | ||
projectID, err := strconv.Atoi(projects.ID) | ||
if err != nil { | ||
t.Errorf(err.Error()) | ||
} | ||
|
||
_, err = Tracker.GetProjects(r.ID, uint(projectID)) | ||
if err != nil { | ||
if r.Connected == false { | ||
t.Logf("Not connected to Jira(Thus passing the API Test)") | ||
} else { | ||
t.Errorf(err.Error()) | ||
} | ||
} | ||
|
||
_, err = Tracker.ListProjectIssueTypes(r.ID, uint(projectID)) | ||
if err != nil { | ||
if r.Connected == false { | ||
t.Logf("Not connected to Jira(Thus passing the API Test)") | ||
} else { | ||
t.Errorf(err.Error()) | ||
} | ||
} | ||
} | ||
|
||
// Delete identity and tracker. | ||
assert.Must(t, Tracker.Delete(r.ID)) | ||
assert.Must(t, Identity.Delete(identity.ID)) | ||
|
||
// Check if the Tracker is present even after deletion or not. | ||
_, err = Tracker.Get(r.ID) | ||
if err == nil { | ||
t.Errorf("Resource exits, but should be deleted: %v", r) | ||
} | ||
}) | ||
} | ||
} | ||
|
||
func TestTrackerList(t *testing.T) { | ||
createdTrackers := []api.Tracker{} | ||
|
||
for _, r := range Samples { | ||
identity := api.Identity{ | ||
Kind: r.Kind, | ||
Name: r.Identity.Name, | ||
} | ||
assert.Must(t, Identity.Create(&identity)) | ||
r.Identity.ID = identity.ID | ||
|
||
assert.Must(t, Tracker.Create(&r)) | ||
createdTrackers = append(createdTrackers, r) | ||
} | ||
|
||
// List Trackers. | ||
got, err := Tracker.List() | ||
if err != nil { | ||
t.Errorf(err.Error()) | ||
} | ||
|
||
// check if created Trackers are in the list we got from Tracker.List() | ||
for _, createdTracker := range createdTrackers { | ||
found := false | ||
for _, retrievedTracker := range got { | ||
if assert.FlatEqual(createdTracker.ID, retrievedTracker.ID) { | ||
found = true | ||
break | ||
} | ||
} | ||
if !found { | ||
t.Errorf("Expected tracker not found in the list: %v", createdTracker) | ||
} | ||
} | ||
|
||
// Delete related trackers and identities. | ||
for _, tracker := range createdTrackers { | ||
assert.Must(t, Tracker.Delete(tracker.ID)) | ||
assert.Must(t, Identity.Delete(tracker.ID)) | ||
} | ||
} | ||
|
||
func AssertEqualTrackers(t *testing.T, got *api.Tracker, expected api.Tracker) { | ||
if got.Name != expected.Name { | ||
t.Errorf("Different Tracker Name Got %v, expected %v", got.Name, expected.Name) | ||
} | ||
if got.URL != expected.URL { | ||
t.Errorf("Different Url Got %v, expected %v", got.URL, expected.URL) | ||
} | ||
if got.Kind != expected.Kind { | ||
t.Errorf("Different Kind Got %v, expected %v", got.Kind, expected.Kind) | ||
} | ||
if got.Connected != expected.Connected { | ||
t.Errorf("Different Connected Got %v, expected %v", got.Connected, expected.Connected) | ||
} | ||
if got.Identity.Name != expected.Identity.Name { | ||
t.Errorf("Different Identity's Name Got %v, expected %v", got.Identity.Name, expected.Identity.Name) | ||
} | ||
if got.Insecure != expected.Insecure { | ||
t.Errorf("Different Insecure Got %v, expected %v", got.Insecure, expected.Kind) | ||
} | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,23 @@ | ||
package tracker | ||
|
||
import ( | ||
"github.com/konveyor/tackle2-hub/binding" | ||
"github.com/konveyor/tackle2-hub/test/api/client" | ||
) | ||
|
||
var ( | ||
RichClient *binding.RichClient | ||
Tracker binding.Tracker | ||
Identity binding.Identity | ||
) | ||
|
||
func init() { | ||
// Prepare RichClient and login to Hub API (configured from env variables). | ||
RichClient = client.PrepareRichClient() | ||
|
||
// Shortcut for Tracker-related RichClient methods. | ||
Tracker = RichClient.Tracker | ||
|
||
// Shortcut for Identity-related RichClient methods. | ||
Identity = RichClient.Identity | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,34 @@ | ||
package tracker | ||
|
||
import ( | ||
"time" | ||
|
||
"github.com/konveyor/tackle2-hub/api" | ||
) | ||
|
||
var Samples = []api.Tracker{ | ||
{ | ||
Name: "Sample tracker", | ||
URL: "https://konveyor.io/test/api/tracker", | ||
Kind: "jira-onprem", | ||
Message: "Description of tracker", | ||
LastUpdated: time.Date(time.Now().Year(), time.Now().Month(), time.Now().Day(), 0, 0, 0, 0, time.Local), | ||
Identity: api.Ref{ | ||
ID: 1, | ||
Name: "Sample Tracker Identity", | ||
}, | ||
Insecure: false, | ||
}, | ||
{ | ||
Name: "Sample tracker1", | ||
URL: "https://konveyor.io/test/api/tracker1", | ||
Kind: "jira-cloud", | ||
Message: "Description of tracker1", | ||
LastUpdated: time.Date(time.Now().Year(), time.Now().Month(), time.Now().Day(), 0, 0, 0, 0, time.Local), | ||
Identity: api.Ref{ | ||
ID: 2, | ||
Name: "Sample Tracker Identity1", | ||
}, | ||
Insecure: false, | ||
}, | ||
} |