(t *testing.T)
| 826 | } |
| 827 | |
| 828 | func 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 | } |
nothing calls this directly
no test coverage detected