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

Function TestAuthExpiredReconnect

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

Source from the content-addressed store, hash-verified

826}
827
828func TestAuthExpiredReconnect(t *testing.T) {
829 ts := runTrustServer()
830 defer ts.Shutdown()
831
832 _, err := nats.Connect(ts.ClientURL())
833 if err == nil {
834 t.Fatalf("Expecting an error on connect")
835 }
836 ukp, err := nkeys.FromSeed(uSeed)
837 if err != nil {
838 t.Fatalf("Error creating user key pair: %v", err)
839 }
840 upub, err := ukp.PublicKey()
841 if err != nil {
842 t.Fatalf("Error getting user public key: %v", err)
843 }
844 akp, err := nkeys.FromSeed(aSeed)
845 if err != nil {
846 t.Fatalf("Error creating account key pair: %v", err)
847 }
848
849 jwtCB := func() (string, error) {
850 claims := jwt.NewUserClaims("test")
851 claims.Expires = time.Now().Add(time.Second).Unix()
852 claims.Subject = upub
853 jwt, err := claims.Encode(akp)
854 if err != nil {
855 return "", err
856 }
857 return jwt, nil
858 }
859 sigCB := func(nonce []byte) ([]byte, error) {
860 kp, _ := nkeys.FromSeed(uSeed)
861 sig, _ := kp.Sign(nonce)
862 return sig, nil
863 }
864
865 errCh := make(chan error, 1)
866 nc, err := nats.Connect(ts.ClientURL(), nats.UserJWT(jwtCB, sigCB), nats.ReconnectWait(100*time.Millisecond),
867 nats.ErrorHandler(func(_ *nats.Conn, _ *nats.Subscription, err error) {
868 errCh <- err
869 }))
870 if err != nil {
871 t.Fatalf("Expected to connect, got %v", err)
872 }
873 stasusCh := nc.StatusChanged(nats.RECONNECTING, nats.CONNECTED)
874 select {
875 case err := <-errCh:
876 if !errors.Is(err, nats.ErrAuthExpired) {
877 t.Fatalf("Expected auth expired error, got %v", err)
878 }
879 case <-time.After(2 * time.Second):
880 t.Fatal("Did not get the auth expired error")
881 }
882 WaitOnChannel(t, stasusCh, nats.RECONNECTING)
883 WaitOnChannel(t, stasusCh, nats.CONNECTED)
884 nc.Close()
885}

Callers

nothing calls this directly

Calls 10

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

Tested by

no test coverage detected