github.com/newrelic/newrelic-client-go@v1.1.0/pkg/eventstometrics/eventstometrics_integration_test.go (about) 1 //go:build integration 2 // +build integration 3 4 package eventstometrics 5 6 import ( 7 "testing" 8 9 "github.com/stretchr/testify/require" 10 11 mock "github.com/newrelic/newrelic-client-go/pkg/testhelpers" 12 ) 13 14 func TestIntegrationEventsToMetrics(t *testing.T) { 15 t.Parallel() 16 17 testAccountID, err := mock.GetTestAccountID() 18 if err != nil { 19 t.Skipf("%s", err) 20 } 21 22 var ( 23 rand = mock.RandSeq(5) 24 testRuleName = "testRule_" + rand 25 testOtherRuleName = "testRuleOther_" + rand 26 testRuleDescription = "testRuleDescription" 27 testRuleNrql = "SELECT uniqueCount(account_id) AS `Transaction.account_id` FROM Transaction FACET appName, name" 28 testCreateInput = []EventsToMetricsCreateRuleInput{ 29 { 30 AccountID: testAccountID, 31 Name: testRuleName, 32 Description: testRuleDescription, 33 NRQL: testRuleNrql, 34 }, 35 { 36 AccountID: testAccountID, 37 Name: testOtherRuleName, 38 Description: testRuleDescription, 39 NRQL: testRuleNrql, 40 }, 41 } 42 ) 43 44 client := newIntegrationTestClient(t) 45 46 // Test: Create 47 created, err := client.CreateRules(testCreateInput) 48 49 require.NoError(t, err) 50 require.NotNil(t, created) 51 require.NotEmpty(t, created) 52 require.Equal(t, 2, len(created)) 53 54 // Test: Get 55 rule, err := client.GetRule(testAccountID, created[0].ID) 56 57 require.NoError(t, err) 58 require.NotNil(t, rule) 59 60 // Test: Get Multiple 61 rules, err := client.GetRules(testAccountID, []string{created[0].ID, created[1].ID}) 62 63 require.NoError(t, err) 64 require.NotNil(t, rules) 65 require.NotEmpty(t, rules) 66 require.Equal(t, 2, len(rules)) 67 68 // Test: List 69 rules, err = client.ListRules(testAccountID) 70 require.NoError(t, err) 71 require.Greater(t, len(rules), 0) 72 73 // Test: Update 74 testUpdateInput := []EventsToMetricsUpdateRuleInput{ 75 { 76 AccountID: testAccountID, 77 RuleId: created[0].ID, 78 Enabled: false, 79 }, 80 } 81 82 updated, err := client.UpdateRules(testUpdateInput) 83 84 require.NoError(t, err) 85 require.NotNil(t, updated) 86 require.NotEmpty(t, updated) 87 require.Equal(t, 1, len(updated)) 88 require.Equal(t, testUpdateInput[0].Enabled, updated[0].Enabled) 89 90 // Test: Delete 91 testDeleteInput := []EventsToMetricsDeleteRuleInput{ 92 { 93 AccountID: testAccountID, 94 RuleId: created[0].ID, 95 }, 96 { 97 AccountID: testAccountID, 98 RuleId: created[1].ID, 99 }, 100 } 101 deleted, err := client.DeleteRules(testDeleteInput) 102 103 require.NoError(t, err) 104 require.NotNil(t, deleted) 105 require.NotEmpty(t, deleted) 106 require.Equal(t, 2, len(deleted)) 107 } 108 109 func newIntegrationTestClient(t *testing.T) EventsToMetrics { 110 tc := mock.NewIntegrationTestConfig(t) 111 112 return New(tc) 113 }