github.com/phobos182/packer@v0.2.3-0.20130819023704-c84d2aeffc68/common/download_test.go (about) 1 package common 2 3 import ( 4 "crypto/md5" 5 "encoding/hex" 6 "io/ioutil" 7 "os" 8 "testing" 9 ) 10 11 func TestDownloadClient_VerifyChecksum(t *testing.T) { 12 tf, err := ioutil.TempFile("", "packer") 13 if err != nil { 14 t.Fatalf("tempfile error: %s", err) 15 } 16 defer os.Remove(tf.Name()) 17 18 // "foo" 19 checksum, err := hex.DecodeString("acbd18db4cc2f85cedef654fccc4a4d8") 20 if err != nil { 21 t.Fatalf("decode err: %s", err) 22 } 23 24 // Write the file 25 tf.Write([]byte("foo")) 26 tf.Close() 27 28 config := &DownloadConfig{ 29 Hash: md5.New(), 30 Checksum: checksum, 31 } 32 33 d := NewDownloadClient(config) 34 result, err := d.VerifyChecksum(tf.Name()) 35 if err != nil { 36 t.Fatalf("Verify err: %s", err) 37 } 38 39 if !result { 40 t.Fatal("didn't verify") 41 } 42 } 43 44 func TestHashForType(t *testing.T) { 45 if h := HashForType("md5"); h == nil { 46 t.Fatalf("md5 hash is nil") 47 } else { 48 h.Write([]byte("foo")) 49 result := h.Sum(nil) 50 51 expected := "acbd18db4cc2f85cedef654fccc4a4d8" 52 actual := hex.EncodeToString(result) 53 if actual != expected { 54 t.Fatalf("bad hash: %s", actual) 55 } 56 } 57 58 if h := HashForType("sha1"); h == nil { 59 t.Fatalf("sha1 hash is nil") 60 } else { 61 h.Write([]byte("foo")) 62 result := h.Sum(nil) 63 64 expected := "0beec7b5ea3f0fdbc95d0dd47f3c5bc275da8a33" 65 actual := hex.EncodeToString(result) 66 if actual != expected { 67 t.Fatalf("bad hash: %s", actual) 68 } 69 } 70 71 if h := HashForType("sha256"); h == nil { 72 t.Fatalf("sha256 hash is nil") 73 } else { 74 h.Write([]byte("foo")) 75 result := h.Sum(nil) 76 77 expected := "2c26b46b68ffc68ff99b453c1d30413413422d706483bfa0f98a5e886266e7ae" 78 actual := hex.EncodeToString(result) 79 if actual != expected { 80 t.Fatalf("bad hash: %s", actual) 81 } 82 } 83 84 if HashForType("fake") != nil { 85 t.Fatalf("fake hash is not nil") 86 } 87 }