| package apidAnalytics |
| |
| import ( |
| . "github.com/onsi/ginkgo" |
| . "github.com/onsi/gomega" |
| "os" |
| "path/filepath" |
| ) |
| |
| var _ = Describe("test uploadFile()", func() { |
| It("should return status based on tenant", func() { |
| fakeDir := filepath.Join(localAnalyticsStagingDir, "testorg~testenv~20060102150405") |
| fp := filepath.Join(fakeDir, "fakefile.txt.gz") |
| os.Mkdir(fakeDir, os.ModePerm) |
| os.Create(fp) |
| |
| By("valid tenant") |
| tenant := "testorg~testenv" |
| relativeFilePath := "/date=2006-01-02/time=15-04/fakefile.txt.gz" |
| |
| status, err := uploadFile(tenant, relativeFilePath, fp) |
| Expect(err).ShouldNot(HaveOccurred()) |
| Expect(status).To(BeTrue()) |
| |
| By("invalid tenant") |
| tenant = "o~e" |
| relativeFilePath = "/date=2006-01-02/time=15-04/fakefile.txt.gz" |
| |
| status, err = uploadFile(tenant, relativeFilePath, fp) |
| Expect(err).Should(HaveOccurred()) |
| Expect(status).To(BeFalse()) |
| }) |
| }) |
| |
| var _ = Describe("test uploadDir()", func() { |
| Context("valid tenant", func() { |
| It("should return true and delete the file", func() { |
| fakeDir := filepath.Join(localAnalyticsStagingDir, "testorg~testenv~20060102150605") |
| fp := filepath.Join(fakeDir, "fakefile.txt.gz") |
| os.Mkdir(fakeDir, os.ModePerm) |
| os.Create(fp) |
| |
| dir, _ := os.Stat(fakeDir) |
| |
| status := uploadDir(dir) |
| Expect(status).To(BeTrue()) |
| Expect(fp).ToNot(BeAnExistingFile()) |
| }) |
| }) |
| Context("invalid tenant", func() { |
| It("should return false and file should not be deleted", func() { |
| fakeDir := filepath.Join(localAnalyticsStagingDir, "o~e~20060102150605") |
| fp := filepath.Join(fakeDir, "fakefile.txt.gz") |
| os.Mkdir(fakeDir, os.ModePerm) |
| os.Create(fp) |
| |
| dir, _ := os.Stat(fakeDir) |
| |
| status := uploadDir(dir) |
| Expect(status).To(BeFalse()) |
| Expect(fp).To(BeAnExistingFile()) |
| }) |
| }) |
| }) |
| |
| var _ = Describe("test getSignedUrl()", func() { |
| Context("invalid tenant", func() { |
| It("should return error", func() { |
| tenant := "org~env" |
| relativeFilePath := "/date=2016-01-01/time=22-45/a.txt.gz" |
| |
| _, err := getSignedUrl(tenant, relativeFilePath) |
| Expect(err).Should(HaveOccurred()) |
| Expect(err.Error()).Should(ContainSubstring("404 Not Found")) |
| }) |
| }) |
| Context("valid tenant", func() { |
| It("should return signed url", func() { |
| tenant := "testorg~testenv" |
| relativeFilePath := "/date=2016-01-01/time=22-45/a.txt.gz" |
| |
| url, err := getSignedUrl(tenant, relativeFilePath) |
| Expect(err).ShouldNot(HaveOccurred()) |
| Expect(url).ShouldNot(Equal("")) |
| }) |
| }) |
| }) |
| |
| var _ = Describe("test uploadFileToDatastore()", func() { |
| It("should return status based on response from mocked datastore", func() { |
| fakeDir := filepath.Join(localAnalyticsStagingDir, "d1~e1~20060102150405") |
| fp := filepath.Join(fakeDir, "fakefile.txt") |
| os.Mkdir(fakeDir, os.ModePerm) |
| os.Create(fp) |
| |
| By("trying to upload not existng file") |
| signedUrl := testServer.URL + "/upload?expected_status=ok" |
| status, err := uploadFileToDatastore("nofile", signedUrl) |
| Expect(err).Should(HaveOccurred()) |
| Expect(status).To(BeFalse()) |
| |
| By("successful file upload") |
| signedUrl = testServer.URL + "/upload?expected_status=ok" |
| status, err = uploadFileToDatastore(fp, signedUrl) |
| Expect(err).ShouldNot(HaveOccurred()) |
| Expect(status).To(BeTrue()) |
| |
| By("trying to upload file after signed url has expired") |
| signedUrl = testServer.URL + "/upload?expected_status=forbidden" |
| status, err = uploadFileToDatastore(fp, signedUrl) |
| Expect(status).To(BeFalse()) |
| Expect(err).Should(HaveOccurred()) |
| Expect(err.Error()).Should(ContainSubstring("403 Forbidden")) |
| |
| By("internal server error from datastore") |
| signedUrl = testServer.URL + "/upload?expected_status=serverError" |
| status, err = uploadFileToDatastore(fp, signedUrl) |
| Expect(status).To(BeFalse()) |
| Expect(err).Should(HaveOccurred()) |
| Expect(err.Error()).Should( |
| ContainSubstring("500 Internal Server Error")) |
| |
| }) |
| }) |
| |
| var _ = Describe("test splitDirName()", func() { |
| It("should return tenant and timestamp", func() { |
| dirname := "o1~e1~20060102150405" |
| tenant, timestamp := splitDirName(dirname) |
| Expect(tenant).To(Equal("o1~e1")) |
| Expect(timestamp).To(Equal("20060102150405")) |
| }) |
| }) |
| |
| var _ = Describe("test getDateFromDirTimestamp()", func() { |
| It("should return date/time formatted timestamp", func() { |
| timestamp := "20060102150405" |
| dateHourTS := getDateFromDirTimestamp(timestamp) |
| Expect(dateHourTS).To(Equal("date=2006-01-02/time=15-04")) |
| }) |
| }) |