1717package com .google .cloud .tools .skaffold .downloader ;
1818
1919import java .io .IOException ;
20+ import java .nio .charset .StandardCharsets ;
21+ import java .nio .file .Files ;
2022import java .nio .file .Path ;
23+ import java .security .MessageDigest ;
24+ import java .security .NoSuchAlgorithmException ;
25+ import javax .xml .bind .DatatypeConverter ;
2126import org .junit .Assert ;
2227import org .junit .Rule ;
2328import org .junit .Test ;
@@ -29,10 +34,25 @@ public class SkaffoldDownloaderIntegrationTest {
2934 @ Rule public TemporaryFolder temporaryFolder = new TemporaryFolder ();
3035
3136 @ Test
32- public void testDownloadLatest () throws IOException , InterruptedException {
37+ public void testDownloadLatest ()
38+ throws IOException , InterruptedException , NoSuchAlgorithmException {
3339 Path temporarySkaffoldExecutable = temporaryFolder .newFile ().toPath ();
3440 SkaffoldDownloader .downloadLatest (temporarySkaffoldExecutable );
3541 Process skaffoldProcess = new ProcessBuilder (temporarySkaffoldExecutable .toString ()).start ();
3642 Assert .assertEquals (0 , skaffoldProcess .waitFor ());
43+
44+ // Downloads and checks that the digest matches.
45+ Path temporarySkaffoldExecutableDigest = temporaryFolder .newFile ().toPath ();
46+ SkaffoldDownloader .downloadLatestDigest (temporarySkaffoldExecutableDigest );
47+
48+ MessageDigest messageDigest = MessageDigest .getInstance ("SHA-256" );
49+ byte [] expectedDigest = messageDigest .digest (Files .readAllBytes (temporarySkaffoldExecutable ));
50+
51+ String receivedDigestHex =
52+ new String (Files .readAllBytes (temporarySkaffoldExecutableDigest ), StandardCharsets .UTF_8 )
53+ .substring (0 , 64 );
54+ byte [] receivedDigest = DatatypeConverter .parseHexBinary (receivedDigestHex );
55+
56+ Assert .assertArrayEquals (expectedDigest , receivedDigest );
3757 }
3858}
0 commit comments