mirror of
https://github.com/simon987/task_tracker.git
synced 2025-12-12 06:28:50 +00:00
Add project secret & bug fix
This commit is contained in:
@@ -4,6 +4,7 @@ import (
|
||||
"fmt"
|
||||
"github.com/simon987/task_tracker/api"
|
||||
"github.com/simon987/task_tracker/storage"
|
||||
"math"
|
||||
"testing"
|
||||
)
|
||||
|
||||
@@ -780,6 +781,42 @@ func TestTaskChain(t *testing.T) {
|
||||
}
|
||||
}
|
||||
|
||||
func TestTaskReleaseBigInt(t *testing.T) {
|
||||
|
||||
createTask(api.SubmitTaskRequest{
|
||||
Project: testProject,
|
||||
VerificationCount: 1,
|
||||
Recipe: "bigint",
|
||||
}, testWorker)
|
||||
createTask(api.SubmitTaskRequest{
|
||||
Project: testProject,
|
||||
VerificationCount: 1,
|
||||
Recipe: "smallint",
|
||||
}, testWorker)
|
||||
|
||||
tid := getTaskFromProject(testProject, testWorker).Content.Task.Id
|
||||
tid2 := getTaskFromProject(testProject, testWorker).Content.Task.Id
|
||||
|
||||
r := releaseTask(api.ReleaseTaskRequest{
|
||||
Verification: math.MaxInt64,
|
||||
Result: storage.TR_OK,
|
||||
TaskId: tid,
|
||||
}, testWorker)
|
||||
|
||||
r2 := releaseTask(api.ReleaseTaskRequest{
|
||||
Verification: math.MinInt64,
|
||||
Result: storage.TR_OK,
|
||||
TaskId: tid2,
|
||||
}, testWorker)
|
||||
|
||||
if r.Content.Updated != true {
|
||||
t.Error()
|
||||
}
|
||||
if r2.Content.Updated != true {
|
||||
t.Error()
|
||||
}
|
||||
}
|
||||
|
||||
func createTask(request api.SubmitTaskRequest, worker *storage.Worker) (ar api.JsonResponse) {
|
||||
r := Post("/task/submit", request, worker, nil)
|
||||
UnmarshalResponse(r, &ar)
|
||||
|
||||
@@ -3,6 +3,7 @@ package test
|
||||
import (
|
||||
"github.com/simon987/task_tracker/api"
|
||||
"github.com/simon987/task_tracker/config"
|
||||
"github.com/simon987/task_tracker/storage"
|
||||
"net/http"
|
||||
"testing"
|
||||
"time"
|
||||
@@ -12,6 +13,9 @@ var testApi *api.WebAPI
|
||||
var testAdminCtx *http.Client
|
||||
var testUserCtx *http.Client
|
||||
|
||||
var testProject int64
|
||||
var testWorker *storage.Worker
|
||||
|
||||
func TestMain(m *testing.M) {
|
||||
|
||||
config.SetupConfig()
|
||||
@@ -25,6 +29,19 @@ func TestMain(m *testing.M) {
|
||||
|
||||
testAdminCtx = getSessionCtx("testadmin", "testadmin", true)
|
||||
testUserCtx = getSessionCtx("testuser", "testuser", false)
|
||||
testProject = createProjectAsAdmin(api.CreateProjectRequest{
|
||||
Name: "generictestproject",
|
||||
Public: false,
|
||||
}).Content.Id
|
||||
testWorker = createWorker(api.CreateWorkerRequest{
|
||||
Alias: "generictestworker",
|
||||
}).Content.Worker
|
||||
requestAccess(api.CreateWorkerAccessRequest{
|
||||
Project: testProject,
|
||||
Assign: true,
|
||||
Submit: true,
|
||||
}, testWorker)
|
||||
acceptAccessRequest(testProject, testWorker.Id, testAdminCtx)
|
||||
|
||||
m.Run()
|
||||
}
|
||||
|
||||
@@ -1,8 +1,6 @@
|
||||
DROP TABLE IF EXISTS worker, project, task, log_entry,
|
||||
worker_access, manager, manager_has_role_on_project, project_monitoring_snapshot,
|
||||
worker_verifies_task;
|
||||
DROP TYPE IF EXISTS status;
|
||||
DROP TYPE IF EXISTS log_level;
|
||||
|
||||
CREATE TABLE worker
|
||||
(
|
||||
@@ -25,7 +23,8 @@ CREATE TABLE project
|
||||
clone_url TEXT NOT NULL,
|
||||
git_repo TEXT UNIQUE NOT NULL,
|
||||
version TEXT NOT NULL,
|
||||
motd TEXT NOT NULL
|
||||
motd TEXT NOT NULL,
|
||||
secret TEXT NOT NULL DEFAULT '{}'
|
||||
);
|
||||
|
||||
CREATE TABLE worker_access
|
||||
@@ -103,14 +102,18 @@ $$
|
||||
DECLARE
|
||||
chain INTEGER;
|
||||
BEGIN
|
||||
UPDATE project SET closed_task_count=closed_task_count + 1 WHERE id = OLD.project returning project.chain into chain;
|
||||
UPDATE worker SET closed_task_count=closed_task_count + 1 WHERE id = OLD.assignee;
|
||||
IF chain != 0 THEN
|
||||
INSERT into task (hash64, project, assignee, max_assign_time, assign_time, verification_count,
|
||||
priority, retries, max_retries, status, recipe)
|
||||
VALUES (old.hash64, chain, NULL, old.max_assign_time, NULL,
|
||||
old.verification_count, old.priority, 0, old.max_retries, 1,
|
||||
old.recipe);
|
||||
if OLD.assignee IS NOT NULL THEN
|
||||
UPDATE project
|
||||
SET closed_task_count=closed_task_count + 1
|
||||
WHERE id = OLD.project returning project.chain into chain;
|
||||
UPDATE worker SET closed_task_count=closed_task_count + 1 WHERE id = OLD.assignee;
|
||||
IF chain != 0 THEN
|
||||
INSERT into task (hash64, project, assignee, max_assign_time, assign_time, verification_count,
|
||||
priority, retries, max_retries, status, recipe)
|
||||
VALUES (old.hash64, chain, NULL, old.max_assign_time, NULL,
|
||||
old.verification_count, old.priority, 0, old.max_retries, 1,
|
||||
old.recipe);
|
||||
end if;
|
||||
end if;
|
||||
RETURN OLD;
|
||||
END;
|
||||
@@ -136,7 +139,7 @@ CREATE TRIGGER on_manager_insert
|
||||
FOR EACH ROW
|
||||
EXECUTE PROCEDURE on_manager_insert();
|
||||
|
||||
CREATE OR REPLACE FUNCTION release_task_ok(wid INT, tid INT, ver INT) RETURNS BOOLEAN AS
|
||||
CREATE OR REPLACE FUNCTION release_task_ok(wid INT, tid INT, ver BIGINT) RETURNS BOOLEAN AS
|
||||
$$
|
||||
DECLARE
|
||||
res INT = NULL;
|
||||
|
||||
Reference in New Issue
Block a user