mroe ui
This commit is contained in:
1 parent
d94e4cf6a8
commit
b2cd7d4b91
13 files changed
+542
-26
No files matched your search
@@ -608,6 +608,57 @@ func TestDomainAddInvalid(t *testing.T) {
|
||||
|
||||
// TestACLUpdateRoundTrip checks the clients editor's write path and that a
|
||||
// saved group is enforced immediately.
|
||||
// The console's "Test" button goes through the live pipeline, so this pins
|
||||
// the whole path: a name the fake upstream answers must come back with the
|
||||
// answer records, and one it does not must come back as a result (a 200 with
|
||||
// an rcode) rather than as a failed request.
|
||||
func TestDNSTestEndpoint(t *testing.T) {
|
||||
h := newHarness(t, nil)
|
||||
|
||||
code, body := h.do(http.MethodPost, "/api/dns/test", `{"name":"www.example.test","type":"A"}`)
|
||||
if code != http.StatusOK {
|
||||
t.Fatalf("POST /api/dns/test = %d: %s", code, body)
|
||||
}
|
||||
var hit struct {
|
||||
Name string `json:"name"`
|
||||
Type string `json:"type"`
|
||||
RCode string `json:"rcode"`
|
||||
Action string `json:"action"`
|
||||
Answers []string `json:"answers"`
|
||||
}
|
||||
if err := json.Unmarshal(body, &hit); err != nil {
|
||||
t.Fatal(err)
|
||||
}
|
||||
if hit.Name != "www.example.test." || hit.Type != "A" {
|
||||
t.Errorf("canonical name = %q type = %q", hit.Name, hit.Type)
|
||||
}
|
||||
if hit.RCode != "NOERROR" {
|
||||
t.Fatalf("rcode = %q, want NOERROR: %s", hit.RCode, body)
|
||||
}
|
||||
if len(hit.Answers) != 1 || !strings.Contains(hit.Answers[0], "203.0.113.7") {
|
||||
t.Errorf("answers = %v, want the upstream A record", hit.Answers)
|
||||
}
|
||||
|
||||
// A name the upstream does not hold is still a successful test.
|
||||
code, body = h.do(http.MethodPost, "/api/dns/test", `{"name":"nothing.example.com","type":"A"}`)
|
||||
if code != http.StatusOK {
|
||||
t.Fatalf("POST /api/dns/test (miss) = %d: %s", code, body)
|
||||
}
|
||||
if !strings.Contains(string(body), "NXDOMAIN") {
|
||||
t.Errorf("a miss is not reported as a result: %s", body)
|
||||
}
|
||||
|
||||
// An unknown record type is a bad request the caller can fix, so it comes
|
||||
// back as an error in the payload rather than as a bogus lookup.
|
||||
code, body = h.do(http.MethodPost, "/api/dns/test", `{"name":"www.example.test","type":"NOTATYPE"}`)
|
||||
if code != http.StatusOK {
|
||||
t.Fatalf("POST /api/dns/test (bad type) = %d: %s", code, body)
|
||||
}
|
||||
if !strings.Contains(string(body), "error") {
|
||||
t.Errorf("a bad type is not reported: %s", body)
|
||||
}
|
||||
}
|
||||
|
||||
func TestACLUpdateRoundTrip(t *testing.T) {
|
||||
h := newHarness(t, nil)
|
||||
// Write a deny group through the API.
|
||||
|
||||
Reference in new issue
Block a user