Skip to content

Commit d52e8ae

Browse files
authored
Migrate marketplace to recordings (#1396)
* simplify the client creation a bit, remove unnecessary test parts, as the newing that is being exercised in the construction of the test isn't actually used for anything. the product commands ARE though
1 parent e9c7333 commit d52e8ae

File tree

4 files changed

+17
-78
lines changed

4 files changed

+17
-78
lines changed

tools/Azure.Mcp.Tools.Marketplace/src/Services/MarketplaceService.cs

Lines changed: 7 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -223,30 +223,23 @@ CancellationToken cancellationToken
223223
)
224224
{
225225
// Use Azure Core pipeline approach consistently
226-
var clientOptions = AddDefaultPolicies(new MarketplaceClientOptions());
226+
using var httpClient = TenantService.GetClient();
227+
var clientOptions = ConfigureRetryPolicy(
228+
AddDefaultPolicies(new MarketplaceClientOptions()),
229+
retryPolicy);
230+
clientOptions.Transport = new HttpClientTransport(httpClient);
227231

228-
// Configure retry policy if provided
229-
if (retryPolicy != null)
230-
{
231-
clientOptions.Retry.MaxRetries = retryPolicy.MaxRetries;
232-
clientOptions.Retry.Mode = retryPolicy.Mode;
233-
clientOptions.Retry.Delay = TimeSpan.FromSeconds(retryPolicy.DelaySeconds);
234-
clientOptions.Retry.MaxDelay = TimeSpan.FromSeconds(retryPolicy.MaxDelaySeconds);
235-
clientOptions.Retry.NetworkTimeout = TimeSpan.FromSeconds(retryPolicy.NetworkTimeoutSeconds);
236-
}
237-
238-
// Create pipeline
239232
var pipeline = HttpPipelineBuilder.Build(clientOptions);
240233

241234
string accessToken = (await GetArmAccessTokenAsync(tenantId: tenant, cancellationToken)).Token;
242235
ValidateRequiredParameters((nameof(accessToken), accessToken));
243236

244-
var request = pipeline.CreateRequest();
237+
using var request = pipeline.CreateRequest();
245238
request.Method = RequestMethod.Get;
246239
request.Uri.Reset(new Uri(url));
247240
request.Headers.Add("Authorization", $"Bearer {accessToken}");
248241

249-
var response = await pipeline.SendRequestAsync(request, cancellationToken);
242+
using var response = await pipeline.SendRequestAsync(request, cancellationToken);
250243

251244
if (!response.IsError)
252245
{

tools/Azure.Mcp.Tools.Marketplace/tests/Azure.Mcp.Tools.Marketplace.LiveTests/ProductGetCommandTests.cs

Lines changed: 2 additions & 32 deletions
Original file line numberDiff line numberDiff line change
@@ -2,49 +2,19 @@
22
// Licensed under the MIT License.
33

44
using System.Text.Json;
5-
using Azure.Mcp.Core.Services.Azure.Authentication;
6-
using Azure.Mcp.Core.Services.Azure.Tenant;
7-
using Azure.Mcp.Core.Services.Caching;
85
using Azure.Mcp.Tests;
96
using Azure.Mcp.Tests.Client;
10-
using Azure.Mcp.Tests.Helpers;
11-
using Azure.Mcp.Tools.Marketplace.Services;
12-
using Microsoft.Extensions.Caching.Memory;
13-
using Microsoft.Extensions.DependencyInjection;
14-
using Microsoft.Extensions.Logging.Abstractions;
7+
using Azure.Mcp.Tests.Client.Helpers;
158
using Xunit;
169

1710
namespace Azure.Mcp.Tools.Marketplace.LiveTests;
1811

19-
public class ProductGetCommandTests : CommandTestsBase
12+
public sealed class ProductGetCommandTests(ITestOutputHelper output, TestProxyFixture fixture) : RecordedCommandTestsBase(output, fixture)
2013
{
2114
private const string ProductKey = "product";
2215
private const string ProductId = "test_test_pmc2pc1.vmsr_uat_beta";
2316
private const string Language = "en";
2417
private const string Market = "US";
25-
private readonly MarketplaceService _marketplaceService;
26-
private readonly ServiceProvider _httpClientProvider;
27-
28-
public ProductGetCommandTests(ITestOutputHelper output) : base(output)
29-
{
30-
var memoryCache = new MemoryCache(Microsoft.Extensions.Options.Options.Create(new MemoryCacheOptions()));
31-
var cacheService = new SingleUserCliCacheService(memoryCache);
32-
var tokenProvider = new SingleIdentityTokenCredentialProvider(NullLoggerFactory.Instance);
33-
_httpClientProvider = TestHttpClientFactoryProvider.Create();
34-
var httpClientFactory = _httpClientProvider.GetRequiredService<IHttpClientFactory>();
35-
var tenantService = new TenantService(tokenProvider, cacheService, httpClientFactory);
36-
_marketplaceService = new MarketplaceService(tenantService);
37-
}
38-
39-
protected override void Dispose(bool disposing)
40-
{
41-
if (disposing)
42-
{
43-
_httpClientProvider.Dispose();
44-
}
45-
46-
base.Dispose(disposing);
47-
}
4818

4919
[Fact]
5020
public async Task Should_get_marketplace_product()

tools/Azure.Mcp.Tools.Marketplace/tests/Azure.Mcp.Tools.Marketplace.LiveTests/ProductListCommandTests.cs

Lines changed: 2 additions & 32 deletions
Original file line numberDiff line numberDiff line change
@@ -2,47 +2,17 @@
22
// Licensed under the MIT License.
33

44
using System.Text.Json;
5-
using Azure.Mcp.Core.Services.Azure.Authentication;
6-
using Azure.Mcp.Core.Services.Azure.Tenant;
7-
using Azure.Mcp.Core.Services.Caching;
85
using Azure.Mcp.Tests;
96
using Azure.Mcp.Tests.Client;
10-
using Azure.Mcp.Tests.Helpers;
11-
using Azure.Mcp.Tools.Marketplace.Services;
12-
using Microsoft.Extensions.Caching.Memory;
13-
using Microsoft.Extensions.DependencyInjection;
14-
using Microsoft.Extensions.Logging.Abstractions;
7+
using Azure.Mcp.Tests.Client.Helpers;
158
using Xunit;
169

1710
namespace Azure.Mcp.Tools.Marketplace.LiveTests;
1811

19-
public class ProductListCommandTests : CommandTestsBase
12+
public sealed class ProductListCommandTests(ITestOutputHelper output, TestProxyFixture fixture) : RecordedCommandTestsBase(output, fixture)
2013
{
2114
private const string ProductsKey = "products";
2215
private const string Language = "en";
23-
private readonly MarketplaceService _marketplaceService;
24-
private readonly ServiceProvider _httpClientProvider;
25-
26-
public ProductListCommandTests(ITestOutputHelper output) : base(output)
27-
{
28-
var memoryCache = new MemoryCache(Microsoft.Extensions.Options.Options.Create(new MemoryCacheOptions()));
29-
var cacheService = new SingleUserCliCacheService(memoryCache);
30-
var tokenProvider = new SingleIdentityTokenCredentialProvider(NullLoggerFactory.Instance);
31-
_httpClientProvider = TestHttpClientFactoryProvider.Create();
32-
var httpClientFactory = _httpClientProvider.GetRequiredService<IHttpClientFactory>();
33-
var tenantService = new TenantService(tokenProvider, cacheService, httpClientFactory);
34-
_marketplaceService = new MarketplaceService(tenantService);
35-
}
36-
37-
protected override void Dispose(bool disposing)
38-
{
39-
if (disposing)
40-
{
41-
_httpClientProvider.Dispose();
42-
}
43-
44-
base.Dispose(disposing);
45-
}
4616

4717
[Fact]
4818
public async Task Should_list_marketplace_products()
Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
{
2+
"AssetsRepo": "Azure/azure-sdk-assets",
3+
"AssetsRepoPrefixPath": "",
4+
"TagPrefix": "Azure.Mcp.Tools.Marketplace.LiveTests",
5+
"Tag": "Azure.Mcp.Tools.Marketplace.LiveTests_0f59abc9d6"
6+
}

0 commit comments

Comments
 (0)