@@ -9,12 +9,18 @@ import {
99 resolvePatchloomStatusWithInputs
1010} from "../../src/binary/patchloom" ;
1111import {
12+ assertTrustedManagedInstallDownloadUrl ,
1213 buildManagedInstallReleaseAssets ,
14+ calculateSha256Hex ,
1315 detectManagedInstallTarget ,
1416 inspectManagedInstallStatus ,
17+ ManagedInstallVerificationError ,
1518 normalizeReleaseVersion ,
19+ parseManagedInstallChecksumFile ,
1620 PATCHLOOM_MANAGED_INSTALL_DIR ,
17- resolveManagedInstallPaths
21+ resolveManagedInstallChecksum ,
22+ resolveManagedInstallPaths ,
23+ verifyManagedInstallArchiveChecksum
1824} from "../../src/install/managed" ;
1925import { resolveMcpTargets } from "../../src/mcp/config" ;
2026import { defaultWorkspaceFolderIndex , describeWorkspaceEnvironment } from "../../src/workspace/readiness" ;
@@ -163,6 +169,90 @@ test("buildManagedInstallReleaseAssets builds archive and checksum urls", () =>
163169 assert . match ( release . checksumDownloadUrl , / p a t c h l o o m - x 8 6 _ 6 4 - u n k n o w n - l i n u x - g n u \. t a r \. x z \. s h a 2 5 6 $ / ) ;
164170} ) ;
165171
172+ test ( "parseManagedInstallChecksumFile accepts common sha256 sidecar formats" , ( ) => {
173+ const entries = parseManagedInstallChecksumFile ( [
174+ "ece89100861aa6d4c7e409f279777d1619f8d86e0f67f396fa9f3e4535eb2f0e patchloom-aarch64-apple-darwin.tar.xz" ,
175+ "1dc508c14f9b3584c992c61dcf8d18d8d3a6770f33fff241038c1e9ea7b27a97 *patchloom-x86_64-unknown-linux-gnu.tar.xz"
176+ ] . join ( "\n" ) ) ;
177+
178+ assert . deepEqual ( entries , [
179+ {
180+ sha256 : "ece89100861aa6d4c7e409f279777d1619f8d86e0f67f396fa9f3e4535eb2f0e" ,
181+ fileName : "patchloom-aarch64-apple-darwin.tar.xz"
182+ } ,
183+ {
184+ sha256 : "1dc508c14f9b3584c992c61dcf8d18d8d3a6770f33fff241038c1e9ea7b27a97" ,
185+ fileName : "patchloom-x86_64-unknown-linux-gnu.tar.xz"
186+ }
187+ ] ) ;
188+ } ) ;
189+
190+ test ( "resolveManagedInstallChecksum returns the matching archive checksum" , ( ) => {
191+ const checksum = resolveManagedInstallChecksum (
192+ [
193+ "ece89100861aa6d4c7e409f279777d1619f8d86e0f67f396fa9f3e4535eb2f0e patchloom-aarch64-apple-darwin.tar.xz" ,
194+ "1dc508c14f9b3584c992c61dcf8d18d8d3a6770f33fff241038c1e9ea7b27a97 patchloom-x86_64-unknown-linux-gnu.tar.xz"
195+ ] . join ( "\n" ) ,
196+ "patchloom-x86_64-unknown-linux-gnu.tar.xz"
197+ ) ;
198+
199+ assert . equal ( checksum , "1dc508c14f9b3584c992c61dcf8d18d8d3a6770f33fff241038c1e9ea7b27a97" ) ;
200+ } ) ;
201+
202+ test ( "verifyManagedInstallArchiveChecksum validates archive content against the checksum sidecar" , ( ) => {
203+ const checksum = verifyManagedInstallArchiveChecksum (
204+ "patchloom" ,
205+ "ece89100861aa6d4c7e409f279777d1619f8d86e0f67f396fa9f3e4535eb2f0e patchloom-aarch64-apple-darwin.tar.xz" ,
206+ "patchloom-aarch64-apple-darwin.tar.xz"
207+ ) ;
208+
209+ assert . equal ( checksum , calculateSha256Hex ( "patchloom" ) ) ;
210+ } ) ;
211+
212+ test ( "verifyManagedInstallArchiveChecksum rejects mismatched archive content" , ( ) => {
213+ assert . throws (
214+ ( ) => verifyManagedInstallArchiveChecksum (
215+ "managed-install" ,
216+ "ece89100861aa6d4c7e409f279777d1619f8d86e0f67f396fa9f3e4535eb2f0e patchloom-aarch64-apple-darwin.tar.xz" ,
217+ "patchloom-aarch64-apple-darwin.tar.xz"
218+ ) ,
219+ ( error : unknown ) => {
220+ assert . ok ( error instanceof ManagedInstallVerificationError ) ;
221+ assert . equal ( error . reason , "checksum-mismatch" ) ;
222+ assert . match ( error . message , / c h e c k s u m m i s m a t c h / i) ;
223+ return true ;
224+ }
225+ ) ;
226+ } ) ;
227+
228+ test ( "parseManagedInstallChecksumFile rejects invalid lines" , ( ) => {
229+ assert . throws (
230+ ( ) => parseManagedInstallChecksumFile ( "not-a-checksum patchloom-aarch64-apple-darwin.tar.xz" ) ,
231+ ( error : unknown ) => {
232+ assert . ok ( error instanceof ManagedInstallVerificationError ) ;
233+ assert . equal ( error . reason , "invalid-checksum-format" ) ;
234+ return true ;
235+ }
236+ ) ;
237+ } ) ;
238+
239+ test ( "assertTrustedManagedInstallDownloadUrl only accepts GitHub release download urls" , ( ) => {
240+ assert . doesNotThrow ( ( ) => assertTrustedManagedInstallDownloadUrl (
241+ "https://github.com/patchloom/patchloom/releases/download/v0.1.0/patchloom-aarch64-apple-darwin.tar.xz"
242+ ) ) ;
243+
244+ assert . throws (
245+ ( ) => assertTrustedManagedInstallDownloadUrl (
246+ "https://example.com/patchloom-aarch64-apple-darwin.tar.xz"
247+ ) ,
248+ ( error : unknown ) => {
249+ assert . ok ( error instanceof ManagedInstallVerificationError ) ;
250+ assert . equal ( error . reason , "untrusted-download-url" ) ;
251+ return true ;
252+ }
253+ ) ;
254+ } ) ;
255+
166256test ( "managed install constants use a stable storage directory name" , ( ) => {
167257 assert . equal ( PATCHLOOM_MANAGED_INSTALL_DIR , "patchloom-managed" ) ;
168258} ) ;
0 commit comments