1// Copyright (c) Microsoft Corporation. All rights reserved. 2// Licensed under the MIT License. 3 4package azidentity 5 6import ( 7 "context" 8 "net/http" 9 "net/url" 10 "strings" 11 "testing" 12 13 "github.com/Azure/azure-sdk-for-go/sdk/azcore" 14 "github.com/Azure/azure-sdk-for-go/sdk/internal/mock" 15) 16 17func TestIMDSEndpointParse(t *testing.T) { 18 _, err := url.Parse(imdsEndpoint) 19 if err != nil { 20 t.Fatalf("Failed to parse the IMDS endpoint: %v", err) 21 } 22} 23 24func TestMSITelemetryDefaultUserAgent(t *testing.T) { 25 srv, close := mock.NewServer() 26 defer close() 27 srv.AppendResponse(mock.WithBody([]byte(accessTokenRespSuccess))) 28 options := ManagedIdentityCredentialOptions{ 29 HTTPClient: srv, 30 } 31 pipeline := newDefaultMSIPipeline(options) 32 req, err := azcore.NewRequest(context.Background(), http.MethodGet, srv.URL()) 33 if err != nil { 34 t.Fatalf("Unexpected error: %v", err) 35 } 36 resp, err := pipeline.Do(req) 37 if err != nil { 38 t.Fatalf("Unexpected error: %v", err) 39 } 40 if resp.StatusCode != http.StatusOK { 41 t.Fatalf("unexpected status code: %d", resp.StatusCode) 42 } 43 if ua := resp.Request.Header.Get(azcore.HeaderUserAgent); !strings.HasPrefix(ua, UserAgent) { 44 t.Fatalf("unexpected User-Agent %s", ua) 45 } 46} 47 48func TestMSITelemetryCustom(t *testing.T) { 49 customTelemetry := "customvalue" 50 srv, close := mock.NewServer() 51 defer close() 52 srv.AppendResponse(mock.WithBody([]byte(accessTokenRespSuccess))) 53 options := ManagedIdentityCredentialOptions{ 54 HTTPClient: srv, 55 } 56 options.Telemetry.Value = customTelemetry 57 pipeline := newDefaultMSIPipeline(options) 58 req, err := azcore.NewRequest(context.Background(), http.MethodGet, srv.URL()) 59 if err != nil { 60 t.Fatalf("Unexpected error: %v", err) 61 } 62 resp, err := pipeline.Do(req) 63 if err != nil { 64 t.Fatalf("Unexpected error: %v", err) 65 } 66 if resp.StatusCode != http.StatusOK { 67 t.Fatalf("unexpected status code: %d", resp.StatusCode) 68 } 69 if ua := resp.Request.Header.Get(azcore.HeaderUserAgent); !strings.HasPrefix(ua, customTelemetry+" "+UserAgent) { 70 t.Fatalf("unexpected User-Agent %s", ua) 71 } 72} 73