|
7 | 7 | package azcore
|
8 | 8 |
|
9 | 9 | import (
|
| 10 | + "context" |
| 11 | + "net/http" |
10 | 12 | "reflect"
|
11 | 13 | "testing"
|
12 | 14 |
|
| 15 | + "github.com/Azure/azure-sdk-for-go/sdk/azcore/internal/exported" |
13 | 16 | "github.com/Azure/azure-sdk-for-go/sdk/azcore/policy"
|
14 | 17 | "github.com/Azure/azure-sdk-for-go/sdk/azcore/runtime"
|
| 18 | + "github.com/Azure/azure-sdk-for-go/sdk/azcore/tracing" |
| 19 | + "github.com/Azure/azure-sdk-for-go/sdk/internal/mock" |
15 | 20 | "github.com/stretchr/testify/require"
|
16 | 21 | )
|
17 | 22 |
|
@@ -131,3 +136,41 @@ func TestNewClientError(t *testing.T) {
|
131 | 136 | require.Error(t, err)
|
132 | 137 | require.Nil(t, client)
|
133 | 138 | }
|
| 139 | + |
| 140 | +func TestClientWithClientName(t *testing.T) { |
| 141 | + srv, close := mock.NewServer() |
| 142 | + defer close() |
| 143 | + |
| 144 | + var clientName string |
| 145 | + var modVersion string |
| 146 | + client, err := NewClient("module/package.Client", "v1.0.0", runtime.PipelineOptions{}, &policy.ClientOptions{ |
| 147 | + TracingProvider: tracing.NewProvider(func(name, version string) tracing.Tracer { |
| 148 | + clientName = name |
| 149 | + modVersion = version |
| 150 | + return tracing.NewTracer(func(ctx context.Context, spanName string, options *tracing.SpanOptions) (context.Context, tracing.Span) { |
| 151 | + return ctx, tracing.Span{} |
| 152 | + }, nil) |
| 153 | + }, nil), |
| 154 | + Transport: srv, |
| 155 | + }) |
| 156 | + require.NoError(t, err) |
| 157 | + require.NotNil(t, client) |
| 158 | + require.NotZero(t, client.Pipeline()) |
| 159 | + require.NotZero(t, client.Tracer()) |
| 160 | + require.EqualValues(t, "package.Client", clientName) |
| 161 | + require.EqualValues(t, "v1.0.0", modVersion) |
| 162 | + |
| 163 | + const requestEndpoint = "/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/fakeResourceGroupo/providers/Microsoft.Storage/storageAccounts/fakeAccountName" |
| 164 | + req, err := exported.NewRequest(context.Background(), http.MethodGet, srv.URL()+requestEndpoint) |
| 165 | + require.NoError(t, err) |
| 166 | + srv.SetResponse() |
| 167 | + _, err = client.Pipeline().Do(req) |
| 168 | + require.NoError(t, err) |
| 169 | + |
| 170 | + newClient := client.WithClientName("other.Client") |
| 171 | + require.EqualValues(t, "other.Client", clientName) |
| 172 | + require.EqualValues(t, "v1.0.0", modVersion) |
| 173 | + require.EqualValues(t, client.Pipeline(), newClient.Pipeline()) |
| 174 | + _, err = newClient.Pipeline().Do(req) |
| 175 | + require.NoError(t, err) |
| 176 | +} |
0 commit comments