~jtv/gwacl/close-body

« back to all changes in this revision

Viewing changes to storage_base_test.go

  • Committer: Tarmac
  • Author(s): Raphael Badin
  • Date: 2013-07-26 10:51:26 UTC
  • mfrom: (199.2.7 signed-access)
  • Revision ID: tarmac-20130726105126-tap0rioeb63uefk0
[r=julian-edwards][bug=][author=rvb] Add support for the Windows Azure Shared Access Signature URL mechanism.

Show diffs side-by-side

added added

removed removed

Lines of Context:
161
161
    c.Assert(observed, Equals, expected)
162
162
}
163
163
 
 
164
type TestSign struct{}
 
165
 
 
166
var _ = Suite(&TestSign{})
 
167
 
 
168
func (suite *TestSign) TestSign(c *C) {
 
169
    key := base64.StdEncoding.EncodeToString([]byte("dummykey"))
 
170
    signable := "a-string-to-sign"
 
171
 
 
172
    observed := sign(key, signable)
 
173
    expected := "5j1DSsm07IEh3u9JQQd0KPwtM6pEGChzrAF7Zf/LxLc="
 
174
    c.Assert(observed, Equals, expected)
 
175
}
 
176
 
164
177
type TestComposeAuthHeader struct{}
165
178
 
166
179
var _ = Suite(&TestComposeAuthHeader{})
303
316
        "http://"+url.QueryEscape(account)+".blob.core.windows.net/"+url.QueryEscape(container)+"/"+url.QueryEscape(file))
304
317
}
305
318
 
 
319
func (suite *TestStorageContext) TestGetSignedFileURL(c *C) {
 
320
    account := "account"
 
321
    container := "container"
 
322
    file := "/a/file"
 
323
    key := base64.StdEncoding.EncodeToString([]byte("dummykey"))
 
324
    context := StorageContext{Account: account, Key: key}
 
325
    expires := time.Now()
 
326
 
 
327
    signedURL := context.GetAnonymousFileURL(container, file, expires)
 
328
    // The only difference with the non-anon URL is the query string.
 
329
    parsed, err := url.Parse(signedURL)
 
330
    c.Assert(err, IsNil)
 
331
    fileURL, err := url.Parse(context.GetFileURL(container, file))
 
332
    c.Assert(err, IsNil)
 
333
    c.Check(parsed.Scheme, Equals, fileURL.Scheme)
 
334
    c.Check(parsed.Host, Equals, fileURL.Host)
 
335
    c.Check(parsed.Path, Equals, fileURL.Path)
 
336
 
 
337
    values, err := url.ParseQuery(parsed.RawQuery)
 
338
    c.Assert(err, IsNil)
 
339
    signature := values.Get("sig")
 
340
    expectedSignature := getReadBlobAccessValues(container, file, account, key, expires).Get("sig")
 
341
    c.Check(signature, Equals, expectedSignature)
 
342
}
 
343
 
306
344
func (suite *TestStorageContext) TestGetClientReturnsDefaultClient(c *C) {
307
345
    context := &StorageContext{client: nil}
308
346
    c.Assert(context.getClient(), Equals, http.DefaultClient)