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 }