Skip to content

Commit 26759ec

Browse files
committed
Merge pull request #108 from stankovski/dev
Fixed null ref error in MockClientFactory during test recording
2 parents dd10fb7 + f62ab4b commit 26759ec

File tree

1 file changed

+37
-5
lines changed

1 file changed

+37
-5
lines changed

src/Common/Commands.Common.Test/Mocks/MockClientFactory.cs

Lines changed: 37 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -14,9 +14,12 @@
1414

1515
using System;
1616
using System.Collections.Generic;
17+
using System.Diagnostics;
1718
using System.Linq;
1819
using System.Net;
1920
using System.Net.Http;
21+
using System.Net.Http.Headers;
22+
using Hyak.Common;
2023
using Microsoft.Azure.Test.HttpRecorder;
2124
using Microsoft.Azure.Common;
2225
using Microsoft.Azure.Common.Extensions.Factories;
@@ -26,19 +29,30 @@
2629

2730
namespace Microsoft.WindowsAzure.Commands.Common.Test.Mocks
2831
{
29-
public class MockClientFactory : ClientFactory
32+
public class MockClientFactory : IClientFactory
3033
{
3134
private readonly bool throwWhenNotAvailable;
3235

3336
public List<object> ManagementClients { get; private set; }
3437

3538
public MockClientFactory(IEnumerable<object> clients, bool throwIfClientNotSpecified = true)
3639
{
40+
UserAgents = new List<ProductInfoHeaderValue>();
3741
ManagementClients = clients.ToList();
3842
throwWhenNotAvailable = throwIfClientNotSpecified;
3943
}
4044

41-
public override TClient CreateClient<TClient>(AzureSubscription subscription, AzureEnvironment.Endpoint endpoint)
45+
public TClient CreateClient<TClient>(AzureContext context, AzureEnvironment.Endpoint endpoint) where TClient : ServiceClient<TClient>
46+
{
47+
Debug.Assert(context != null);
48+
49+
SubscriptionCloudCredentials creds = AzureSession.AuthenticationFactory.GetSubscriptionCloudCredentials(context);
50+
TClient client = CreateCustomClient<TClient>(creds, context.Environment.GetEndpointAsUri(endpoint));
51+
52+
return client;
53+
}
54+
55+
public TClient CreateClient<TClient>(AzureSubscription subscription, AzureEnvironment.Endpoint endpoint) where TClient : ServiceClient<TClient>
4256
{
4357
SubscriptionCloudCredentials creds = new TokenCloudCredentials(subscription.Id.ToString(), "fake_token");
4458
if (HttpMockServer.GetCurrentMode() != HttpRecorderMode.Playback)
@@ -58,7 +72,7 @@ public override TClient CreateClient<TClient>(AzureSubscription subscription, Az
5872
return CreateCustomClient<TClient>(creds, endpointUri);
5973
}
6074

61-
public override TClient CreateCustomClient<TClient>(params object[] parameters)
75+
public TClient CreateCustomClient<TClient>(params object[] parameters) where TClient : ServiceClient<TClient>
6276
{
6377
TClient client = ManagementClients.FirstOrDefault(o => o is TClient) as TClient;
6478
if (client == null)
@@ -71,7 +85,8 @@ public override TClient CreateCustomClient<TClient>(params object[] parameters)
7185
}
7286
else
7387
{
74-
var realClient = base.CreateCustomClient<TClient>(parameters);
88+
var realClientFactory = new ClientFactory();
89+
var realClient = realClientFactory.CreateCustomClient<TClient>(parameters);
7590
var newRealClient = realClient.WithHandler(HttpMockServer.CreateInstance());
7691
realClient.Dispose();
7792
return newRealClient;
@@ -81,7 +96,12 @@ public override TClient CreateCustomClient<TClient>(params object[] parameters)
8196
return client;
8297
}
8398

84-
public override HttpClient CreateHttpClient(string serviceUrl, HttpMessageHandler effectiveHandler)
99+
public HttpClient CreateHttpClient(string endpoint, ICredentials credentials)
100+
{
101+
return CreateHttpClient(endpoint, ClientFactory.CreateHttpClientHandler(endpoint, credentials));
102+
}
103+
104+
public HttpClient CreateHttpClient(string serviceUrl, HttpMessageHandler effectiveHandler)
85105
{
86106
if (serviceUrl == null)
87107
{
@@ -104,5 +124,17 @@ public override HttpClient CreateHttpClient(string serviceUrl, HttpMessageHandle
104124

105125
return client;
106126
}
127+
128+
public void AddAction(IClientAction action)
129+
{
130+
// Do nothing
131+
}
132+
133+
public void RemoveAction(Type actionType)
134+
{
135+
// Do nothing
136+
}
137+
138+
public List<ProductInfoHeaderValue> UserAgents { get; set; }
107139
}
108140
}

0 commit comments

Comments
 (0)