github.com/keybase/client/go@v0.0.0-20241007131713-f10651d043c8/service/lockdown_test.go (about)

     1  package service
     2  
     3  import (
     4  	"context"
     5  	"testing"
     6  
     7  	"github.com/keybase/client/go/kbtest"
     8  	"github.com/keybase/client/go/libkb"
     9  	keybase1 "github.com/keybase/client/go/protocol/keybase1"
    10  	"github.com/stretchr/testify/require"
    11  )
    12  
    13  func TestLockdownAPI(t *testing.T) {
    14  	tc := libkb.SetupTest(t, "lockdown", 3)
    15  	defer tc.Cleanup()
    16  
    17  	_, err := kbtest.CreateAndSignupFakeUser("lmu", tc.G)
    18  	require.NoError(t, err)
    19  
    20  	handler := NewAccountHandler(nil, tc.G)
    21  	ctx := context.Background()
    22  	res, err := handler.GetLockdownMode(ctx, 0)
    23  	require.NoError(t, err)
    24  	require.False(t, res.Status)
    25  	require.Len(t, res.History, 0)
    26  
    27  	err = handler.SetLockdownMode(ctx, keybase1.SetLockdownModeArg{
    28  		Enabled: true,
    29  	})
    30  	require.NoError(t, err)
    31  
    32  	res, err = handler.GetLockdownMode(ctx, 0)
    33  	require.NoError(t, err)
    34  	require.True(t, res.Status)
    35  	require.Len(t, res.History, 1)
    36  
    37  	require.True(t, res.History[0].Status)
    38  }
    39  
    40  func TestLockdownReset(t *testing.T) {
    41  	// See if we can still reset in lockdown mode.
    42  	// We should be able to!
    43  	tc := libkb.SetupTest(t, "lockdown", 3)
    44  	defer tc.Cleanup()
    45  
    46  	user, err := kbtest.CreateAndSignupFakeUser("lmu", tc.G)
    47  	require.NoError(t, err)
    48  
    49  	handler := NewAccountHandler(nil, tc.G)
    50  	ctx := context.Background()
    51  
    52  	err = handler.SetLockdownMode(ctx, keybase1.SetLockdownModeArg{
    53  		Enabled: true,
    54  	})
    55  	require.NoError(t, err)
    56  
    57  	res, err := handler.GetLockdownMode(ctx, 0)
    58  	require.NoError(t, err)
    59  	require.True(t, res.Status)
    60  
    61  	err = handler.ResetAccount(ctx, keybase1.ResetAccountArg{
    62  		Passphrase: user.Passphrase,
    63  	})
    64  	require.NoError(t, err)
    65  }
    66  
    67  func TestLockdownLogin(t *testing.T) {
    68  	tc := libkb.SetupTest(t, "lockdown", 3)
    69  	defer tc.Cleanup()
    70  
    71  	user, err := kbtest.CreateAndSignupFakeUser("lmu", tc.G)
    72  	require.NoError(t, err)
    73  
    74  	handler := NewAccountHandler(nil, tc.G)
    75  	ctx := context.Background()
    76  
    77  	err = handler.SetLockdownMode(ctx, keybase1.SetLockdownModeArg{
    78  		Enabled: true,
    79  	})
    80  	require.NoError(t, err)
    81  
    82  	m := libkb.NewMetaContextForTest(tc)
    83  	_, err = tc.G.ActiveDevice.SyncSecretsForce(m)
    84  	require.NoError(t, err)
    85  
    86  	kbtest.Logout(tc)
    87  	err = user.Login(tc.G)
    88  	require.NoError(t, err)
    89  }
    90  
    91  func TestLockdownProvisionAndLogin(t *testing.T) {
    92  	tc := libkb.SetupTest(t, "lockdown", 3)
    93  	defer tc.Cleanup()
    94  
    95  	user, err := kbtest.CreateAndSignupFakeUserPaper("lmu", tc.G)
    96  	require.NoError(t, err)
    97  
    98  	handler := NewAccountHandler(nil, tc.G)
    99  	ctx := context.Background()
   100  
   101  	err = handler.SetLockdownMode(ctx, keybase1.SetLockdownModeArg{
   102  		Enabled: true,
   103  	})
   104  	require.NoError(t, err)
   105  
   106  	tc2 := libkb.SetupTest(t, "lockdown_second", 3)
   107  	defer tc2.Cleanup()
   108  	kbtest.ProvisionNewDeviceKex(&tc, &tc2, user, keybase1.DeviceTypeV2_DESKTOP)
   109  
   110  	kbtest.Logout(tc)
   111  
   112  	err = user.Login(tc.G)
   113  	require.NoError(t, err)
   114  }