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

     1  //go:build integration
     2  // +build integration
     3  
     4  package alerts
     5  
     6  import (
     7  	"testing"
     8  	"time"
     9  
    10  	"github.com/stretchr/testify/require"
    11  
    12  	"github.com/newrelic/newrelic-client-go/pkg/errors"
    13  	nr "github.com/newrelic/newrelic-client-go/pkg/testhelpers"
    14  )
    15  
    16  func TestIntegrationAlertsMutingRules(t *testing.T) {
    17  	t.Parallel()
    18  
    19  	a := newIntegrationTestClient(t)
    20  
    21  	// DTK terraform account
    22  	accountID := 2520528
    23  
    24  	// Schedule fields
    25  	startTime, err1 := time.Parse(time.RFC3339, "2021-07-08T12:30:00Z")
    26  	if err1 != nil {
    27  		t.Fatal(err1)
    28  	}
    29  	endTime, err2 := time.Parse(time.RFC3339, "2021-07-08T14:30:00Z")
    30  	if err2 != nil {
    31  		t.Fatal(err2)
    32  	}
    33  	repeatCount := 10
    34  
    35  	// Create a muting rule to work with in this test
    36  	rule := MutingRuleCreateInput{
    37  		Name:        nr.RandSeq(5),
    38  		Description: "Mute host-1 violations",
    39  		Enabled:     true,
    40  		Schedule: &MutingRuleScheduleCreateInput{
    41  			EndRepeat:        nil,
    42  			EndTime:          &NaiveDateTime{endTime},
    43  			Repeat:           &MutingRuleScheduleRepeatTypes.DAILY,
    44  			RepeatCount:      &repeatCount,
    45  			StartTime:        &NaiveDateTime{startTime},
    46  			TimeZone:         "America/Los_Angeles",
    47  			WeeklyRepeatDays: nil,
    48  		},
    49  	}
    50  	condition := MutingRuleCondition{
    51  		Attribute: "tag.host",
    52  		Operator:  "EQUALS",
    53  		Values:    []string{"host-1"},
    54  	}
    55  	rule.Condition.Operator = "AND"
    56  	rule.Condition.Conditions = append(rule.Condition.Conditions, condition)
    57  
    58  	// Test: Create
    59  	createResult, err := a.CreateMutingRule(accountID, rule)
    60  	require.NoError(t, err)
    61  	require.NotNil(t, createResult)
    62  
    63  	getResult, err := a.GetMutingRule(accountID, createResult.ID)
    64  	require.NoError(t, err)
    65  	require.NotNil(t, getResult)
    66  
    67  	// Test: List
    68  	listResult, err := a.ListMutingRules(accountID)
    69  	require.NoError(t, err)
    70  	require.True(t, len(listResult) > 0)
    71  
    72  	// Test: Update
    73  	testIntegrationMutingRuleNewName := nr.RandSeq(5)
    74  	updateRule := MutingRuleUpdateInput{}
    75  	updateRule.Name = testIntegrationMutingRuleNewName
    76  
    77  	updateResult, err := a.UpdateMutingRule(accountID, createResult.ID, updateRule)
    78  	require.NoError(t, err)
    79  	require.NotNil(t, updateResult)
    80  
    81  	// Test: Delete
    82  	err = a.DeleteMutingRule(accountID, createResult.ID)
    83  	require.NoError(t, err)
    84  
    85  	// Test: Not found
    86  	getResult, err = a.GetMutingRule(accountID, createResult.ID)
    87  	require.Error(t, err)
    88  	require.Nil(t, getResult)
    89  	_, ok := err.(*errors.NotFound)
    90  	require.True(t, ok)
    91  }