43 lines
1.4 KiB
Go
43 lines
1.4 KiB
Go
package dispatcher
|
|
|
|
import (
|
|
"bytes"
|
|
"context"
|
|
"net/http"
|
|
"net/http/httptest"
|
|
"testing"
|
|
|
|
"git.ipao.vip/rogee/go-sip/internal/configread"
|
|
"git.ipao.vip/rogee/go-sip/internal/contract"
|
|
)
|
|
|
|
func TestCorrelatedMalformedTaskHTTPReturnsRejectedControlWithoutApplying(t *testing.T) {
|
|
c, agent, s := newControlFixture(t)
|
|
invalid := []byte(`{"resource":"task_config","credentials":"PRIVATE-HTTP-CONTENT"}`)
|
|
server := httptest.NewServer(http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {
|
|
w.Header().Set("Content-Type", "application/json")
|
|
_, _ = w.Write(invalid)
|
|
}))
|
|
defer server.Close()
|
|
client, err := configread.NewClient(server.URL, c.DispatcherID, "fixture", server.Client())
|
|
if err != nil {
|
|
t.Fatal(err)
|
|
}
|
|
c.Client = client
|
|
original := controlBody(t, "bad-http-original", "resume", "")
|
|
if err := c.ProcessControl(context.Background(), original); err != nil {
|
|
t.Fatal(err)
|
|
}
|
|
if len(agent.calls) != 0 {
|
|
t.Fatal("malformed HTTP configuration reached Agent")
|
|
}
|
|
outbox, err := s.ListPendingOutbox(c.DispatcherID)
|
|
if err != nil || len(outbox) != 1 {
|
|
t.Fatalf("no correlated feedback: %+v %v", outbox, err)
|
|
}
|
|
body := outbox[0].Body
|
|
if contract.ValidateCurrent("mq", body) != nil || !bytes.Contains(body, []byte(`"status":"rejected"`)) || bytes.Contains(body, []byte("PRIVATE-HTTP-CONTENT")) {
|
|
t.Fatalf("unsafe or untruthful feedback: %s", body)
|
|
}
|
|
}
|