MCPcopy
hub / github.com/nats-io/nats.go / TestPublish

Function TestPublish

jetstream/test/publish_test.go:793–858  ·  view source on GitHub ↗
(t *testing.T)

Source from the content-addressed store, hash-verified

791}
792
793func TestPublish(t *testing.T) {
794 // Only very basic test cases, as most use cases are tested in TestPublishMsg
795 tests := []struct {
796 name string
797 msg []byte
798 subject string
799 opts []jetstream.PublishOpt
800 withError error
801 }{
802 {
803 name: "publish single message on stream, no options",
804 msg: []byte("msg"),
805 subject: "FOO.1",
806 },
807 {
808 name: "publish single message on stream with message id",
809 msg: []byte("msg"),
810 subject: "FOO.1",
811 opts: []jetstream.PublishOpt{jetstream.WithMsgID("1")},
812 },
813 {
814 name: "empty subject passed",
815 msg: []byte("msg"),
816 subject: "",
817 withError: nats.ErrBadSubject,
818 },
819 }
820
821 for _, test := range tests {
822 t.Run(test.name, func(t *testing.T) {
823 srv := RunBasicJetStreamServer()
824 defer shutdownJSServerAndRemoveStorage(t, srv)
825 nc, err := nats.Connect(srv.ClientURL())
826 if err != nil {
827 t.Fatalf("Unexpected error: %v", err)
828 }
829
830 js, err := jetstream.New(nc)
831 if err != nil {
832 t.Fatalf("Unexpected error: %v", err)
833 }
834 defer nc.Close()
835
836 ctx, cancel := context.WithTimeout(context.Background(), 5*time.Second)
837 defer cancel()
838 _, err = js.CreateStream(ctx, jetstream.StreamConfig{Name: "foo", Subjects: []string{"FOO.*"}, MaxMsgSize: 64})
839 if err != nil {
840 t.Fatalf("Unexpected error: %v", err)
841 }
842
843 ack, err := js.Publish(ctx, test.subject, test.msg, test.opts...)
844 if test.withError != nil {
845 if err == nil || !errors.Is(err, test.withError) {
846 t.Fatalf("Expected error: %v; got: %v", test.withError, err)
847 }
848 return
849 }
850 if err != nil {

Callers

nothing calls this directly

Calls 10

WithMsgIDFunction · 0.92
NewFunction · 0.92
ConnectMethod · 0.80
FatalfMethod · 0.80
RunBasicJetStreamServerFunction · 0.70
CreateStreamMethod · 0.65
PublishMethod · 0.65
CloseMethod · 0.45
IsMethod · 0.45

Tested by

no test coverage detected