(t *testing.T)
| 791 | } |
| 792 | |
| 793 | func 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 { |
nothing calls this directly
no test coverage detected