1 package storage
2
3
4
5
6 import (
7 "net/url"
8 "time"
9
10 chk "gopkg.in/check.v1"
11 )
12
13 type QueueSASURISuite struct{}
14
15 var _ = chk.Suite(&QueueSASURISuite{})
16
17 var queueOldAPIVer = "2013-08-15"
18 var queueNewerAPIVer = "2015-04-05"
19
20 func (s *QueueSASURISuite) TestGetQueueSASURI(c *chk.C) {
21 api, err := NewClient("foo", dummyMiniStorageKey, DefaultBaseURL, queueOldAPIVer, true)
22 c.Assert(err, chk.IsNil)
23 cli := api.GetQueueService()
24 q := cli.GetQueueReference("name")
25
26 expectedParts := url.URL{
27 Scheme: "https",
28 Host: "foo.queue.core.windows.net",
29 Path: "name",
30 RawQuery: url.Values{
31 "sv": {oldAPIVer},
32 "sig": {"dYZ+elcEz3ZXEnTDKR5+RCrMzk0L7/ATWsemNzb36VM="},
33 "sp": {"p"},
34 "se": {"0001-01-01T00:00:00Z"},
35 }.Encode()}
36
37 options := QueueSASOptions{}
38 options.Process = true
39 options.Expiry = time.Time{}
40
41 u, err := q.GetSASURI(options)
42 c.Assert(err, chk.IsNil)
43 sasParts, err := url.Parse(u)
44 c.Assert(err, chk.IsNil)
45 c.Assert(expectedParts.String(), chk.Equals, sasParts.String())
46 c.Assert(expectedParts.Query(), chk.DeepEquals, sasParts.Query())
47 }
48
49 func (s *QueueSASURISuite) TestGetQueueSASURIWithSignedIPValidAPIVersionPassed(c *chk.C) {
50 api, err := NewClient("foo", dummyMiniStorageKey, DefaultBaseURL, queueNewerAPIVer, true)
51 c.Assert(err, chk.IsNil)
52 cli := api.GetQueueService()
53 q := cli.GetQueueReference("name")
54
55 expectedParts := url.URL{
56 Scheme: "https",
57 Host: "foo.queue.core.windows.net",
58 Path: "/name",
59 RawQuery: url.Values{
60 "sv": {newerAPIVer},
61 "sig": {"8uvfE93HdYxQ3xvt/CUN3S7sYEl1LcuHBC0oYoGDnfw="},
62 "sip": {"127.0.0.1"},
63 "sp": {"p"},
64 "se": {"0001-01-01T00:00:00Z"},
65 "spr": {"https,http"},
66 }.Encode()}
67
68 options := QueueSASOptions{}
69 options.Process = true
70 options.Expiry = time.Time{}
71 options.IP = "127.0.0.1"
72
73 u, err := q.GetSASURI(options)
74 c.Assert(err, chk.IsNil)
75 sasParts, err := url.Parse(u)
76 c.Assert(err, chk.IsNil)
77 c.Assert(sasParts.Query(), chk.DeepEquals, expectedParts.Query())
78 }
79
80
81
82 func (s *QueueSASURISuite) TestGetQueueSASURIWithSignedIPUsingOldAPIVersion(c *chk.C) {
83 api, err := NewClient("foo", dummyMiniStorageKey, DefaultBaseURL, oldAPIVer, true)
84 c.Assert(err, chk.IsNil)
85 cli := api.GetQueueService()
86 q := cli.GetQueueReference("name")
87
88 expectedParts := url.URL{
89 Scheme: "https",
90 Host: "foo.queue.core.windows.net",
91 Path: "/name",
92 RawQuery: url.Values{
93 "sv": {oldAPIVer},
94 "sig": {"dYZ+elcEz3ZXEnTDKR5+RCrMzk0L7/ATWsemNzb36VM="},
95 "sp": {"p"},
96 "se": {"0001-01-01T00:00:00Z"},
97 }.Encode()}
98
99 options := QueueSASOptions{}
100 options.Process = true
101 options.Expiry = time.Time{}
102 options.IP = "127.0.0.1"
103
104 u, err := q.GetSASURI(options)
105 c.Assert(err, chk.IsNil)
106 sasParts, err := url.Parse(u)
107 c.Assert(err, chk.IsNil)
108 c.Assert(expectedParts.String(), chk.Equals, sasParts.String())
109 c.Assert(expectedParts.Query(), chk.DeepEquals, sasParts.Query())
110 }
111
View as plain text