@@ -154,74 +154,82 @@ def test_missing_db_raises(self):
154154
155155
156156class TestDiscover (unittest .TestCase ):
157- def test_discover_finds_firefox (self ):
157+ def _setup_and_discover (self , rel_path , fixture , platform ):
158+ """Create a fake browser profile and run discover."""
158159 with tempfile .TemporaryDirectory () as tmpdir :
159160 home = Path (tmpdir ) / "home"
160- profile_dir = (
161- home
162- / "Library"
163- / "Application Support"
164- / "Firefox"
165- / "abc12345.default-release"
166- )
167- profile_dir .mkdir (parents = True )
168- shutil .copy (FIXTURES / "places.sqlite" , profile_dir / "places.sqlite" )
169- dbs = discover (home = home )
170- firefox_dbs = [db for db in dbs if db .label == "Firefox" ]
171- self .assertTrue (len (firefox_dbs ) >= 1 )
172- self .assertEqual (firefox_dbs [0 ].schema , HistorySchema .FIREFOX )
173-
174- def test_discover_finds_chrome (self ):
175- with tempfile .TemporaryDirectory () as tmpdir :
176- home = Path (tmpdir ) / "home"
177- chrome_dir = (
178- home
179- / "Library"
180- / "Application Support"
181- / "Google"
182- / "Chrome"
183- / "Default"
184- )
185- chrome_dir .mkdir (parents = True )
186- shutil .copy (FIXTURES / "History" , chrome_dir / "History" )
187- dbs = discover (home = home )
188- chrome_dbs = [db for db in dbs if db .label == "Chrome" ]
189- self .assertTrue (len (chrome_dbs ) >= 1 )
190- self .assertEqual (chrome_dbs [0 ].schema , HistorySchema .CHROMIUM )
161+ dest = home / rel_path
162+ dest .parent .mkdir (parents = True , exist_ok = True )
163+ shutil .copy (FIXTURES / fixture , dest )
164+ return discover (home = home , platform = platform )
165+
166+ def test_discover_finds_firefox_macos (self ):
167+ dbs = self ._setup_and_discover (
168+ "Library/Application Support/Firefox/abc12345.default-release/places.sqlite" ,
169+ "places.sqlite" , "macos" )
170+ firefox_dbs = [db for db in dbs if db .label == "Firefox" ]
171+ self .assertEqual (len (firefox_dbs ), 1 )
172+ self .assertEqual (firefox_dbs [0 ].schema , HistorySchema .FIREFOX )
173+
174+ def test_discover_finds_firefox_linux (self ):
175+ dbs = self ._setup_and_discover (
176+ ".mozilla/firefox/abc12345.default-release/places.sqlite" ,
177+ "places.sqlite" , "linux" )
178+ firefox_dbs = [db for db in dbs if db .label == "Firefox" ]
179+ self .assertEqual (len (firefox_dbs ), 1 )
180+ self .assertEqual (firefox_dbs [0 ].schema , HistorySchema .FIREFOX )
181+
182+ def test_discover_finds_chrome_macos (self ):
183+ dbs = self ._setup_and_discover (
184+ "Library/Application Support/Google/Chrome/Default/History" ,
185+ "History" , "macos" )
186+ chrome_dbs = [db for db in dbs if db .label == "Chrome" ]
187+ self .assertEqual (len (chrome_dbs ), 1 )
188+ self .assertEqual (chrome_dbs [0 ].schema , HistorySchema .CHROMIUM )
189+
190+ def test_discover_finds_chrome_linux (self ):
191+ dbs = self ._setup_and_discover (
192+ ".config/google-chrome/Default/History" ,
193+ "History" , "linux" )
194+ chrome_dbs = [db for db in dbs if db .label == "Chrome" ]
195+ self .assertEqual (len (chrome_dbs ), 1 )
196+ self .assertEqual (chrome_dbs [0 ].schema , HistorySchema .CHROMIUM )
191197
192198 def test_discover_finds_safari (self ):
193- with tempfile .TemporaryDirectory () as tmpdir :
194- home = Path (tmpdir ) / "home"
195- safari_dir = home / "Library" / "Safari"
196- safari_dir .mkdir (parents = True )
197- shutil .copy (FIXTURES / "safari" / "History.db" , safari_dir / "History.db" )
198- dbs = discover (home = home )
199- safari_dbs = [db for db in dbs if db .label == "Safari" ]
200- self .assertTrue (len (safari_dbs ) >= 1 )
201- self .assertEqual (safari_dbs [0 ].schema , HistorySchema .SAFARI )
199+ dbs = self ._setup_and_discover (
200+ "Library/Safari/History.db" ,
201+ "safari/History.db" , "macos" )
202+ safari_dbs = [db for db in dbs if db .label == "Safari" ]
203+ self .assertEqual (len (safari_dbs ), 1 )
204+ self .assertEqual (safari_dbs [0 ].schema , HistorySchema .SAFARI )
202205
203206 def test_discover_empty_home (self ):
204207 with tempfile .TemporaryDirectory () as tmpdir :
205208 home = Path (tmpdir ) / "emptyhome"
206209 home .mkdir ()
207- dbs = discover (home = home )
208- self .assertEqual (dbs , [])
210+ for platform in ("macos" , "linux" ):
211+ dbs = discover (home = home , platform = platform )
212+ self .assertEqual (dbs , [])
213+
214+ def test_discover_multiple_chrome_profiles_macos (self ):
215+ with tempfile .TemporaryDirectory () as tmpdir :
216+ home = Path (tmpdir ) / "home"
217+ for profile in ("Default" , "Profile 1" ):
218+ d = home / "Library" / "Application Support" / "Google" / "Chrome" / profile
219+ d .mkdir (parents = True )
220+ shutil .copy (FIXTURES / "History" , d / "History" )
221+ dbs = discover (home = home , platform = "macos" )
222+ chrome_dbs = [db for db in dbs if db .label == "Chrome" ]
223+ self .assertEqual (len (chrome_dbs ), 2 )
209224
210- def test_discover_multiple_chrome_profiles (self ):
225+ def test_discover_multiple_chrome_profiles_linux (self ):
211226 with tempfile .TemporaryDirectory () as tmpdir :
212227 home = Path (tmpdir ) / "home"
213228 for profile in ("Default" , "Profile 1" ):
214- d = (
215- home
216- / "Library"
217- / "Application Support"
218- / "Google"
219- / "Chrome"
220- / profile
221- )
229+ d = home / ".config" / "google-chrome" / profile
222230 d .mkdir (parents = True )
223231 shutil .copy (FIXTURES / "History" , d / "History" )
224- dbs = discover (home = home )
232+ dbs = discover (home = home , platform = "linux" )
225233 chrome_dbs = [db for db in dbs if db .label == "Chrome" ]
226234 self .assertEqual (len (chrome_dbs ), 2 )
227235
0 commit comments