//go:build go1.18 // +build go1.18 // Copyright (c) Microsoft Corporation. All rights reserved. // Licensed under the MIT License. package azidentity import ( "context" "errors" "reflect" "testing" "github.com/Azure/azure-sdk-for-go/sdk/azcore/policy" ) const secret = "secret" func TestClientSecretCredential_InvalidTenantID(t *testing.T) { cred, err := NewClientSecretCredential(badTenantID, fakeClientID, secret, nil) if err == nil { t.Fatal("Expected an error but received none") } if cred != nil { t.Fatalf("Expected a nil credential value. Received: %v", cred) } } func TestClientSecretCredential_GetTokenSuccess(t *testing.T) { cred, err := NewClientSecretCredential(fakeTenantID, fakeClientID, secret, nil) if err != nil { t.Fatalf("Unable to create credential. Received: %v", err) } cred.client = fakeConfidentialClient{} _, err = cred.GetToken(context.Background(), policy.TokenRequestOptions{Scopes: []string{liveTestScope}}) if err != nil { t.Fatalf("Expected an empty error but received: %v", err) } } func TestClientSecretCredential_Live(t *testing.T) { opts, stop := initRecording(t) defer stop() o := ClientSecretCredentialOptions{ClientOptions: opts} cred, err := NewClientSecretCredential(liveSP.tenantID, liveSP.clientID, liveSP.secret, &o) if err != nil { t.Fatalf("failed to construct credential: %v", err) } testGetTokenSuccess(t, cred) } func TestClientSecretCredential_InvalidSecretLive(t *testing.T) { opts, stop := initRecording(t) defer stop() o := ClientSecretCredentialOptions{ClientOptions: opts} cred, err := NewClientSecretCredential(liveSP.tenantID, liveSP.clientID, "invalid secret", &o) if err != nil { t.Fatalf("failed to construct credential: %v", err) } tk, err := cred.GetToken(context.Background(), policy.TokenRequestOptions{Scopes: []string{liveTestScope}}) if !reflect.ValueOf(tk).IsZero() { t.Fatal("expected a zero value AccessToken") } var e *AuthenticationFailedError if !errors.As(err, &e) { t.Fatal("expected AuthenticationFailedError") } if e.RawResponse == nil { t.Fatal("expected a non-nil RawResponse") } }