1
2
3
4 package testutils
5
6
7
8
9 import (
10 "encoding/base64"
11 "os"
12 "testing"
13
14 "github.com/Azure/azure-sdk-for-go/services/classic/management"
15 )
16
17
18
19
20 func GetTestClient(t *testing.T) management.Client {
21 subid := os.Getenv("AZSUBSCRIPTIONID")
22 certdata := os.Getenv("AZCERTDATA")
23 if subid == "" || certdata == "" {
24 t.Skip("AZSUBSCRIPTIONID or AZCERTDATA not set, skipping test")
25 }
26 cert, err := base64.StdEncoding.DecodeString(certdata)
27 if err != nil {
28 t.Fatal(err)
29 }
30
31 client, err := management.NewClient(subid, cert)
32 if err != nil {
33 t.Fatal(err)
34 }
35 return testClient{client, t}
36 }
37
38 type testClient struct {
39 management.Client
40 t *testing.T
41 }
42
43 func chop(d []byte) string {
44 const maxlen = 5000
45
46 s := string(d)
47
48 if len(s) > maxlen {
49 return s[:maxlen] + "..."
50 }
51 return s
52 }
53
54 func (l testClient) SendAzureGetRequest(url string) ([]byte, error) {
55 d, err := l.Client.SendAzureGetRequest(url)
56 logOperation(l.t, "GET", url, nil, d, "", err)
57 return d, err
58 }
59
60 func (l testClient) SendAzurePostRequest(url string, data []byte) (management.OperationID, error) {
61 oid, err := l.Client.SendAzurePostRequest(url, data)
62 logOperation(l.t, "POST", url, data, nil, oid, err)
63 return oid, err
64 }
65
66 func (l testClient) SendAzurePutRequest(url string, contentType string, data []byte) (management.OperationID, error) {
67 oid, err := l.Client.SendAzurePutRequest(url, contentType, data)
68 logOperation(l.t, "PUT", url, data, nil, oid, err)
69 return oid, err
70 }
71
72 func (l testClient) SendAzureDeleteRequest(url string) (management.OperationID, error) {
73 oid, err := l.Client.SendAzureDeleteRequest(url)
74 logOperation(l.t, "DELETE", url, nil, nil, oid, err)
75 return oid, err
76 }
77
78 func logOperation(t *testing.T, method, url string, requestData, responseData []byte, oid management.OperationID, err error) {
79 t.Logf("AZURE> %s %s\n", method, url)
80 if requestData != nil {
81 t.Logf(" >>> %s\n", chop(requestData))
82 }
83 if err != nil {
84 t.Logf(" <<< ERROR: %+v\n", err)
85 } else {
86 if responseData != nil {
87 t.Logf(" <<< %s\n", chop(responseData))
88 } else {
89 t.Logf(" <<< OperationID: %s\n", oid)
90 }
91 }
92 }
93
View as plain text