~jtv/gwacl/storage-tool-command-line

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
// Copyright 2013 Canonical Ltd.  This software is licensed under the
// GNU Lesser General Public License version 3 (see the file COPYING).

package gwacl

import (
    "encoding/base64"
    . "launchpad.net/gocheck"
    "time"
)

type sharedSignatureSuite struct{}

var _ = Suite(&sharedSignatureSuite{})

func (*sharedSignatureSuite) TestComposeSharedSignature(c *C) {
    params := &sharedSignatureParams{
        permission:       "r",
        signedExpiry:     "2015-02-12",
        path:             "/path/to/file",
        accountName:      "name",
        signedIdentifier: "identifier",
        signedVersion:    "2012-02-12",
        signedRessource:  "/the/ressource",
        accountKey:       base64.StdEncoding.EncodeToString([]byte("key")),
    }

    signature := params.composeSharedSignature()
    c.Check(signature, Equals, "C/COJt8UagHJR2LBT1129bhDChtgfLGFqfZ0YQpBdF0=")
}

func (*sharedSignatureSuite) TestComposeAccessQueryValues(c *C) {
    params := &sharedSignatureParams{
        permission:       "r",
        signedExpiry:     "2015-02-12",
        path:             "/path/to/file",
        accountName:      "name",
        signedIdentifier: "identifier",
        signedVersion:    "2012-02-12",
        signedRessource:  "/the/ressource",
        accountKey:       base64.StdEncoding.EncodeToString([]byte("key")),
    }

    values := params.composeAccessQueryValues()

    c.Check(values.Get("sv"), Equals, params.signedVersion)
    c.Check(values.Get("se"), Equals, params.signedExpiry)
    c.Check(values.Get("sr"), Equals, params.signedRessource)
    c.Check(values.Get("sp"), Equals, params.permission)
    c.Check(values.Get("sig"), Not(HasLen), 0)
}

func (*sharedSignatureSuite) TestGetReadBlobAccessValues(c *C) {
    container := "container"
    filename := "/path/to/file"
    accountName := "name"
    accountKey := base64.StdEncoding.EncodeToString([]byte("key"))
    expires, err := time.Parse("Monday, 02-Jan-06 15:04:05 MST", time.RFC850)
    c.Assert(err, IsNil)

    values := getReadBlobAccessValues(container, filename, accountName, accountKey, expires)

    c.Check(values.Get("sv"), Equals, "2012-02-12")
    expiryDateString := values.Get("se")
    expectedExpiryDateString := expires.UTC().Format(time.RFC3339)
    c.Check(expiryDateString, Equals, expectedExpiryDateString)
    c.Check(values.Get("sr"), Equals, "b")
    c.Check(values.Get("sp"), Equals, "r")
    c.Check(values.Get("sig"), Equals, "HK7xmxiUY/vBNkaIWoJkIcv27g/+QFjwKVgO/I3yWmI=")
}