mirror of
https://github.com/simon987/task_tracker.git
synced 2025-12-15 07:49:02 +00:00
Add basic go client
This commit is contained in:
@@ -3,6 +3,7 @@ package test
|
||||
import (
|
||||
"fmt"
|
||||
"github.com/simon987/task_tracker/api"
|
||||
"github.com/simon987/task_tracker/client"
|
||||
"testing"
|
||||
)
|
||||
|
||||
@@ -31,7 +32,7 @@ func TestAssignRateLimit(t *testing.T) {
|
||||
}, w)
|
||||
}
|
||||
|
||||
var lastResp TaskAR
|
||||
var lastResp client.AssignTaskResponse
|
||||
for i := 0; i < 3; i++ {
|
||||
lastResp = getTaskFromProject(project, w)
|
||||
}
|
||||
|
||||
@@ -3,6 +3,7 @@ package test
|
||||
import (
|
||||
"fmt"
|
||||
"github.com/simon987/task_tracker/api"
|
||||
"github.com/simon987/task_tracker/client"
|
||||
"github.com/simon987/task_tracker/storage"
|
||||
"math"
|
||||
"testing"
|
||||
@@ -925,19 +926,19 @@ func createTask(request api.SubmitTaskRequest, worker *storage.Worker) (ar api.J
|
||||
return
|
||||
}
|
||||
|
||||
func getTask(worker *storage.Worker) (ar TaskAR) {
|
||||
func getTask(worker *storage.Worker) (ar client.AssignTaskResponse) {
|
||||
r := Get("/task/get", worker, nil)
|
||||
UnmarshalResponse(r, &ar)
|
||||
return
|
||||
}
|
||||
|
||||
func getTaskFromProject(project int64, worker *storage.Worker) (ar TaskAR) {
|
||||
func getTaskFromProject(project int64, worker *storage.Worker) (ar client.AssignTaskResponse) {
|
||||
r := Get(fmt.Sprintf("/task/get/%d", project), worker, nil)
|
||||
UnmarshalResponse(r, &ar)
|
||||
return
|
||||
}
|
||||
|
||||
func releaseTask(request api.ReleaseTaskRequest, worker *storage.Worker) (ar ReleaseAR) {
|
||||
func releaseTask(request api.ReleaseTaskRequest, worker *storage.Worker) (ar client.ReleaseTaskResponse) {
|
||||
r := Post("/task/release", request, worker, nil)
|
||||
UnmarshalResponse(r, &ar)
|
||||
return
|
||||
|
||||
@@ -3,6 +3,7 @@ package test
|
||||
import (
|
||||
"fmt"
|
||||
"github.com/simon987/task_tracker/api"
|
||||
"github.com/simon987/task_tracker/client"
|
||||
"github.com/simon987/task_tracker/storage"
|
||||
"net/http"
|
||||
"testing"
|
||||
@@ -108,13 +109,13 @@ func TestInvalidAccessRequest(t *testing.T) {
|
||||
}
|
||||
}
|
||||
|
||||
func createWorker(req api.CreateWorkerRequest) (ar WorkerAR) {
|
||||
func createWorker(req api.CreateWorkerRequest) (ar client.CreateWorkerResponse) {
|
||||
r := Post("/worker/create", req, nil, nil)
|
||||
UnmarshalResponse(r, &ar)
|
||||
return
|
||||
}
|
||||
|
||||
func getWorker(id int64) (ar WorkerAR) {
|
||||
func getWorker(id int64) (ar client.CreateWorkerResponse) {
|
||||
r := Get(fmt.Sprintf("/worker/get/%d", id), nil, nil)
|
||||
UnmarshalResponse(r, &ar)
|
||||
return
|
||||
@@ -125,7 +126,7 @@ func genWid() *storage.Worker {
|
||||
return resp.Content.Worker
|
||||
}
|
||||
|
||||
func requestAccess(req api.CreateWorkerAccessRequest, w *storage.Worker) (ar WorkerAR) {
|
||||
func requestAccess(req api.CreateWorkerAccessRequest, w *storage.Worker) (ar client.CreateWorkerResponse) {
|
||||
r := Post(fmt.Sprintf("/project/request_access"), req, w, nil)
|
||||
UnmarshalResponse(r, &ar)
|
||||
return
|
||||
|
||||
105
test/client_test.go
Normal file
105
test/client_test.go
Normal file
@@ -0,0 +1,105 @@
|
||||
package test
|
||||
|
||||
import (
|
||||
"github.com/simon987/task_tracker/api"
|
||||
"github.com/simon987/task_tracker/client"
|
||||
"github.com/simon987/task_tracker/config"
|
||||
"github.com/simon987/task_tracker/storage"
|
||||
"testing"
|
||||
)
|
||||
|
||||
func TestClientMakeWorker(t *testing.T) {
|
||||
|
||||
c := client.New(config.Cfg.ServerAddr)
|
||||
w, err := c.MakeWorker("test")
|
||||
|
||||
if err != nil {
|
||||
t.Error()
|
||||
}
|
||||
|
||||
if w.Alias != "test" {
|
||||
t.Error()
|
||||
}
|
||||
}
|
||||
|
||||
func TestClientFetchTaskNoTaskAvailable(t *testing.T) {
|
||||
|
||||
c := client.New(config.Cfg.ServerAddr)
|
||||
w, _ := c.MakeWorker("test")
|
||||
c.SetWorker(w)
|
||||
|
||||
_, err := c.FetchTask(89988)
|
||||
|
||||
if err != nil {
|
||||
t.Error()
|
||||
}
|
||||
}
|
||||
|
||||
func TestClientFetchTask(t *testing.T) {
|
||||
|
||||
c := client.New(config.Cfg.ServerAddr)
|
||||
w, _ := c.MakeWorker("test")
|
||||
c.SetWorker(w)
|
||||
|
||||
createTask(api.SubmitTaskRequest{
|
||||
Project: testProject,
|
||||
Recipe: " ",
|
||||
}, testWorker)
|
||||
|
||||
requestAccess(api.CreateWorkerAccessRequest{
|
||||
Project: testProject,
|
||||
Submit: false,
|
||||
Assign: true,
|
||||
}, &storage.Worker{
|
||||
Secret: w.Secret,
|
||||
Id: w.Id,
|
||||
})
|
||||
acceptAccessRequest(testProject, w.Id, testAdminCtx)
|
||||
|
||||
resp, err := c.FetchTask(int(testProject))
|
||||
|
||||
if err != nil {
|
||||
t.Error()
|
||||
}
|
||||
|
||||
if resp.Content.Task == nil {
|
||||
t.Error()
|
||||
}
|
||||
}
|
||||
|
||||
func TestClientReleaseTask(t *testing.T) {
|
||||
|
||||
c := client.New(config.Cfg.ServerAddr)
|
||||
w, _ := c.MakeWorker("test")
|
||||
c.SetWorker(w)
|
||||
|
||||
createTask(api.SubmitTaskRequest{
|
||||
Project: testProject,
|
||||
Recipe: " ",
|
||||
}, testWorker)
|
||||
|
||||
requestAccess(api.CreateWorkerAccessRequest{
|
||||
Project: testProject,
|
||||
Submit: false,
|
||||
Assign: true,
|
||||
}, &storage.Worker{
|
||||
Secret: w.Secret,
|
||||
Id: w.Id,
|
||||
})
|
||||
acceptAccessRequest(testProject, w.Id, testAdminCtx)
|
||||
|
||||
fetchResp, _ := c.FetchTask(int(testProject))
|
||||
|
||||
resp, err := c.ReleaseTask(api.ReleaseTaskRequest{
|
||||
TaskId: fetchResp.Content.Task.Id,
|
||||
Result: storage.TR_OK,
|
||||
})
|
||||
|
||||
if err != nil {
|
||||
t.Error()
|
||||
}
|
||||
|
||||
if resp.Content.Updated != true {
|
||||
t.Error()
|
||||
}
|
||||
}
|
||||
@@ -94,14 +94,6 @@ func UnmarshalResponse(r *http.Response, result interface{}) {
|
||||
handleErr(err)
|
||||
}
|
||||
|
||||
type WorkerAR struct {
|
||||
Ok bool `json:"ok"`
|
||||
Message string `json:"message"`
|
||||
Content struct {
|
||||
Worker *storage.Worker `json:"worker"`
|
||||
} `json:"content"`
|
||||
}
|
||||
|
||||
type RegisterAR struct {
|
||||
Ok bool `json:"ok"`
|
||||
Message string `json:"message"`
|
||||
@@ -148,23 +140,6 @@ type ProjectListAR struct {
|
||||
} `json:"content"`
|
||||
}
|
||||
|
||||
type TaskAR struct {
|
||||
Ok bool `json:"ok"`
|
||||
Message string `json:"message"`
|
||||
RateLimitDelay float64 `json:"rate_limit_delay,omitempty"`
|
||||
Content struct {
|
||||
Task *storage.Task `json:"task"`
|
||||
} `json:"content"`
|
||||
}
|
||||
|
||||
type ReleaseAR struct {
|
||||
Ok bool `json:"ok"`
|
||||
Message string `json:"message"`
|
||||
Content struct {
|
||||
Updated bool `json:"updated"`
|
||||
} `json:"content"`
|
||||
}
|
||||
|
||||
type WebhookSecretAR struct {
|
||||
Ok bool `json:"ok"`
|
||||
Message string `json:"message"`
|
||||
|
||||
Reference in New Issue
Block a user