Skip to content

Commit

Permalink
Rename test files and cleanup
Browse files Browse the repository at this point in the history
  • Loading branch information
colmsnowplow committed Jul 1, 2024
1 parent 493f444 commit a80ea8d
Show file tree
Hide file tree
Showing 4 changed files with 64 additions and 29 deletions.
3 changes: 1 addition & 2 deletions pkg/target/http.go
Original file line number Diff line number Diff line change
Expand Up @@ -194,7 +194,6 @@ func loadRequestTemplate(templateFile string) (*template.Template, error) {
func parseRequestTemplate(templateContent string) (*template.Template, error) {
customTemplateFunctions := template.FuncMap{
// If you use this in your template on struct-like fields, you get rendered nice JSON `{"field":"value"}` instead of stringified map `map[field:value]`
// TODO: This works for now but we should check if there is more efficient solution.
"prettyPrint": func(v interface{}) string {
a, _ := json.Marshal(v)
return string(a)
Expand Down Expand Up @@ -434,7 +433,7 @@ func (ht *HTTPTarget) renderBatchUsingTemplate(messages []*models.Message) (temp

// Where no transformation function provides a request body, we must provide one - this necessarily must happen last.
// This is a http specific function so we define it here to avoid scope for misconfiguration
func (ht *HTTPTarget) provideRequestBody(messages []*models.Message) (templated []byte, success []*models.Message, invalid []*models.Message) { // TODO: REMOVE RETURNING ERROR FROM BOTH
func (ht *HTTPTarget) provideRequestBody(messages []*models.Message) (templated []byte, success []*models.Message, invalid []*models.Message) {

// This assumes the data is a valid JSON. Plain strings are no longer supported, but can be handled via a combination of transformation and templater
requestData := make([]json.RawMessage, 0)
Expand Down
6 changes: 3 additions & 3 deletions pkg/target/http_oauth2_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -62,7 +62,7 @@ func targetServer() *httptest.Server {
}))
}

func TestHttpOAuth2_Success(t *testing.T) {
func TestHTTP_OAuth2_Success(t *testing.T) {
assert := assert.New(t)

writeResult, err := runTest(t, validClientID, validClientSecret, validRefreshToken)
Expand All @@ -72,7 +72,7 @@ func TestHttpOAuth2_Success(t *testing.T) {
assert.Equal(0, len(writeResult.Failed))
}

func TestHttpOAuth2_CanNotFetchToken(t *testing.T) {
func TestHTTP_OAuth2_CanNotFetchToken(t *testing.T) {
testCases := []struct {
Name string
InputClientID string
Expand All @@ -97,7 +97,7 @@ func TestHttpOAuth2_CanNotFetchToken(t *testing.T) {
}
}

func TestHTTPOAuth2_CallTargetWithoutToken(t *testing.T) {
func TestHTTP_OAuth2_CallTargetWithoutToken(t *testing.T) {
assert := assert.New(t)
writeResult, err := runTest(t, "", "", "")

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -18,7 +18,7 @@ import (
"github.com/stretchr/testify/assert"
)

func TestTemplating_WithPrettyPrint(t *testing.T) {
func TestHTTP_Templating_WithPrettyPrint(t *testing.T) {
assert := assert.New(t)

rawTemplate :=
Expand All @@ -45,7 +45,7 @@ func TestTemplating_WithPrettyPrint(t *testing.T) {
assert.Empty(invalidMessages)
}

func TestTemplating_NoPrettyPrinting(t *testing.T) {
func TestHTTP_Templating_NoPrettyPrinting(t *testing.T) {
assert := assert.New(t)

rawTemplate :=
Expand Down Expand Up @@ -73,7 +73,7 @@ func TestTemplating_NoPrettyPrinting(t *testing.T) {
assert.Empty(invalidMessages)
}

func TestTemplating_ArrayProvided(t *testing.T) {
func TestHTTP_Templating_ArrayProvided(t *testing.T) {
assert := assert.New(t)

rawTemplate :=
Expand All @@ -97,7 +97,7 @@ func TestTemplating_ArrayProvided(t *testing.T) {
assert.Empty(invalidMessages)
}

func TestTemplating_AccessNonExistingField(t *testing.T) {
func TestHTTP_Templating_AccessNonExistingField(t *testing.T) {
noPretty := "{{ (index . 0).nonexistent}}"
pretty := "{{ prettyPrint (index . 0).nonexistent}}"

Expand Down Expand Up @@ -134,15 +134,15 @@ func TestTemplating_AccessNonExistingField(t *testing.T) {
}
}

func TestTemplatating_ParsingTemplateFailure(t *testing.T) {
func TestHTTP_Templatating_ParsingTemplateFailure(t *testing.T) {
assert := assert.New(t)

rawTemplate := "{{ "
_, err := parseRequestTemplate(rawTemplate)
assert.Equal("template: HTTP:1: unclosed action", err.Error())
}

func TestTemplating_JSONParseFailure(t *testing.T) {
func TestHTTP_Templating_JSONParseFailure(t *testing.T) {
assert := assert.New(t)

rawTemplate := "{{ prettyPrint (index . 0).event_data}}"
Expand Down Expand Up @@ -170,7 +170,7 @@ func TestTemplating_JSONParseFailure(t *testing.T) {
assert.Equal(inputMessages[1], invalidMessages[0])
}

func TestTemplating_RenderFailure(t *testing.T) {
func TestHTTP_Templating_RenderFailure(t *testing.T) {
assert := assert.New(t)

rawTemplate := "{{ index . 1 }}"
Expand Down
70 changes: 53 additions & 17 deletions pkg/target/http_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -50,7 +50,7 @@ func createTestServer(results *[][]byte) *httptest.Server {
return createTestServerWithResponseCode(results, 200)
}

func TestGetHeaders(t *testing.T) {
func TestHTTP_GetHeaders(t *testing.T) {
assert := assert.New(t)
valid1 := `{"Max Forwards": "10", "Accept-Language": "en-US", "Accept-Datetime": "Thu, 31 May 2007 20:35:00 GMT"}`

Expand Down Expand Up @@ -98,7 +98,7 @@ func TestGetHeaders(t *testing.T) {

}

func TestRetrieveHeaders(t *testing.T) {
func TestHTTP_RetrieveHeaders(t *testing.T) {
testCases := []struct {
Name string
Msg *models.Message
Expand Down Expand Up @@ -179,7 +179,7 @@ func TestRetrieveHeaders(t *testing.T) {
}
}

func TestAddHeadersToRequest(t *testing.T) {
func TestHTTP_AddHeadersToRequest(t *testing.T) {
assert := assert.New(t)

req, err := http.NewRequest("POST", "abc", bytes.NewBuffer([]byte("def")))
Expand Down Expand Up @@ -209,7 +209,7 @@ func TestAddHeadersToRequest(t *testing.T) {
assert.Equal(noHeadersExpected, req2.Header)
}

func TestAddHeadersToRequest_WithDynamicHeaders(t *testing.T) {
func TestHTTP_AddHeadersToRequest_WithDynamicHeaders(t *testing.T) {
testCases := []struct {
Name string
ConfigHeaders map[string]string
Expand Down Expand Up @@ -303,7 +303,7 @@ func TestAddHeadersToRequest_WithDynamicHeaders(t *testing.T) {
}
}

func TestNewHTTPTarget(t *testing.T) {
func TestHTTP_NewHTTPTarget(t *testing.T) {
assert := assert.New(t)

httpTarget, err := newHTTPTarget("http://something", 5, 1, 1048576, 1048576, "application/json", "", "", "", "", "", "", true, false, "", "", "", "", "")
Expand All @@ -327,7 +327,7 @@ func TestNewHTTPTarget(t *testing.T) {
assert.Nil(failedHTTPTarget2)
}

func TestHTTPWrite_Simple(t *testing.T) {
func TestHTTP_Write_Simple(t *testing.T) {
testCases := []struct {
Name string
ResponseCode int
Expand Down Expand Up @@ -359,7 +359,11 @@ func TestHTTPWrite_Simple(t *testing.T) {
wg.Done()
}

messages := testutil.GetTestMessages(25, `{"message": "Hello Server!!"}`, ackFunc)
goodMessages := testutil.GetTestMessages(25, `{"message": "Hello Server!!"}`, ackFunc)
badMessages := testutil.GetTestMessages(3, `{"message": "Hello Server!!"`, ackFunc) // invalids

messages := append(goodMessages, badMessages...)

wg.Add(25)
writeResult, err1 := target.Write(messages)

Expand All @@ -374,12 +378,18 @@ func TestHTTPWrite_Simple(t *testing.T) {
assert.Equal(`[{"message":"Hello Server!!"}]`, string(result))
}

assert.Equal(3, len(writeResult.Invalid)) // invalids went to the right place
for _, msg := range writeResult.Invalid {
// Check all invalids have error as expected
assert.Regexp("Message can't be parsed as valid JSON: .*", msg.GetError().Error())
}

assert.Equal(int64(25), ackOps)
})
}
}

func TestHTTPWrite_Batched(t *testing.T) {
func TestHTTP_Write_Batched(t *testing.T) {
testCases := []struct {
Name string
BatchSize int
Expand Down Expand Up @@ -447,7 +457,7 @@ func TestHTTPWrite_Batched(t *testing.T) {
}
}

func TestHTTPWrite_Concurrent(t *testing.T) {
func TestHTTP_Write_Concurrent(t *testing.T) {
assert := assert.New(t)

var results [][]byte
Expand Down Expand Up @@ -492,7 +502,7 @@ func TestHTTPWrite_Concurrent(t *testing.T) {
assert.Equal(int64(10), ackOps)
}

func TestHTTPWrite_Failure(t *testing.T) {
func TestHTTP_Write_Failure(t *testing.T) {
assert := assert.New(t)

var results [][]byte
Expand Down Expand Up @@ -523,7 +533,7 @@ func TestHTTPWrite_Failure(t *testing.T) {
assert.Empty(writeResult.Oversized)
}

func TestHTTPWrite_InvalidResponseCode(t *testing.T) {
func TestHTTP_Write_InvalidResponseCode(t *testing.T) {
testCases := []struct {
Name string
ResponseCode int
Expand Down Expand Up @@ -564,7 +574,7 @@ func TestHTTPWrite_InvalidResponseCode(t *testing.T) {
}
}

func TestHTTPWrite_Oversized(t *testing.T) {
func TestHTTP_Write_Oversized(t *testing.T) {
assert := assert.New(t)

var results [][]byte
Expand Down Expand Up @@ -605,7 +615,7 @@ func TestHTTPWrite_Oversized(t *testing.T) {
assert.Equal(int64(10), ackOps)
}

func TestHTTPWrite_EnabledTemplating(t *testing.T) {
func TestHTTP_Write_EnabledTemplating(t *testing.T) {
assert := assert.New(t)

var results [][]byte
Expand All @@ -624,15 +634,22 @@ func TestHTTPWrite_EnabledTemplating(t *testing.T) {
wg.Done()
}

input := `{ "event_data": { "nested": "value1"}, "attribute_data": 1}`
messages := testutil.GetTestMessages(3, input, ackFunc)
goodMessages := testutil.GetTestMessages(3, `{ "event_data": { "nested": "value1"}, "attribute_data": 1}`, ackFunc)
badMessages := testutil.GetTestMessages(3, `{ "event_data": { "nested": "value1"},`, ackFunc) // invalid

messages := append(goodMessages, badMessages...)

wg.Add(3)
writeResult, err1 := target.Write(messages)
wg.Wait()

assert.Nil(err1)
assert.Equal(3, len(writeResult.Sent))
assert.Equal(3, len(writeResult.Invalid)) // invalids went to the right place
for _, msg := range writeResult.Invalid {
// Invalids have errors as expected
assert.Regexp("Message can't be parsed as valid JSON: .*", msg.GetError().Error())
}
assert.Equal(1, len(results))

expectedOutput := "{\n \"attributes\": [1,1,1],\n \"events\": [{\"nested\":\"value1\"},{\"nested\":\"value1\"},{\"nested\":\"value1\"}]\n}\n"
Expand All @@ -649,7 +666,7 @@ func TestHTTPWrite_EnabledTemplating(t *testing.T) {
// openssl req -new -key localhost.key -out localhost.csr -subj "/CN=localhost" -addext "subjectAltName = DNS:localhost"
// openssl x509 -req -in localhost.csr -CA rootCA.crt -CAkey rootCA.key -CAcreateserial -days 365 -out localhost.crt

func TestHTTPWrite_TLS(t *testing.T) {
func TestHTTP_Write_TLS(t *testing.T) {
if testing.Short() {
t.Skip("skipping integration test")
}
Expand Down Expand Up @@ -760,6 +777,25 @@ func TestHTTPWrite_TLS(t *testing.T) {
assert.Equal(int64(30), ackOps)
}

func TestHTTP_ProvideRequestBody(t *testing.T) {
assert := assert.New(t)
target := HTTPTarget{}

inputMessages := []*models.Message{
{Data: []byte(`{"key": "value1"}`)},
{Data: []byte(`{"key": "value2"}`)},
{Data: []byte(`{"key": "value3"}`)},
{Data: []byte(`justastring`)},
}

templated, success, invalid := target.provideRequestBody(inputMessages)

assert.Equal(`[{"key":"value1"},{"key":"value2"},{"key":"value3"}]`, string(templated))
assert.Equal(3, len(success))
assert.Equal(1, len(invalid))
assert.Regexp("Message can't be parsed as valid JSON: .*", invalid[0].GetError().Error())
}

func TestHTTP_GroupByHeaders_Disabled(t *testing.T) {
assert := assert.New(t)
target := HTTPTarget{dynamicHeaders: false}
Expand Down Expand Up @@ -875,7 +911,7 @@ func TestHTTP_GroupByHeaders_Enabled_MultipleGroups(t *testing.T) {
assert.Contains(groupedMessages, []*models.Message{inputMessages[4]}) //group 3
}

func TestHTTPWrite_GroupedRequests(t *testing.T) {
func TestHTTP_Write_GroupedRequests(t *testing.T) {
assert := assert.New(t)

var results [][]byte
Expand Down

0 comments on commit a80ea8d

Please sign in to comment.