Add health check for DNS

This commit is contained in:
cemturker
2020-11-18 00:55:31 +01:00
parent d1f24dbea4
commit bc914e12b0
298 changed files with 39755 additions and 7 deletions

View File

@ -72,6 +72,49 @@ func TestService_ValidateAndSetDefaultsWithNoConditions(t *testing.T) {
t.Fatal("Should've panicked because service didn't have at least 1 condition")
}
func TestService_ValidateAndSetDefaultsWithNoDNSQueryName(t *testing.T) {
defer func() { recover() }()
service := &Service{
Name: "",
URL: "http://example.com",
DNS: &DNS{
QueryType: "A",
QueryName: "",
},
}
service.ValidateAndSetDefaults()
t.Fatal("Should've panicked because service`s dns didn't have a query name, which is a mandatory field for dns")
}
func TestService_ValidateAndSetDefaultsWithInvalidDNSQueryType(t *testing.T) {
defer func() { recover() }()
service := &Service{
Name: "",
URL: "http://example.com",
DNS: &DNS{
QueryType: "B",
QueryName: "example.com",
},
}
service.ValidateAndSetDefaults()
t.Fatal("Should've panicked because service`s dns query type is invalid, it needs to be a valid query name like A, AAAA, CNAME...")
}
func TestService_ValidateAndSetDefaultsWithDNS(t *testing.T) {
service := &Service{
Name: "",
URL: "http://example.com",
DNS: &DNS{
QueryType: "A",
QueryName: "example.com",
},
}
service.ValidateAndSetDefaults()
if service.DNS.QueryName == "example.com." {
t.Error("Service.dns.query-name should be formatted with . suffix")
}
}
func TestService_GetAlertsTriggered(t *testing.T) {
condition := Condition("[STATUS] == 200")
service := Service{
@ -115,6 +158,30 @@ func TestIntegrationEvaluateHealth(t *testing.T) {
}
}
func TestIntegrationEvaluateHealthForDNS(t *testing.T) {
conditionSuccess := Condition("[DNS_RCODE] == NOERROR")
conditionBody := Condition("[BODY] == 93.184.216.34")
service := Service{
Name: "TwiNNatioN",
URL: "8.8.8.8",
DNS: &DNS{
QueryType: "A",
QueryName: "example.com.",
},
Conditions: []*Condition{&conditionSuccess, &conditionBody},
}
result := service.EvaluateHealth()
if !result.ConditionResults[0].Success {
t.Errorf("Conditions '%s' and %s should have been a success", conditionSuccess, conditionBody)
}
if !result.Connected {
t.Error("Because the connection has been established, result.Connected should've been true")
}
if !result.Success {
t.Error("Because all conditions passed, this should have been a success")
}
}
func TestIntegrationEvaluateHealthWithFailure(t *testing.T) {
condition := Condition("[STATUS] == 500")
service := Service{