github.com/keybase/client/go@v0.0.0-20240309051027-028f7c731f8b/engine/pgp_purge_test.go (about) 1 // Copyright 2015 Keybase, Inc. All rights reserved. Use of 2 // this source code is governed by the included BSD license. 3 4 package engine 5 6 import ( 7 "testing" 8 9 "github.com/keybase/client/go/libkb" 10 keybase1 "github.com/keybase/client/go/protocol/keybase1" 11 ) 12 13 // Test the export of the keys. 14 func TestPGPPurgeLksec(t *testing.T) { 15 tc := SetupEngineTest(t, "purge") 16 defer tc.Cleanup() 17 18 createFakeUserWithPGPSibkeyPaper(tc) 19 20 idUI := &FakeIdentifyUI{ 21 Proofs: make(map[string]string), 22 } 23 uis := libkb.UIs{ 24 SecretUI: &libkb.TestSecretUI{}, // empty on purpose...shouldn't be necessary 25 SaltpackUI: &fakeSaltpackUI{}, 26 IdentifyUI: idUI, 27 } 28 eng := NewPGPPurge(tc.G, keybase1.PGPPurgeArg{}) 29 m := NewMetaContextForTest(tc).WithUIs(uis) 30 if err := RunEngine2(m, eng); err != nil { 31 t.Fatal(err) 32 } 33 34 if len(eng.KeyFiles()) != 1 { 35 t.Fatalf("number of exported key files: %d, expected 1", len(eng.KeyFiles())) 36 } 37 } 38 39 // Test the removal of the keys. 40 func TestPGPPurgeRemove(t *testing.T) { 41 tc := SetupEngineTest(t, "purge") 42 defer tc.Cleanup() 43 44 u := createFakeUserWithPGPSibkey(tc) 45 46 idUI := &FakeIdentifyUI{ 47 Proofs: make(map[string]string), 48 } 49 uis := libkb.UIs{ 50 SecretUI: &libkb.TestSecretUI{}, // empty on purpose...shouldn't be necessary 51 SaltpackUI: &fakeSaltpackUI{}, 52 IdentifyUI: idUI, 53 } 54 eng := NewPGPPurge(tc.G, keybase1.PGPPurgeArg{DoPurge: true}) 55 m := NewMetaContextForTest(tc).WithUIs(uis) 56 if err := RunEngine2(m, eng); err != nil { 57 t.Fatal(err) 58 } 59 60 if len(eng.KeyFiles()) != 1 { 61 t.Fatalf("number of exported key files: %d, expected 1", len(eng.KeyFiles())) 62 } 63 64 kr := libkb.NewSKBKeyringFile(tc.G, libkb.NewNormalizedUsername(u.Username)) 65 if err := kr.LoadAndIndex(m.Ctx()); err != nil { 66 t.Fatal(err) 67 } 68 if kr.HasPGPKeys() { 69 t.Fatal("after purge, keyring has pgp keys") 70 } 71 72 // redo, should purge 0 files 73 74 eng = NewPGPPurge(tc.G, keybase1.PGPPurgeArg{DoPurge: true}) 75 if err := RunEngine2(m, eng); err != nil { 76 t.Fatal(err) 77 } 78 79 if len(eng.KeyFiles()) != 0 { 80 t.Fatalf("number of exported key files: %d, expected 0", len(eng.KeyFiles())) 81 } 82 83 } 84 85 // Create a user with a synced PGP key. PGPPurge shouldn't touch it. 86 func TestPGPPurgeSync(t *testing.T) { 87 tc := SetupEngineTest(t, "purge") 88 u1 := createFakeUserWithPGPOnly(t, tc) 89 Logout(tc) 90 tc.Cleanup() 91 92 tc = SetupEngineTest(t, "purge") 93 defer tc.Cleanup() 94 95 uis := libkb.UIs{ 96 ProvisionUI: newTestProvisionUIPassphrase(), 97 LoginUI: &libkb.TestLoginUI{Username: u1.Username}, 98 LogUI: tc.G.UI.GetLogUI(), 99 SecretUI: u1.NewSecretUI(), 100 GPGUI: &gpgtestui{}, 101 } 102 leng := NewLogin(tc.G, keybase1.DeviceTypeV2_DESKTOP, "", keybase1.ClientType_CLI) 103 m := NewMetaContextForTest(tc).WithUIs(uis) 104 if err := RunEngine2(m, leng); err != nil { 105 t.Fatal(err) 106 } 107 108 // user has device keys + synced 3sec pgp key 109 110 idUI := &FakeIdentifyUI{ 111 Proofs: make(map[string]string), 112 } 113 uis = libkb.UIs{ 114 SecretUI: &libkb.TestSecretUI{}, // empty on purpose...shouldn't be necessary 115 SaltpackUI: &fakeSaltpackUI{}, 116 IdentifyUI: idUI, 117 } 118 eng := NewPGPPurge(tc.G, keybase1.PGPPurgeArg{}) 119 m = NewMetaContextForTest(tc).WithUIs(uis) 120 if err := RunEngine2(m, eng); err != nil { 121 t.Fatal(err) 122 } 123 124 if len(eng.KeyFiles()) != 0 { 125 t.Fatalf("number of exported key files: %d, expected 0", len(eng.KeyFiles())) 126 } 127 }