From b94e67e57f3dbf77d5981569c83629f7df36933a Mon Sep 17 00:00:00 2001 From: Harshavardhana Date: Wed, 20 May 2015 15:10:04 -0700 Subject: [PATCH] Add new tests for common methods, make necessary changes to support testing config file creation --- cmd_test.go | 83 +++++++++++++++++++++++++++++++++++++++++++++++++++++ globals.go | 2 +- 2 files changed, 84 insertions(+), 1 deletion(-) diff --git a/cmd_test.go b/cmd_test.go index d848c191..a2238f39 100644 --- a/cmd_test.go +++ b/cmd_test.go @@ -17,10 +17,13 @@ package main import ( + "bytes" + "io" "io/ioutil" "os" "os/user" "path" + "path/filepath" "runtime" "testing" @@ -46,6 +49,12 @@ func mustGetMcConfigDir() string { func (s *CmdTestSuite) TestGetNewClient(c *C) { _, err := getNewClient("http://example.com/bucket1", &hostConfig{}, false) c.Assert(err, IsNil) + _, err = getNewClient("C:\\Users\\Administrator\\MyDocuments", &hostConfig{}, false) + c.Assert(err, IsNil) + _, err = getNewClient("/usr/bin/pandoc", &hostConfig{}, false) + c.Assert(err, IsNil) + _, err = getNewClient("pkg/client", &hostConfig{}, false) + c.Assert(err, IsNil) } func (s *CmdTestSuite) TestNewConfigV1(c *C) { @@ -102,6 +111,15 @@ func (s *CmdTestSuite) TestNewConfigV1(c *C) { } } +func (s *CmdTestSuite) TestRecursiveURL(c *C) { + c.Assert(isURLRecursive("url..."), Equals, true) + c.Assert(isURLRecursive("url.."), Equals, false) + c.Assert(stripRecursiveURL("url..."), Equals, "url") + c.Assert(stripRecursiveURL("url.."), Equals, "url..") + c.Assert(stripRecursiveURL("..."), Equals, ".") + c.Assert(stripRecursiveURL("...url"), Equals, "...url") +} + func (s *CmdTestSuite) TestValidACL(c *C) { acl := bucketACL("private") c.Assert(acl.isValidBucketACL(), Equals, true) @@ -113,6 +131,12 @@ func (s *CmdTestSuite) TestInvalidACL(c *C) { } func (s *CmdTestSuite) TestGetMcConfigDir(c *C) { + switch runtime.GOOS { + case "windows": + mcConfigWindowsDir = "mc/" + default: + mcConfigDir = ".mc/" + } u, err := user.Current() c.Assert(err, IsNil) dir, err := getMcConfigDir() @@ -160,6 +184,7 @@ func (s *CmdTestSuite) TestIsvalidAliasName(c *C) { c.Check(isValidAliasName("0dslka-4"), Equals, false) c.Check(isValidAliasName("-fdslka"), Equals, false) c.Check(isValidAliasName("help"), Equals, false) + c.Check(isValidAliasName("private"), Equals, false) // reserved names } func (s *CmdTestSuite) TestEmptyExpansions(c *C) { @@ -232,3 +257,61 @@ func (s *CmdTestSuite) TestIsValidRetry(c *C) { c.Assert(isValidRetry(opError), Equals, false) c.Assert(isValidRetry(iodine.New(opError, nil)), Equals, false) } + +func (s *CmdTestSuite) TestConfig(c *C) { + root, err := ioutil.TempDir(os.TempDir(), "cmd-") + c.Assert(err, IsNil) + defer os.RemoveAll(root) + switch runtime.GOOS { + case "windows": + mcConfigWindowsDir = root + default: + mcConfigDir = root + } + + _, err = doConfig("generate", nil) + c.Assert(err, IsNil) +} + +func (s *CmdTestSuite) TestCommonMethods(c *C) { + configDir, err := ioutil.TempDir(os.TempDir(), "cmd-") + c.Assert(err, IsNil) + defer os.RemoveAll(configDir) + switch runtime.GOOS { + case "windows": + mcConfigWindowsDir = configDir + default: + mcConfigDir = configDir + } + _, err = doConfig("generate", nil) + c.Assert(err, IsNil) + + /// filesystem + root, err := ioutil.TempDir(os.TempDir(), "cmd-") + c.Assert(err, IsNil) + defer os.RemoveAll(root) + + objectPath := filepath.Join(root, "object1") + data := "hello" + dataLen := len(data) + + err = putTarget(objectPath, &hostConfig{}, uint64(dataLen), bytes.NewReader([]byte(data))) + c.Assert(err, IsNil) + + reader, size, err := getSource(objectPath, &hostConfig{}) + c.Assert(err, IsNil) + c.Assert(size, Not(Equals), 0) + var results bytes.Buffer + _, err = io.CopyN(&results, reader, int64(size)) + c.Assert(err, IsNil) + c.Assert([]byte(data), DeepEquals, results.Bytes()) + + _, content, err := url2Stat(objectPath) + c.Assert(err, IsNil) + c.Assert(content.Name, Equals, filepath.Join(root, "object1")) + c.Assert(content.Type.IsRegular(), Equals, true) + + _, _, err = url2Stat(objectPath + "invalid") + c.Assert(err, Not(IsNil)) + +} diff --git a/globals.go b/globals.go index c32a2285..19347a41 100644 --- a/globals.go +++ b/globals.go @@ -26,7 +26,7 @@ var ( ) // mc configuration related constants -const ( +var ( mcConfigDir = ".mc/" mcConfigWindowsDir = "mc/" mcConfigFile = "config.json"