Răsfoiți Sursa

Add JSON publishing support

binwiederhier 1 lună în urmă
părinte
comite
66ea25c18b
2 a modificat fișierele cu 15 adăugiri și 0 ștergeri
  1. 3 0
      server/server.go
  2. 12 0
      server/server_test.go

+ 3 - 0
server/server.go

@@ -2027,6 +2027,9 @@ func (s *Server) transformBodyJSON(next handleFunc) handleFunc {
 		if m.Firebase != "" {
 			r.Header.Set("X-Firebase", m.Firebase)
 		}
+		if m.SequenceID != "" {
+			r.Header.Set("X-Sequence-ID", m.SequenceID)
+		}
 		return next(w, r, v)
 	}
 }

+ 12 - 0
server/server_test.go

@@ -727,6 +727,18 @@ func TestServer_PublishWithSIDViaGet(t *testing.T) {
 	require.Equal(t, "sid1", msg.SequenceID)
 }
 
+func TestServer_PublishAsJSON_WithSequenceID(t *testing.T) {
+	s := newTestServer(t, newTestConfig(t))
+
+	body := `{"topic":"mytopic","message":"A message","sequence_id":"my-sequence-123"}`
+	response := request(t, s, "PUT", "/", body, nil)
+	require.Equal(t, 200, response.Code)
+
+	msg := toMessage(t, response.Body.String())
+	require.NotEmpty(t, msg.ID)
+	require.Equal(t, "my-sequence-123", msg.SequenceID)
+}
+
 func TestServer_PublishWithInvalidSIDInPath(t *testing.T) {
 	s := newTestServer(t, newTestConfig(t))