blob: b4a6d8457f6f6fe19c2921ef21001245056d2b06 [file] [log] [blame]
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())
e, _ := exists(fp)
Expect(e).To(BeFalse())
})
})
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())
e, _ := exists(fp)
Expect(e).To(BeTrue())
})
})
})
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(""))
log.Debugf(url)
})
})
})
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"))
})
})