As a software engineer
I want to have good code coverage of PublicArchiveService
So that I can have confidence that changes won't break existing functionality

Given mockall can be used to mock struct impl dependencies
When adding unit tests to PublicArchiveService
Then create mockall mocks to create mock instances of FileService, PublicArchiveCachingClient and PublicDataCachingClient
And use these mocks to test PublicArchiveService methods
And use 'mock!' to define test doubles whose actions can be mocked
And use PointerService in pointer_service.rs and PointerCachingClient in pointer_caching_client.rs as examples
And use #[double] annotation above the import in cases when the non-mock dependency is used

Implementation Notes

- Place any unit tests at the bottom of the same file as the associated production code
- Increment patch version of anttp package in Cargo.toml
- Create a copy of this issue description and save to /spec using the name of this issue as the filename (with lower underscore case, starting with the 5 char padded issue number, e.g. 00001_issue_title.txt)
- Fix failing unit tests in PublicArchiveService and improve coverage
- Do not clone or mock other *_service.rs code (only mock FileService in file_service.rs using 'mock!')
- Mock PublicArchiveCachingClient using mockall `!mock` annotation to improve testing of public_archive_service.rs
- Update get_public_archive to allow path to be optional
- Use #[double] (from 'mockall_double::double') on any imports which have a mocked version to avoid dependency errors