From af542a2fc181d60e12b43091fb53aaf3ec230737 Mon Sep 17 00:00:00 2001 From: James Houlahan Date: Wed, 2 Nov 2022 21:17:06 +0100 Subject: [PATCH] Other: Ensure logout works when offline --- internal/bridge/user_test.go | 14 ++++++++++++-- internal/user/user.go | 2 +- 2 files changed, 13 insertions(+), 3 deletions(-) diff --git a/internal/bridge/user_test.go b/internal/bridge/user_test.go index b306c938..ba4ee105 100644 --- a/internal/bridge/user_test.go +++ b/internal/bridge/user_test.go @@ -491,10 +491,11 @@ func TestBridge_LoginLogoutRepeated(t *testing.T) { func TestBridge_LogoutOffline(t *testing.T) { withEnv(t, func(ctx context.Context, s *server.Server, netCtl *liteapi.NetCtl, locator bridge.Locator, storeKey []byte) { + var userID string + withBridge(ctx, t, s.GetHostURL(), netCtl, locator, storeKey, func(bridge *bridge.Bridge, mocks *bridge.Mocks) { // Login the user. - userID, err := bridge.LoginFull(ctx, username, password, nil, nil) - require.NoError(t, err) + userID = must(bridge.LoginFull(ctx, username, password, nil, nil)) // The user is now connected. require.Equal(t, []string{userID}, bridge.GetUserIDs()) @@ -510,6 +511,15 @@ func TestBridge_LogoutOffline(t *testing.T) { require.Equal(t, []string{userID}, bridge.GetUserIDs()) require.Empty(t, getConnectedUserIDs(t, bridge)) }) + + // Go back online. + netCtl.Enable() + + withBridge(ctx, t, s.GetHostURL(), netCtl, locator, storeKey, func(bridge *bridge.Bridge, mocks *bridge.Mocks) { + // The user is still disconnected. + require.Equal(t, []string{userID}, bridge.GetUserIDs()) + require.Empty(t, getConnectedUserIDs(t, bridge)) + }) }) } diff --git a/internal/user/user.go b/internal/user/user.go index 3ae7d8e5..06a87faf 100644 --- a/internal/user/user.go +++ b/internal/user/user.go @@ -562,7 +562,7 @@ func (user *User) Logout(ctx context.Context, withAPI bool) error { if withAPI { if err := user.client.AuthDelete(ctx); err != nil { - return fmt.Errorf("failed to delete auth: %w", err) + user.log.WithError(err).Warn("Failed to delete auth") } }