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

Function TestAuthExpiredForceReconnect

test/reconnect_test.go:1072–1145  ·  view source on GitHub ↗
(t *testing.T)

Source from the content-addressed store, hash-verified

1070}
1071
1072func TestAuthExpiredForceReconnect(t *testing.T) {
1073 ts := runTrustServer()
1074 defer ts.Shutdown()
1075
1076 _, err := nats.Connect(ts.ClientURL())
1077 if err == nil {
1078 t.Fatalf("Expecting an error on connect")
1079 }
1080 ukp, err := nkeys.FromSeed(uSeed)
1081 if err != nil {
1082 t.Fatalf("Error creating user key pair: %v", err)
1083 }
1084 upub, err := ukp.PublicKey()
1085 if err != nil {
1086 t.Fatalf("Error getting user public key: %v", err)
1087 }
1088 akp, err := nkeys.FromSeed(aSeed)
1089 if err != nil {
1090 t.Fatalf("Error creating account key pair: %v", err)
1091 }
1092
1093 jwtCB := func() (string, error) {
1094 claims := jwt.NewUserClaims("test")
1095 claims.Expires = time.Now().Add(time.Second).Unix()
1096 claims.Subject = upub
1097 jwt, err := claims.Encode(akp)
1098 if err != nil {
1099 return "", err
1100 }
1101 return jwt, nil
1102 }
1103 sigCB := func(nonce []byte) ([]byte, error) {
1104 kp, _ := nkeys.FromSeed(uSeed)
1105 sig, _ := kp.Sign(nonce)
1106 return sig, nil
1107 }
1108
1109 errCh := make(chan error, 1)
1110 nc, err := nats.Connect(ts.ClientURL(), nats.UserJWT(jwtCB, sigCB), nats.ReconnectWait(10*time.Second),
1111 nats.ErrorHandler(func(_ *nats.Conn, _ *nats.Subscription, err error) {
1112 errCh <- err
1113 }))
1114 if err != nil {
1115 t.Fatalf("Expected to connect, got %v", err)
1116 }
1117 defer nc.Close()
1118 statusCh := nc.StatusChanged(nats.RECONNECTING, nats.CONNECTED)
1119 defer close(statusCh)
1120 newStatus := make(chan nats.Status, 10)
1121 // non-blocking channel, so we need to be constantly listening
1122 go func() {
1123 for {
1124 s, ok := <-statusCh
1125 if !ok {
1126 return
1127 }
1128 newStatus <- s
1129 }

Callers

nothing calls this directly

Calls 11

runTrustServerFunction · 0.85
WaitOnChannelFunction · 0.85
ConnectMethod · 0.80
FatalfMethod · 0.80
ErrorHandlerMethod · 0.80
ForceReconnectMethod · 0.80
AddMethod · 0.65
EncodeMethod · 0.65
CloseMethod · 0.45
StatusChangedMethod · 0.45
IsMethod · 0.45

Tested by

no test coverage detected