(Feat): Initial Commit
This commit is contained in:
88
internal/test/helper_compare.go
Normal file
88
internal/test/helper_compare.go
Normal file
@@ -0,0 +1,88 @@
|
||||
package test
|
||||
|
||||
import (
|
||||
"crypto/sha256"
|
||||
"fmt"
|
||||
"io"
|
||||
"net/http/httptest"
|
||||
"os"
|
||||
"strings"
|
||||
"testing"
|
||||
|
||||
"allaboutapps.dev/aw/go-starter/internal/api/httperrors"
|
||||
"github.com/stretchr/testify/assert"
|
||||
"github.com/stretchr/testify/require"
|
||||
)
|
||||
|
||||
func CompareFileHashes(t *testing.T, expectedFilePath string, actualFilePath string) {
|
||||
t.Helper()
|
||||
|
||||
expectedFile, err := os.Open(expectedFilePath)
|
||||
require.NoError(t, err)
|
||||
defer expectedFile.Close()
|
||||
|
||||
expectedHash := sha256.New()
|
||||
_, err = io.Copy(expectedHash, expectedFile)
|
||||
require.NoError(t, err)
|
||||
|
||||
actualFile, err := os.Open(actualFilePath)
|
||||
require.NoError(t, err)
|
||||
defer actualFile.Close()
|
||||
|
||||
actualhash := sha256.New()
|
||||
_, err = io.Copy(actualhash, actualFile)
|
||||
require.NoError(t, err)
|
||||
|
||||
assert.Equal(t, expectedHash.Sum(nil), actualhash.Sum(nil))
|
||||
}
|
||||
|
||||
func CompareAllPayload(t *testing.T, base map[string]interface{}, toCheck map[string]string, skipKeys map[string]bool, keyConvertFunc ...func(string) string) {
|
||||
t.Helper()
|
||||
|
||||
var keyFunc func(string) string
|
||||
if len(keyConvertFunc) > 0 {
|
||||
keyFunc = keyConvertFunc[0]
|
||||
} else {
|
||||
keyFunc = func(s string) string {
|
||||
return s
|
||||
}
|
||||
}
|
||||
for key, val := range base {
|
||||
if skipKeys[key] {
|
||||
continue
|
||||
}
|
||||
|
||||
// checks with contains because of dateTime and null.String struct
|
||||
contains := strings.Contains(toCheck[keyFunc(key)], fmt.Sprintf("%v", val))
|
||||
assert.Truef(t, contains, "Expected for %s: '%s'. Got: '%s'", key, val, toCheck[keyFunc(key)])
|
||||
}
|
||||
}
|
||||
|
||||
func CompareAll(t *testing.T, base map[string]string, toCheck map[string]string, skipKeys map[string]bool) {
|
||||
t.Helper()
|
||||
|
||||
for key, val := range base {
|
||||
if skipKeys[key] {
|
||||
continue
|
||||
}
|
||||
|
||||
// checks with contains because of dateTime and null.String struct
|
||||
contains := strings.Contains(toCheck[key], val)
|
||||
assert.Truef(t, contains, "Expected for %s: '%s'. Got: '%s'", key, val, toCheck[key])
|
||||
}
|
||||
}
|
||||
|
||||
func RequireHTTPError(t *testing.T, res *httptest.ResponseRecorder, httpError *httperrors.HTTPError) httperrors.HTTPError {
|
||||
t.Helper()
|
||||
|
||||
if httpError.Code != nil {
|
||||
require.Equal(t, int(*httpError.Code), res.Result().StatusCode)
|
||||
}
|
||||
|
||||
var response httperrors.HTTPError
|
||||
ParseResponseAndValidate(t, res, &response)
|
||||
|
||||
require.Equal(t, httpError, &response)
|
||||
|
||||
return response
|
||||
}
|
||||
Reference in New Issue
Block a user