Merge pull request #8 from 30x/disable-bundle-checksum

disable bundle checksums until server implements (XAPID-544)
diff --git a/bundle.go b/bundle.go
index a1b23c2..83eaff9 100644
--- a/bundle.go
+++ b/bundle.go
@@ -202,12 +202,22 @@
 	case "crc-32":
 		hashWriter = crc32.NewIEEE()
 	default:
-		return nil, errors.New("checksumType must be md5 or crc-32")
+		// todo: temporary - this disables checksums until server implements (XAPID-544)
+		hashWriter = fakeHash{md5.New()}
+		//return nil, errors.New("checksumType must be md5 or crc-32")
 	}
 
 	return hashWriter, nil
 }
 
+type fakeHash struct {
+	hash.Hash
+}
+
+func (f fakeHash) Sum(b []byte) []byte {
+	return []byte("")
+}
+
 //func checksumFile(hashType, checksum string, fileName string) error {
 //
 //	hashWriter, err := getHashWriter(hashType)
diff --git a/bundle_test.go b/bundle_test.go
index 1c959d9..4f2bad2 100644
--- a/bundle_test.go
+++ b/bundle_test.go
@@ -96,5 +96,69 @@
 			Expect(d.DeployErrorMessage).ToNot(BeEmpty())
 			Expect(d.LocalBundleURI).To(BeAnExistingFile())
 		})
+
+		// todo: temporary - this tests that checksum is disabled until server implements (XAPID-544)
+		It("should TEMPORARILY download even if empty Checksum and ChecksumType", func() {
+
+			deploymentID := "bundle_download_temporary"
+
+			uri, err := url.Parse(testServer.URL)
+			Expect(err).ShouldNot(HaveOccurred())
+
+			uri.Path = "/bundles/1"
+			bundleUri := uri.String()
+			bundle := bundleConfigJson{
+				Name:         uri.Path,
+				URI:          bundleUri,
+				ChecksumType: "",
+				Checksum: "",
+			}
+			bundleJson, err := json.Marshal(bundle)
+			Expect(err).ShouldNot(HaveOccurred())
+
+			tx, err := getDB().Begin()
+			Expect(err).ShouldNot(HaveOccurred())
+
+			dep := DataDeployment{
+				ID:                 deploymentID,
+				BundleConfigID:     deploymentID,
+				ApidClusterID:      deploymentID,
+				DataScopeID:        deploymentID,
+				BundleConfigJSON:   string(bundleJson),
+				ConfigJSON:         string(bundleJson),
+				Created:            "",
+				CreatedBy:          "",
+				Updated:            "",
+				UpdatedBy:          "",
+				BundleName:         deploymentID,
+				BundleURI:          bundle.URI,
+				BundleChecksum:     bundle.Checksum,
+				BundleChecksumType: bundle.ChecksumType,
+				LocalBundleURI:     "",
+				DeployStatus:       "",
+				DeployErrorCode:    0,
+				DeployErrorMessage: "",
+			}
+
+			err = InsertDeployment(tx, dep)
+			Expect(err).ShouldNot(HaveOccurred())
+
+			err = tx.Commit()
+			Expect(err).ShouldNot(HaveOccurred())
+
+			go downloadBundle(dep)
+
+			// give download time to finish
+			time.Sleep(bundleDownloadTimeout + (100 * time.Millisecond))
+
+			deployments, err := getReadyDeployments()
+			Expect(err).ShouldNot(HaveOccurred())
+
+			Expect(len(deployments)).To(Equal(1))
+			d := deployments[0]
+
+			Expect(d.ID).To(Equal(deploymentID))
+			Expect(d.LocalBundleURI).To(BeAnExistingFile())
+		})
 	})
 })