1515package mitmproxy
1616
1717import (
18+ "os"
1819 "path/filepath"
1920 "testing"
2021
@@ -33,3 +34,41 @@ func TestCandidateCACertPaths(t *testing.T) {
3334 filepath .Join (h , ".mitmproxy" , mitmCACertName ),
3435 }, got )
3536}
37+
38+ func TestPurgeStaleExportedCAFrom_RemovesExistingFile (t * testing.T ) {
39+ root := t .TempDir ()
40+ path := filepath .Join (root , mitmCACertName )
41+ require .NoError (t , os .WriteFile (path , []byte ("stale-ca" ), 0o644 ))
42+
43+ purgeStaleExportedCAFrom (root )
44+
45+ _ , err := os .Stat (path )
46+ require .True (t , os .IsNotExist (err ), "expected file to be removed, got err=%v" , err )
47+ }
48+
49+ func TestPurgeStaleExportedCAFrom_NoFileIsNoOp (t * testing.T ) {
50+ root := t .TempDir ()
51+ // No file present; must not panic and must not create anything.
52+ purgeStaleExportedCAFrom (root )
53+
54+ entries , err := os .ReadDir (root )
55+ require .NoError (t , err )
56+ require .Empty (t , entries )
57+ }
58+
59+ func TestPurgeStaleExportedCAFrom_LeavesUnrelatedFiles (t * testing.T ) {
60+ root := t .TempDir ()
61+ stale := filepath .Join (root , mitmCACertName )
62+ require .NoError (t , os .WriteFile (stale , []byte ("stale-ca" ), 0o644 ))
63+
64+ // A sibling file that must survive (e.g. the agent's merged bundle).
65+ other := filepath .Join (root , "merged-ca-certificates.pem" )
66+ require .NoError (t , os .WriteFile (other , []byte ("merged" ), 0o644 ))
67+
68+ purgeStaleExportedCAFrom (root )
69+
70+ _ , err := os .Stat (stale )
71+ require .True (t , os .IsNotExist (err ))
72+ _ , err = os .Stat (other )
73+ require .NoError (t , err )
74+ }
0 commit comments