aboutsummaryrefslogtreecommitdiffstats
path: root/vendor/github.com/aws/smithy-go/middleware/middleware_test.go
diff options
context:
space:
mode:
authorvitalyisaev <vitalyisaev@ydb.tech>2023-12-12 21:55:07 +0300
committervitalyisaev <vitalyisaev@ydb.tech>2023-12-12 22:25:10 +0300
commit4967f99474a4040ba150eb04995de06342252718 (patch)
treec9c118836513a8fab6e9fcfb25be5d404338bca7 /vendor/github.com/aws/smithy-go/middleware/middleware_test.go
parent2ce9cccb9b0bdd4cd7a3491dc5cbf8687cda51de (diff)
downloadydb-4967f99474a4040ba150eb04995de06342252718.tar.gz
YQ Connector: prepare code base for S3 integration
1. Кодовая база Коннектора переписана с помощью Go дженериков так, чтобы добавление нового источника данных (в частности S3 + csv) максимально переиспользовало имеющийся код (чтобы сохранялась логика нарезания на блоки данных, учёт трафика и пр.) 2. API Connector расширено для работы с S3, но ещё пока не протестировано.
Diffstat (limited to 'vendor/github.com/aws/smithy-go/middleware/middleware_test.go')
-rw-r--r--vendor/github.com/aws/smithy-go/middleware/middleware_test.go80
1 files changed, 80 insertions, 0 deletions
diff --git a/vendor/github.com/aws/smithy-go/middleware/middleware_test.go b/vendor/github.com/aws/smithy-go/middleware/middleware_test.go
new file mode 100644
index 0000000000..0f550987f4
--- /dev/null
+++ b/vendor/github.com/aws/smithy-go/middleware/middleware_test.go
@@ -0,0 +1,80 @@
+package middleware
+
+import (
+ "context"
+ "fmt"
+ "testing"
+)
+
+var _ Handler = (HandlerFunc)(nil)
+var _ Handler = (decoratedHandler{})
+
+type mockMiddleware struct {
+ id int
+}
+
+func (m mockMiddleware) ID() string {
+ return fmt.Sprintf("mock middleware %d", m.id)
+}
+
+func (m mockMiddleware) HandleMiddleware(ctx context.Context, input interface{}, next Handler) (
+ output interface{}, metadata Metadata, err error,
+) {
+ output, metadata, err = next.Handle(ctx, input)
+
+ mockKeySet(&metadata, m.id, fmt.Sprintf("mock-%d", m.id))
+
+ return output, metadata, err
+}
+
+type mockKey struct{ Key int }
+
+func mockKeySet(md *Metadata, key int, val string) {
+ md.Set(mockKey{Key: key}, val)
+}
+
+func mockKeyGet(md MetadataReader, key int) string {
+ v := md.Get(mockKey{Key: key})
+ if v == nil {
+ return ""
+ }
+
+ return v.(string)
+}
+
+type mockHandler struct {
+}
+
+func (m *mockHandler) Handle(ctx context.Context, input interface{}) (
+ output interface{}, metadata Metadata, err error,
+) {
+ return nil, metadata, nil
+}
+
+func TestDecorateHandler(t *testing.T) {
+ mockHandler := &mockHandler{}
+ h := DecorateHandler(
+ mockHandler,
+ mockMiddleware{id: 0},
+ mockMiddleware{id: 1},
+ mockMiddleware{id: 2},
+ )
+
+ _, metadata, err := h.Handle(context.Background(), struct{}{})
+ if err != nil {
+ t.Fatalf("expect no error, got %v", err)
+ }
+
+ expectMeta := map[int]interface{}{
+ 0: "mock-0",
+ 1: "mock-1",
+ 2: "mock-2",
+ }
+
+ for key, expect := range expectMeta {
+ v := mockKeyGet(metadata, key)
+ if e, a := expect, v; e != a {
+ t.Errorf("expect %v: %v metadata got %v", key, e, a)
+ }
+ }
+}