chore: 并入 iotlcm-openapi 历史到 openapi/(原提交 3b05d5a)
This commit is contained in:
@@ -0,0 +1,81 @@
|
||||
package workerdiagnostic
|
||||
|
||||
import (
|
||||
"context"
|
||||
"encoding/json"
|
||||
"errors"
|
||||
"fmt"
|
||||
"strings"
|
||||
"testing"
|
||||
|
||||
"git.5iot.com/iotlcm-public/iotlcm-openapi/internal/consts"
|
||||
"git.5iot.com/iotlcm-public/iotlcm-openapi/internal/model"
|
||||
)
|
||||
|
||||
func TestPublish(t *testing.T) {
|
||||
var (
|
||||
publishedQueue string
|
||||
publishedPayload model.WorkerDiagnosticMessage
|
||||
)
|
||||
service := New(func(ctx context.Context, queue string, data any) error {
|
||||
publishedQueue = queue
|
||||
var ok bool
|
||||
publishedPayload, ok = data.(model.WorkerDiagnosticMessage)
|
||||
if !ok {
|
||||
t.Fatalf("unexpected payload type %T", data)
|
||||
}
|
||||
return nil
|
||||
})
|
||||
|
||||
result, err := service.Publish(context.Background(), "worker ping")
|
||||
if err != nil {
|
||||
t.Fatalf("Publish() error = %v", err)
|
||||
}
|
||||
if publishedQueue != consts.QueueWorkerDiagnostic {
|
||||
t.Fatalf("queue = %q, want %q", publishedQueue, consts.QueueWorkerDiagnostic)
|
||||
}
|
||||
if !strings.HasPrefix(result.TraceID, "worker-test-") {
|
||||
t.Fatalf("traceId = %q, want worker-test- prefix", result.TraceID)
|
||||
}
|
||||
if result.SentAt <= 0 {
|
||||
t.Fatalf("sentAt = %d, want positive timestamp", result.SentAt)
|
||||
}
|
||||
if result.Queue != consts.QueueWorkerDiagnostic {
|
||||
t.Fatalf("result queue = %q, want %q", result.Queue, consts.QueueWorkerDiagnostic)
|
||||
}
|
||||
if publishedPayload.TraceID != result.TraceID || publishedPayload.SentAt != result.SentAt {
|
||||
t.Fatalf("published identifiers = %+v, result = %+v", publishedPayload, result)
|
||||
}
|
||||
if publishedPayload.Message != "worker ping" {
|
||||
t.Fatalf("message = %q, want worker ping", publishedPayload.Message)
|
||||
}
|
||||
body, err := json.Marshal(publishedPayload)
|
||||
if err != nil {
|
||||
t.Fatalf("json.Marshal() error = %v", err)
|
||||
}
|
||||
wantJSON := `{"traceId":"` + result.TraceID + `","sentAt":` + fmt.Sprint(result.SentAt) + `,"message":"worker ping"}`
|
||||
if string(body) != wantJSON {
|
||||
t.Fatalf("JSON = %s, want %s", body, wantJSON)
|
||||
}
|
||||
}
|
||||
|
||||
func TestPublishWrapsPublisherError(t *testing.T) {
|
||||
publishErr := errors.New("broker unavailable")
|
||||
service := New(func(ctx context.Context, queue string, data any) error {
|
||||
return publishErr
|
||||
})
|
||||
|
||||
result, err := service.Publish(context.Background(), "worker ping")
|
||||
if result != nil {
|
||||
t.Fatalf("result = %+v, want nil", result)
|
||||
}
|
||||
if err == nil {
|
||||
t.Fatal("Publish() error = nil, want error")
|
||||
}
|
||||
if !errors.Is(err, publishErr) {
|
||||
t.Fatalf("Publish() error = %v, want wrapped publisher error", err)
|
||||
}
|
||||
if !strings.Contains(err.Error(), "publish worker diagnostic message failed") {
|
||||
t.Fatalf("Publish() error = %v, want context", err)
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user