1// Copyright 2015 Keybase, Inc. All rights reserved. Use of
2// this source code is governed by the included BSD license.
3
4package engine
5
6import (
7	"testing"
8
9	"github.com/keybase/client/go/libkb"
10	"github.com/stretchr/testify/require"
11)
12
13func TestProveRooter(t *testing.T) {
14	doWithSigChainVersions(func(sigVersion libkb.SigVersion) {
15		_testProveRooter(t, sigVersion)
16	})
17}
18
19func _testProveRooter(t *testing.T, sigVersion libkb.SigVersion) {
20	tc := SetupEngineTest(t, "prove")
21	defer tc.Cleanup()
22
23	fu := CreateAndSignupFakeUser(tc, "prove")
24
25	proveUI, _, err := proveRooter(tc.G, fu, sigVersion)
26	require.NoError(t, err)
27
28	require.False(t, proveUI.overwrite)
29	require.False(t, proveUI.warning)
30	require.False(t, proveUI.recheck)
31	require.True(t, proveUI.checked)
32}
33
34// Make sure the prove engine uses the secret store.
35func TestProveRooterWithSecretStore(t *testing.T) {
36	doWithSigChainVersions(func(sigVersion libkb.SigVersion) {
37		_testProveRooterWithSecretStore(t, sigVersion)
38	})
39}
40
41func _testProveRooterWithSecretStore(t *testing.T, sigVersion libkb.SigVersion) {
42	testEngineWithSecretStore(t, func(
43		tc libkb.TestContext, fu *FakeUser, secretUI libkb.SecretUI) {
44		_, _, err := proveRooterWithSecretUI(tc.G, fu, secretUI, sigVersion)
45		require.NoError(t, err)
46	})
47}
48
49// When device keys are cached, proofs shouldn't require passphrase prompt.
50func TestProveRooterCachedKeys(t *testing.T) {
51	tc := SetupEngineTest(t, "prove")
52	defer tc.Cleanup()
53	sigVersion := libkb.GetDefaultSigVersion(tc.G)
54
55	fu := CreateAndSignupFakeUser(tc, "prove")
56	clearCaches(tc.G)
57
58	_, _, err := proveRooterWithSecretUI(tc.G, fu, &libkb.TestSecretUI{}, sigVersion)
59	require.NoError(t, err)
60}
61
62func TestProveGenericSocial(t *testing.T) {
63	tc := SetupEngineTest(t, "prove")
64	defer tc.Cleanup()
65	sigVersion := libkb.KeybaseSignatureV2
66
67	fu := CreateAndSignupFakeUser(tc, "prove")
68	proveGubbleSocial(tc, fu, sigVersion)
69	proveGubbleCloud(tc, fu, sigVersion)
70}
71