...

Source file src/github.com/Azure/azure-sdk-for-go/services/classic/management/testutils/managementclient.go

Documentation: github.com/Azure/azure-sdk-for-go/services/classic/management/testutils

     1  // +build go1.7
     2  
     3  // Package testutils contains some test utilities for the Azure SDK
     4  package testutils
     5  
     6  // Copyright (c) Microsoft Corporation. All rights reserved.
     7  // Licensed under the MIT License. See License.txt in the project root for license information.
     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  // GetTestClient returns a management Client for testing. Expects
    18  // AZSUBSCRIPTIONID and AZCERTDATA to be present in the environment. AZCERTDATA
    19  // is the base64encoded binary representation of the PEM certificate data.
    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