40 lines
1.2 KiB
Go
40 lines
1.2 KiB
Go
package httpserver
|
|
|
|
import (
|
|
"git.yuntuo.hk/k2safe/orbit/pulse/service"
|
|
"net/http/httptest"
|
|
"strings"
|
|
"testing"
|
|
)
|
|
|
|
func TestRecoveryJSONRequiresExplicitConfirmation(t *testing.T) {
|
|
for _, tc := range []struct {
|
|
body string
|
|
retry, valid bool
|
|
}{
|
|
{`{"execution_settled":true,"expected_revision":"9007199254740993"}`, false, true},
|
|
{`{"execution_settled":false}`, false, true},
|
|
{`{}`, false, false},
|
|
{`{"execution_settled":null}`, false, false},
|
|
{`{"ExecutionSettled":true}`, false, false},
|
|
{`{"execution_settled":true,"actor_id":"spoof"}`, false, false},
|
|
{`{"execution_settled":true,"execution_settled":false}`, false, false},
|
|
{`{"execution_settled":true,"expected_revision":9007199254740993}`, false, false},
|
|
{`{"safe_to_retry":true}`, true, true},
|
|
{`{"safe_to_retry":null}`, true, false},
|
|
{`{}`, true, false},
|
|
{`{"safe_to_retry":true,"owner_id":"spoof"}`, true, false},
|
|
} {
|
|
r := httptest.NewRequest("POST", "/v1/tasks/example:review", strings.NewReader(tc.body))
|
|
r.Header.Set("Content-Type", "application/json")
|
|
var in any = &service.ReviewInput{}
|
|
if tc.retry {
|
|
in = &service.ManualRetryInput{}
|
|
}
|
|
err := decodeBody(r, in)
|
|
if (err == nil) != tc.valid {
|
|
t.Fatalf("%s: %v", tc.body, err)
|
|
}
|
|
}
|
|
}
|