-
Notifications
You must be signed in to change notification settings - Fork 20
/
Copy pathlifecycle_test.go
127 lines (105 loc) · 3.96 KB
/
lifecycle_test.go
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
117
118
119
120
121
122
123
124
125
126
127
package tables
import (
"context"
"fmt"
"log"
"testing"
"time"
"github.com/hashicorp/go-azure-sdk/resource-manager/storage/2023-01-01/storageaccounts"
"github.com/hashicorp/go-azure-sdk/sdk/auth"
"github.com/tombuildsstuff/giovanni/storage/internal/testhelpers"
)
var _ StorageTable = Client{}
func TestTablesLifecycle(t *testing.T) {
ctx, cancel := context.WithTimeout(context.Background(), 1*time.Hour)
defer cancel()
client, err := testhelpers.Build(ctx, t)
if err != nil {
t.Fatal(err)
}
resourceGroup := fmt.Sprintf("acctestrg-%d", testhelpers.RandomInt())
accountName := fmt.Sprintf("acctestsa%s", testhelpers.RandomString())
tableName := fmt.Sprintf("table%d", testhelpers.RandomInt())
testData, err := client.BuildTestResources(ctx, resourceGroup, accountName, storageaccounts.KindStorage)
if err != nil {
t.Fatal(err)
}
defer client.DestroyTestResources(ctx, resourceGroup, accountName)
domainSuffix, ok := client.Environment.Storage.DomainSuffix()
if !ok {
t.Fatalf("storage didn't return a domain suffix for this environment")
}
tablesClient, err := NewWithBaseUri(fmt.Sprintf("https://%s.%s.%s", accountName, "table", *domainSuffix))
if err != nil {
t.Fatalf("building client for environment: %+v", err)
}
if err := client.PrepareWithSharedKeyAuth(tablesClient.Client, testData, auth.SharedKeyTable); err != nil {
t.Fatalf("adding authorizer to client: %+v", err)
}
t.Logf("[DEBUG] Creating Table..")
if _, err := tablesClient.Create(ctx, tableName); err != nil {
t.Fatalf("Error creating Table %q: %s", tableName, err)
}
// first look it up directly and confirm it's there
t.Logf("[DEBUG] Checking if Table exists..")
if _, err := tablesClient.Exists(ctx, tableName); err != nil {
t.Fatalf("Error checking if Table %q exists: %s", tableName, err)
}
// then confirm it exists in the Query too
t.Logf("[DEBUG] Querying for Tables..")
result, err := tablesClient.Query(ctx, QueryInput{MetaDataLevel: NoMetaData})
if err != nil {
t.Fatalf("Error retrieving Tables: %s", err)
}
found := false
for _, v := range result.Tables {
log.Printf("[DEBUG] Table: %q", v.TableName)
if v.TableName == tableName {
found = true
}
}
if !found {
t.Fatalf("%q was not found in the Query response!", tableName)
}
t.Logf("[DEBUG] Setting ACL's for Table %q..", tableName)
acls := []SignedIdentifier{
{
Id: "MTIzNDU2Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3ODkwMTI=",
AccessPolicy: AccessPolicy{
Permission: "raud",
Start: "2020-11-26T08:49:37.0000000Z",
Expiry: "2020-11-27T08:49:37.0000000Z",
},
},
}
if _, err := tablesClient.SetACL(ctx, tableName, acls); err != nil {
t.Fatalf("Error setting ACLs: %s", err)
}
t.Logf("[DEBUG] Retrieving ACL's for Table %q..", tableName)
retrievedACLs, err := tablesClient.GetACL(ctx, tableName)
if err != nil {
t.Fatalf("Error retrieving ACLs: %s", err)
}
if len(retrievedACLs.SignedIdentifiers) != len(acls) {
t.Fatalf("Expected %d but got %q ACLs", len(acls), len(retrievedACLs.SignedIdentifiers))
}
for i, retrievedAcl := range retrievedACLs.SignedIdentifiers {
expectedAcl := acls[i]
if retrievedAcl.Id != expectedAcl.Id {
t.Fatalf("Expected ID to be %q but got %q", expectedAcl.Id, retrievedAcl.Id)
}
if retrievedAcl.AccessPolicy.Start != expectedAcl.AccessPolicy.Start {
t.Fatalf("Expected Start to be %q but got %q", expectedAcl.AccessPolicy.Start, retrievedAcl.AccessPolicy.Start)
}
if retrievedAcl.AccessPolicy.Expiry != expectedAcl.AccessPolicy.Expiry {
t.Fatalf("Expected Expiry to be %q but got %q", expectedAcl.AccessPolicy.Expiry, retrievedAcl.AccessPolicy.Expiry)
}
if retrievedAcl.AccessPolicy.Permission != expectedAcl.AccessPolicy.Permission {
t.Fatalf("Expected Permission to be %q but got %q", expectedAcl.AccessPolicy.Permission, retrievedAcl.AccessPolicy.Permission)
}
}
t.Logf("[DEBUG] Deleting Table %q..", tableName)
if _, err := tablesClient.Delete(ctx, tableName); err != nil {
t.Fatalf("Error deleting %q: %s", tableName, err)
}
}