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

Function TestJetStreamErrors

jetstream/test/errors_test.go:28–211  ·  view source on GitHub ↗
(t *testing.T)

Source from the content-addressed store, hash-verified

26)
27
28func TestJetStreamErrors(t *testing.T) {
29 t.Run("API error", func(t *testing.T) {
30 conf := createConfFile(t, []byte(`
31 listen: 127.0.0.1:-1
32 no_auth_user: rip
33 jetstream: {max_mem_store: 64GB, max_file_store: 10TB}
34 accounts: {
35 JS: {
36 jetstream: enabled
37 users: [ {user: dlc, password: foo} ]
38 },
39 IU: {
40 users: [ {user: rip, password: bar} ]
41 },
42 }
43 `))
44 defer os.Remove(conf)
45
46 s, _ := RunServerWithConfig(conf)
47 defer shutdownJSServerAndRemoveStorage(t, s)
48
49 nc, err := nats.Connect(s.ClientURL())
50 if err != nil {
51 t.Fatalf("Unexpected error: %v", err)
52 }
53
54 ctx, cancel := context.WithTimeout(context.Background(), 5*time.Second)
55 defer cancel()
56 js, err := jetstream.New(nc)
57 if err != nil {
58 t.Fatalf("Unexpected error: %v", err)
59 }
60 defer nc.Close()
61
62 _, err = js.AccountInfo(ctx)
63 // check directly to var (backwards compatible)
64 if err != jetstream.ErrJetStreamNotEnabledForAccount {
65 t.Fatalf("Did not get the proper error, got %v", err)
66 }
67
68 // matching via errors.Is
69 if ok := errors.Is(err, jetstream.ErrJetStreamNotEnabledForAccount); !ok {
70 t.Fatal("Expected jetstream.ErrJetStreamNotEnabledForAccount")
71 }
72
73 // matching wrapped via error.Is
74 err2 := fmt.Errorf("custom error: %w", jetstream.ErrJetStreamNotEnabledForAccount)
75 if ok := errors.Is(err2, jetstream.ErrJetStreamNotEnabledForAccount); !ok {
76 t.Fatal("Expected wrapped ErrJetStreamNotEnabled")
77 }
78
79 // via classic type assertion.
80 jserr, ok := err.(jetstream.JetStreamError)
81 if !ok {
82 t.Fatal("Expected a jetstream.JetStreamError")
83 }
84 expected := jetstream.JSErrCodeJetStreamNotEnabledForAccount
85 if jserr.APIError().ErrorCode != expected {

Callers

nothing calls this directly

Calls 15

APIErrorMethod · 0.95
ErrorMethod · 0.95
NewFunction · 0.92
ConnectMethod · 0.80
FatalfMethod · 0.80
ErrorfMethod · 0.80
createConfFileFunction · 0.70
RunServerWithConfigFunction · 0.70
RunBasicJetStreamServerFunction · 0.70
AccountInfoMethod · 0.65
ErrorMethod · 0.65

Tested by

no test coverage detected