1package engine
2
3import (
4	"testing"
5
6	"github.com/keybase/client/go/libkb"
7	"github.com/stretchr/testify/require"
8)
9
10func TestLoginDeviceIDConfigIssues(t *testing.T) {
11	tc := SetupEngineTest(t, "login")
12	defer tc.Cleanup()
13
14	// create a user to fill up config with something
15	fu := CreateAndSignupFakeUser(tc, "fake")
16	Logout(tc)
17
18	// remove device id from config file
19	err := tc.G.Env.GetConfigWriter().SetDeviceID("")
20	require.NoError(t, err)
21
22	// now try to log in on current device
23	uis := libkb.UIs{
24		LoginUI:  &libkb.TestLoginUI{Username: fu.Username},
25		LogUI:    tc.G.UI.GetLogUI(),
26		SecretUI: fu.NewSecretUI(),
27	}
28	eng := NewLoginProvisionedDevice(tc.G, fu.Username)
29	m := NewMetaContextForTest(tc).WithUIs(uis)
30	err = RunEngine2(m, eng)
31	if err != errNoDevice {
32		t.Errorf("run error: %v, expected %v", err, errNoDevice)
33	}
34
35	// put a device id into config file that is not this user's device
36	err = tc.G.Env.GetConfigWriter().SetDeviceID("31a7669bfa163eed3619780ebac8ee18")
37	require.NoError(t, err)
38	eng = NewLoginProvisionedDevice(tc.G, fu.Username)
39	err = RunEngine2(m, eng)
40	if err != errNoDevice {
41		t.Errorf("run error: %v, expected %v", err, errNoDevice)
42	}
43}
44