79 lines
		
	
	
		
			2.2 KiB
		
	
	
	
		
			Go
		
	
	
	
	
	
			
		
		
	
	
			79 lines
		
	
	
		
			2.2 KiB
		
	
	
	
		
			Go
		
	
	
	
	
	
| package twilio
 | |
| 
 | |
| import (
 | |
| 	"testing"
 | |
| 
 | |
| 	"github.com/TwiN/gatus/v5/alerting/alert"
 | |
| 	"github.com/TwiN/gatus/v5/core"
 | |
| )
 | |
| 
 | |
| func TestTwilioAlertProvider_IsValid(t *testing.T) {
 | |
| 	invalidProvider := AlertProvider{}
 | |
| 	if invalidProvider.IsValid() {
 | |
| 		t.Error("provider shouldn't have been valid")
 | |
| 	}
 | |
| 	validProvider := AlertProvider{
 | |
| 		SID:   "1",
 | |
| 		Token: "1",
 | |
| 		From:  "1",
 | |
| 		To:    "1",
 | |
| 	}
 | |
| 	if !validProvider.IsValid() {
 | |
| 		t.Error("provider should've been valid")
 | |
| 	}
 | |
| }
 | |
| 
 | |
| func TestAlertProvider_buildRequestBody(t *testing.T) {
 | |
| 	firstDescription := "description-1"
 | |
| 	secondDescription := "description-2"
 | |
| 	scenarios := []struct {
 | |
| 		Name         string
 | |
| 		Provider     AlertProvider
 | |
| 		Alert        alert.Alert
 | |
| 		Resolved     bool
 | |
| 		ExpectedBody string
 | |
| 	}{
 | |
| 		{
 | |
| 			Name:         "triggered",
 | |
| 			Provider:     AlertProvider{SID: "1", Token: "2", From: "3", To: "4"},
 | |
| 			Alert:        alert.Alert{Description: &firstDescription, SuccessThreshold: 5, FailureThreshold: 3},
 | |
| 			Resolved:     false,
 | |
| 			ExpectedBody: "Body=TRIGGERED%3A+endpoint-name+-+description-1&From=3&To=4",
 | |
| 		},
 | |
| 		{
 | |
| 			Name:         "resolved",
 | |
| 			Provider:     AlertProvider{SID: "1", Token: "2", From: "3", To: "4"},
 | |
| 			Alert:        alert.Alert{Description: &secondDescription, SuccessThreshold: 5, FailureThreshold: 3},
 | |
| 			Resolved:     true,
 | |
| 			ExpectedBody: "Body=RESOLVED%3A+endpoint-name+-+description-2&From=3&To=4",
 | |
| 		},
 | |
| 	}
 | |
| 	for _, scenario := range scenarios {
 | |
| 		t.Run(scenario.Name, func(t *testing.T) {
 | |
| 			body := scenario.Provider.buildRequestBody(
 | |
| 				&core.Endpoint{Name: "endpoint-name"},
 | |
| 				&scenario.Alert,
 | |
| 				&core.Result{
 | |
| 					ConditionResults: []*core.ConditionResult{
 | |
| 						{Condition: "[CONNECTED] == true", Success: scenario.Resolved},
 | |
| 						{Condition: "[STATUS] == 200", Success: scenario.Resolved},
 | |
| 					},
 | |
| 				},
 | |
| 				scenario.Resolved,
 | |
| 			)
 | |
| 			if body != scenario.ExpectedBody {
 | |
| 				t.Errorf("expected %s, got %s", scenario.ExpectedBody, body)
 | |
| 			}
 | |
| 		})
 | |
| 	}
 | |
| }
 | |
| 
 | |
| func TestAlertProvider_GetDefaultAlert(t *testing.T) {
 | |
| 	if (AlertProvider{DefaultAlert: &alert.Alert{}}).GetDefaultAlert() == nil {
 | |
| 		t.Error("expected default alert to be not nil")
 | |
| 	}
 | |
| 	if (AlertProvider{DefaultAlert: nil}).GetDefaultAlert() != nil {
 | |
| 		t.Error("expected default alert to be nil")
 | |
| 	}
 | |
| }
 |