github.com/newrelic/newrelic-client-go@v1.1.0/pkg/alerts/synthetics_conditions_test.go (about)

     1  //go:build unit
     2  // +build unit
     3  
     4  package alerts
     5  
     6  import (
     7  	"fmt"
     8  	"net/http"
     9  	"testing"
    10  
    11  	"github.com/stretchr/testify/require"
    12  )
    13  
    14  var (
    15  	testPolicyID            = 12345
    16  	testSyntheticsCondition = SyntheticsCondition{
    17  		Name:       "Synthetics Condition",
    18  		RunbookURL: "https://example.com/runbook.md",
    19  		MonitorID:  "12345678-1234-1234-1234-1234567890ab",
    20  		Enabled:    true,
    21  	}
    22  	testSyntheticsConditionJson = `
    23  	{
    24  		"name": "Synthetics Condition",
    25  		"runbook_url": "https://example.com/runbook.md",
    26  		"monitor_id": "12345678-1234-1234-1234-1234567890ab",
    27  		"enabled": true
    28  	}`
    29  )
    30  
    31  func TestListSyntheticsConditions(t *testing.T) {
    32  	t.Parallel()
    33  	respJSON := fmt.Sprintf(`{ "synthetics_conditions": [%s] }`, testSyntheticsConditionJson)
    34  	alerts := newMockResponse(t, respJSON, http.StatusOK)
    35  
    36  	expected := []*SyntheticsCondition{&testSyntheticsCondition}
    37  	actual, err := alerts.ListSyntheticsConditions(testPolicyID)
    38  
    39  	require.NoError(t, err)
    40  	require.NotNil(t, actual)
    41  	require.Equal(t, expected, actual)
    42  }
    43  
    44  func TestGetSyntheticsCondition(t *testing.T) {
    45  	t.Parallel()
    46  	respJSON := fmt.Sprintf(`{ "synthetics_conditions": [%s] }`, testSyntheticsConditionJson)
    47  	alerts := newMockResponse(t, respJSON, http.StatusOK)
    48  
    49  	expected := &testSyntheticsCondition
    50  	actual, err := alerts.GetSyntheticsCondition(testPolicyID, testSyntheticsCondition.ID)
    51  
    52  	require.NoError(t, err)
    53  	require.NotNil(t, actual)
    54  	require.Equal(t, expected, actual)
    55  }
    56  
    57  func TestCreateSyntheticsCondition(t *testing.T) {
    58  	t.Parallel()
    59  	respJSON := fmt.Sprintf(`{ "synthetics_condition": %s }`, testSyntheticsConditionJson)
    60  	alerts := newMockResponse(t, respJSON, http.StatusOK)
    61  
    62  	actual, err := alerts.CreateSyntheticsCondition(testPolicyID, testSyntheticsCondition)
    63  
    64  	require.NoError(t, err)
    65  	require.NotNil(t, actual)
    66  	require.Equal(t, &testSyntheticsCondition, actual)
    67  }
    68  
    69  func TestUpdateSyntheticsCondition(t *testing.T) {
    70  	t.Parallel()
    71  	respJSON := fmt.Sprintf(`{ "synthetics_condition": %s }`, testSyntheticsConditionJson)
    72  	alerts := newMockResponse(t, respJSON, http.StatusOK)
    73  
    74  	actual, err := alerts.UpdateSyntheticsCondition(testSyntheticsCondition)
    75  
    76  	require.NoError(t, err)
    77  	require.NotNil(t, actual)
    78  	require.Equal(t, &testSyntheticsCondition, actual)
    79  }
    80  
    81  func TestDeleteSyntheticsCondition(t *testing.T) {
    82  	t.Parallel()
    83  	respJSON := fmt.Sprintf(`{ "synthetics_condition": %s }`, testSyntheticsConditionJson)
    84  	alerts := newMockResponse(t, respJSON, http.StatusOK)
    85  
    86  	actual, err := alerts.DeleteSyntheticsCondition(testSyntheticsCondition.ID)
    87  
    88  	require.NoError(t, err)
    89  	require.NotNil(t, actual)
    90  	require.Equal(t, &testSyntheticsCondition, actual)
    91  }