fix: plugin test case
This commit is contained in:
@@ -0,0 +1,84 @@
|
|||||||
|
package main
|
||||||
|
|
||||||
|
import (
|
||||||
|
"context"
|
||||||
|
"net/http"
|
||||||
|
"net/http/httptest"
|
||||||
|
"strings"
|
||||||
|
"testing"
|
||||||
|
|
||||||
|
"github.com/stretchr/testify/assert"
|
||||||
|
"github.com/stretchr/testify/require"
|
||||||
|
)
|
||||||
|
|
||||||
|
func TestProviderNew(t *testing.T) {
|
||||||
|
testCases := []struct {
|
||||||
|
name string
|
||||||
|
config map[string]string
|
||||||
|
expectedError bool
|
||||||
|
expectedStatus int
|
||||||
|
prepareRequest func(req *http.Request)
|
||||||
|
}{
|
||||||
|
{
|
||||||
|
name: "No Config",
|
||||||
|
config: map[string]string{},
|
||||||
|
expectedError: true,
|
||||||
|
expectedStatus: http.StatusOK,
|
||||||
|
prepareRequest: func(req *http.Request) {
|
||||||
|
// Add minimal required headers
|
||||||
|
req.Header.Set("context", "test-context")
|
||||||
|
req.Header.Set("transaction_id", "test-transaction")
|
||||||
|
},
|
||||||
|
},
|
||||||
|
{
|
||||||
|
name: "With Check Keys",
|
||||||
|
config: map[string]string{
|
||||||
|
"CheckKeys": "message_id,transaction_id",
|
||||||
|
},
|
||||||
|
expectedError: false,
|
||||||
|
expectedStatus: http.StatusOK,
|
||||||
|
prepareRequest: func(req *http.Request) {
|
||||||
|
// Add headers matching the check keys
|
||||||
|
req.Header.Set("context", "test-context")
|
||||||
|
req.Header.Set("transaction_id", "test-transaction")
|
||||||
|
},
|
||||||
|
},
|
||||||
|
}
|
||||||
|
|
||||||
|
for _, tc := range testCases {
|
||||||
|
t.Run(tc.name, func(t *testing.T) {
|
||||||
|
requestBody := `{
|
||||||
|
"context": {
|
||||||
|
"transaction_id": "abc"
|
||||||
|
}
|
||||||
|
}`
|
||||||
|
|
||||||
|
p := provider{}
|
||||||
|
middleware, err := p.New(context.Background(), tc.config)
|
||||||
|
if tc.expectedError {
|
||||||
|
assert.Error(t, err)
|
||||||
|
return
|
||||||
|
}
|
||||||
|
require.NoError(t, err)
|
||||||
|
assert.NotNil(t, middleware)
|
||||||
|
|
||||||
|
testHandler := http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {
|
||||||
|
w.WriteHeader(http.StatusOK)
|
||||||
|
})
|
||||||
|
|
||||||
|
req := httptest.NewRequest("POST", "/", strings.NewReader(requestBody))
|
||||||
|
req.Header.Set("Content-Type", "application/json")
|
||||||
|
if tc.prepareRequest != nil {
|
||||||
|
tc.prepareRequest(req)
|
||||||
|
}
|
||||||
|
|
||||||
|
w := httptest.NewRecorder()
|
||||||
|
middlewaredHandler := middleware(testHandler)
|
||||||
|
middlewaredHandler.ServeHTTP(w, req)
|
||||||
|
assert.Equal(t, tc.expectedStatus, w.Code, "Unexpected response status")
|
||||||
|
responseBody := w.Body.String()
|
||||||
|
t.Logf("Response Body: %s", responseBody)
|
||||||
|
|
||||||
|
})
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -88,6 +88,13 @@ func validateConfig(cfg *Config) error {
|
|||||||
if cfg == nil {
|
if cfg == nil {
|
||||||
return errors.New("config cannot be nil")
|
return errors.New("config cannot be nil")
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Check if CheckKeys is empty
|
||||||
|
if len(cfg.CheckKeys) == 0 {
|
||||||
|
return errors.New("checkKeys cannot be empty")
|
||||||
|
}
|
||||||
|
|
||||||
|
// Validate that CheckKeys does not contain empty strings
|
||||||
for _, key := range cfg.CheckKeys {
|
for _, key := range cfg.CheckKeys {
|
||||||
if key == "" {
|
if key == "" {
|
||||||
return errors.New("checkKeys cannot contain empty strings")
|
return errors.New("checkKeys cannot contain empty strings")
|
||||||
|
|||||||
Reference in New Issue
Block a user