File: zt_s2s_oauth_test.go

package info (click to toggle)
golang-github-azure-azure-storage-blob-go 0.15.0-1
  • links: PTS, VCS
  • area: main
  • in suites: bookworm, forky, sid, trixie
  • size: 2,084 kB
  • sloc: makefile: 3
file content (116 lines) | stat: -rw-r--r-- 4,994 bytes parent folder | download
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
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
package azblob

import (
	"encoding/base64"
	chk "gopkg.in/check.v1"
	"math/rand"
	"strings"
)

func createS2SContainersWithCredential(c *chk.C, credential Credential) (source, dest ContainerURL) {
	bsu := getBSU()
	bsu.WithPipeline(NewPipeline(credential, PipelineOptions{}))

	source, dest = bsu.NewContainerURL(newUUID().String()), bsu.NewContainerURL(newUUID().String())

	_, err := source.Create(ctx, nil, PublicAccessNone)
	c.Assert(err, chk.IsNil)
	_, err = dest.Create(ctx, nil, PublicAccessNone)
	c.Assert(err, chk.IsNil)

	return
}

func (s *aztestsSuite) TestBlockBlobS2SOAuth(c *chk.C) {
	ocred, err := getOAuthCredential("", "")
	c.Assert(err, chk.IsNil)
	source, dest := createS2SContainersWithCredential(c, ocred)

	sourceBlob := source.NewBlockBlobURL("SourceBlob")

	_, err = sourceBlob.Upload(ctx, strings.NewReader("Hello, World!"), BlobHTTPHeaders{}, nil, BlobAccessConditions{}, AccessTierHot, nil, ClientProvidedKeyOptions{}, ImmutabilityPolicyOptions{})
	c.Assert(err, chk.IsNil)

	destBlob := dest.NewBlockBlobURL("DestBlob")

	_, err = destBlob.PutBlobFromURL(ctx, BlobHTTPHeaders{}, sourceBlob.URL(), nil, ModifiedAccessConditions{}, BlobAccessConditions{}, nil, nil, AccessTierHot, nil, ClientProvidedKeyOptions{}, ocred)
	c.Assert(err, chk.IsNil)
}

func (s *aztestsSuite) TestBlockBlobS2SOAuthByBlock(c *chk.C) {
	ocred, err := getOAuthCredential("", "")
	c.Assert(err, chk.IsNil)
	source, dest := createS2SContainersWithCredential(c, ocred)

	sourceBlob := source.NewBlockBlobURL("SourceBlob")

	_, err = sourceBlob.Upload(ctx, strings.NewReader("Hello, World!"), BlobHTTPHeaders{}, nil, BlobAccessConditions{}, AccessTierHot, nil, ClientProvidedKeyOptions{}, ImmutabilityPolicyOptions{})
	c.Assert(err, chk.IsNil)

	destBlob := dest.NewBlockBlobURL("DestBlob")

	_, err = destBlob.StageBlockFromURL(ctx, base64.StdEncoding.EncodeToString([]byte(newUUID().String())), sourceBlob.URL(), 0, int64(len("Hello, World!")), LeaseAccessConditions{}, ModifiedAccessConditions{}, ClientProvidedKeyOptions{}, ocred)
	c.Assert(err, chk.IsNil)
}

func (s *aztestsSuite) TestBlockBlobS2SOAuthCopyFromURL(c *chk.C) {
	ocred, err := getOAuthCredential("", "")
	c.Assert(err, chk.IsNil)
	source, dest := createS2SContainersWithCredential(c, ocred)

	sourceBlob := source.NewBlockBlobURL("SourceBlob")

	_, err = sourceBlob.Upload(ctx, strings.NewReader("Hello, World!"), BlobHTTPHeaders{}, nil, BlobAccessConditions{}, AccessTierHot, nil, ClientProvidedKeyOptions{}, ImmutabilityPolicyOptions{})
	c.Assert(err, chk.IsNil)

	destBlob := dest.NewBlockBlobURL("DestBlob")

	_, err = destBlob.CopyFromURL(ctx, sourceBlob.URL(), nil, ModifiedAccessConditions{}, BlobAccessConditions{}, nil, AccessTierHot, nil, ImmutabilityPolicyOptions{}, ocred)
	c.Assert(err, chk.IsNil)
}

func (s *aztestsSuite) TestPageBlobS2SOAuth(c *chk.C) {
	ocred, err := getOAuthCredential("", "")
	c.Assert(err, chk.IsNil)
	source, dest := createS2SContainersWithCredential(c, ocred)

	sourceBlob := source.NewPageBlobURL("SourceBlob")

	_, err = sourceBlob.Create(ctx, 512, 0, BlobHTTPHeaders{}, nil, BlobAccessConditions{}, PremiumPageBlobAccessTierNone, nil, ClientProvidedKeyOptions{}, ImmutabilityPolicyOptions{})
	c.Assert(err, chk.IsNil)

	page := make([]byte, 512)
	for k := range page {
		page[k] = byte(rand.Intn(256))
	}

	// bytes.NewBuffer does not work, because bytes.Buffer does not satisfy Seeker.
	_, err = sourceBlob.UploadPages(ctx, 0, strings.NewReader(string(page)), PageBlobAccessConditions{}, nil, ClientProvidedKeyOptions{})

	destBlob := dest.NewPageBlobURL("DestBlob")

	_, err = destBlob.Create(ctx, 512, 0, BlobHTTPHeaders{}, nil, BlobAccessConditions{}, PremiumPageBlobAccessTierNone, nil, ClientProvidedKeyOptions{}, ImmutabilityPolicyOptions{})
	c.Assert(err, chk.IsNil)
	_, err = destBlob.UploadPagesFromURL(ctx, sourceBlob.URL(), 0, 0, 512, nil, PageBlobAccessConditions{}, ModifiedAccessConditions{}, ClientProvidedKeyOptions{}, ocred)
	c.Assert(err, chk.IsNil)
}

func (s *aztestsSuite) TestAppendBlobS2SOAuth(c *chk.C) {
	ocred, err := getOAuthCredential("", "")
	c.Assert(err, chk.IsNil)
	source, dest := createS2SContainersWithCredential(c, ocred)

	sourceBlob := source.NewAppendBlobURL("SourceBlob")

	_, err = sourceBlob.Create(ctx, BlobHTTPHeaders{}, nil, BlobAccessConditions{}, nil, ClientProvidedKeyOptions{}, ImmutabilityPolicyOptions{})
	c.Assert(err, chk.IsNil)
	_, err = sourceBlob.AppendBlock(ctx, strings.NewReader("Hello, World!"), AppendBlobAccessConditions{}, nil, ClientProvidedKeyOptions{})
	c.Assert(err, chk.IsNil)

	destBlob := dest.NewAppendBlobURL("DestBlob")

	_, err = destBlob.Create(ctx, BlobHTTPHeaders{}, nil, BlobAccessConditions{}, nil, ClientProvidedKeyOptions{}, ImmutabilityPolicyOptions{})
	c.Assert(err, chk.IsNil)
	_, err = destBlob.AppendBlockFromURL(ctx, sourceBlob.URL(), 0, int64(len("Hello, World!")), AppendBlobAccessConditions{}, ModifiedAccessConditions{}, nil, ClientProvidedKeyOptions{}, ocred)
	c.Assert(err, chk.IsNil)
}