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

     1  //go:build unit
     2  // +build unit
     3  
     4  package alerts
     5  
     6  import (
     7  	"net/http"
     8  	"testing"
     9  
    10  	"github.com/stretchr/testify/require"
    11  )
    12  
    13  var (
    14  	testMultiLocationSyntheticsConditionPolicyID = 111111
    15  	testMultiLocationSyntheticsConditionsJSON    = `
    16  		{
    17  			"location_failure_conditions": [
    18  				{
    19  					"id": 11425367,
    20  					"name": "Zach is testing",
    21  					"enabled": true,
    22  					"entities": [
    23  						"0d3d7d23-9d7e-44ba-ac74-242ce325161c",
    24  						"767958fe-f47a-49ac-88e3-9fbd0d85b2a0",
    25  						"5d968daa-a226-45b9-b877-1d6601e599d8"
    26  					],
    27  					"terms": [
    28  						{
    29  							"priority": "warning",
    30  							"threshold": 1
    31  						},
    32  						{
    33  							"priority": "critical",
    34  							"threshold": 2
    35  						}
    36  					],
    37  					"violation_time_limit_seconds": 3600
    38  				}
    39  			]
    40  		}
    41  	`
    42  
    43  	testMultiLocationSyntheticsConditionJSON = `
    44  		{
    45  			"location_failure_condition": {
    46  				"id": 11425367,
    47  				"name": "Zach is testing",
    48  				"enabled": true,
    49  				"entities": [
    50  					"0d3d7d23-9d7e-44ba-ac74-242ce325161c",
    51  					"767958fe-f47a-49ac-88e3-9fbd0d85b2a0",
    52  					"5d968daa-a226-45b9-b877-1d6601e599d8"
    53  				],
    54  				"terms": [
    55  					{
    56  						"priority": "warning",
    57  						"threshold": 1
    58  					},
    59  					{
    60  						"priority": "critical",
    61  						"threshold": 2
    62  					}
    63  				],
    64  				"violation_time_limit_seconds": 3600
    65  			}
    66  		}
    67  	`
    68  
    69  	testMultiLocationSyntheticsCondition = MultiLocationSyntheticsCondition{
    70  		ID:      11425367,
    71  		Name:    "Zach is testing",
    72  		Enabled: true,
    73  		Entities: []string{
    74  			"0d3d7d23-9d7e-44ba-ac74-242ce325161c",
    75  			"767958fe-f47a-49ac-88e3-9fbd0d85b2a0",
    76  			"5d968daa-a226-45b9-b877-1d6601e599d8",
    77  		},
    78  		Terms: []MultiLocationSyntheticsConditionTerm{
    79  			{"warning", 1},
    80  			{"critical", 2},
    81  		},
    82  		ViolationTimeLimitSeconds: 3600,
    83  	}
    84  
    85  	testCreateMultiLocationSyntheticsCondition = MultiLocationSyntheticsCondition{
    86  		Name:    "Zach is testing",
    87  		Enabled: true,
    88  		Entities: []string{
    89  			"0d3d7d23-9d7e-44ba-ac74-242ce325161c",
    90  			"767958fe-f47a-49ac-88e3-9fbd0d85b2a0",
    91  			"5d968daa-a226-45b9-b877-1d6601e599d8",
    92  		},
    93  		Terms: []MultiLocationSyntheticsConditionTerm{
    94  			{"warning", 1},
    95  			{"critical", 2},
    96  		},
    97  		ViolationTimeLimitSeconds: 3600,
    98  	}
    99  )
   100  
   101  func TestListMultiLocationSyntheticsConditions(t *testing.T) {
   102  	t.Parallel()
   103  	respJSON := testMultiLocationSyntheticsConditionsJSON
   104  	alerts := newMockResponse(t, respJSON, http.StatusOK)
   105  
   106  	expected := []*MultiLocationSyntheticsCondition{&testMultiLocationSyntheticsCondition}
   107  
   108  	actual, err := alerts.ListMultiLocationSyntheticsConditions(testMultiLocationSyntheticsConditionPolicyID)
   109  
   110  	require.NoError(t, err)
   111  	require.NotNil(t, actual)
   112  	require.Equal(t, expected, actual)
   113  }
   114  
   115  func TestCreateMultiLocationSyntheticsCondition(t *testing.T) {
   116  	t.Parallel()
   117  	respJSON := testMultiLocationSyntheticsConditionJSON
   118  	alerts := newMockResponse(t, respJSON, http.StatusOK)
   119  
   120  	expected := &testMultiLocationSyntheticsCondition
   121  
   122  	actual, err := alerts.CreateMultiLocationSyntheticsCondition(testCreateMultiLocationSyntheticsCondition, testMultiLocationSyntheticsConditionPolicyID)
   123  
   124  	require.NoError(t, err)
   125  	require.NotNil(t, actual)
   126  	require.Equal(t, expected, actual)
   127  }
   128  
   129  func TestUpdateMultiLocationSyntheticsCondition(t *testing.T) {
   130  	t.Parallel()
   131  	respJSON := testMultiLocationSyntheticsConditionJSON
   132  	alerts := newMockResponse(t, respJSON, http.StatusOK)
   133  
   134  	expected := &testMultiLocationSyntheticsCondition
   135  
   136  	actual, err := alerts.UpdateMultiLocationSyntheticsCondition(testMultiLocationSyntheticsCondition)
   137  
   138  	require.NoError(t, err)
   139  	require.NotNil(t, actual)
   140  	require.Equal(t, expected, actual)
   141  }
   142  
   143  func TestDeleteMultiLocationSyntheticsCondition(t *testing.T) {
   144  	t.Parallel()
   145  	respJSON := testMultiLocationSyntheticsConditionJSON
   146  	alerts := newMockResponse(t, respJSON, http.StatusOK)
   147  
   148  	expected := &testMultiLocationSyntheticsCondition
   149  
   150  	actual, err := alerts.DeleteMultiLocationSyntheticsCondition(testMultiLocationSyntheticsCondition.ID)
   151  
   152  	require.NoError(t, err)
   153  	require.NotNil(t, actual)
   154  	require.Equal(t, expected, actual)
   155  }