public void AzureCredType() { LiveTestRequest request = new LiveTestRequest(); request.Params = new Dictionary <string, object>() { { "__reserved", new Dictionary <string, object>() { { "credentials", new LiveTestCredentials[] { new LiveTestCredentials() { Type = "azure", Properties = new Dictionary <string, object>() { { "tenantId", "testTenantId" }, { "clientId", "testClientId" }, { "secret", "testSecret" } } } } } } } }; LiveTestCredentialFactory test = new LiveTestCredentialFactory(); IEnumerable <ICredentialProvider> result = test.Create(request, this.logger); Assert.Equal(1, result.Count()); ICredentialProvider first = result.First(); Assert.NotNull(first); Assert.IsType <AzureCredentialProvider>(first); AzureCredentialProvider provider = (AzureCredentialProvider)first; Assert.Equal("testTenantId", provider.TenantId); Assert.Equal("testClientId", provider.ClientId); Assert.Equal("testSecret", provider.Secret); }
public void TranslateMultipleCredentials() { string requestJson = "{ \"params\": { \"__reserved\": { \"credentials\": [{ \"tenantId\": \"testTenantId\", \"clientId\": \"testClientId\", \"secret\": \"testSecret\", \"x-ps-credtype\": \"random\" },{ \"tenantId\": \"testTenantId\", \"clientId\": \"testClientId\", \"secret\": \"testSecret\" }] } } }"; LiveTestRequest request = Newtonsoft.Json.JsonConvert.DeserializeObject <LiveTestRequest>(requestJson); LiveTestCredentialFactory test = new LiveTestCredentialFactory(); test.TranslateCredentialsObjects(request); request.Params.ContainsKey("__reserved"); Assert.True(request.Params["__reserved"] is Dictionary <string, object>); Dictionary <string, object> reservedParams = (Dictionary <string, object>)request.Params["__reserved"]; Assert.True(reservedParams.ContainsKey("credentials")); Assert.True(((Dictionary <string, object>)request.Params["__reserved"])["credentials"] is LiveTestCredentials[]); LiveTestCredentials[] credsArray = (LiveTestCredentials[])reservedParams["credentials"]; Assert.Equal(2, credsArray.Length); LiveTestCredentials result = credsArray[0]; Assert.Equal("random", result.Type); Assert.Equal("testTenantId", result.Properties["tenantId"].ToString()); Assert.Equal("testClientId", result.Properties["clientId"].ToString()); Assert.Equal("testSecret", result.Properties["secret"].ToString()); result = credsArray[1]; Assert.Equal("azure", result.Type); Assert.Equal("testTenantId", result.Properties["tenantId"].ToString()); Assert.Equal("testClientId", result.Properties["clientId"].ToString()); Assert.Equal("testSecret", result.Properties["secret"].ToString()); }
public void UnknownProvider() { LiveTestRequest request = new LiveTestRequest(); request.Params = new Dictionary <string, object>() { { "__reserved", new Dictionary <string, object>() { { "credentials", new LiveTestCredentials[] { new LiveTestCredentials() { Type = Path.GetRandomFileName(), Properties = new Dictionary <string, object>() { { "tenantId", "testTenantId" }, { "clientId", "testClientId" }, { "secret", "testSecret" } } } } } } } }; LiveTestCredentialFactory test = new LiveTestCredentialFactory(); IEnumerable <ICredentialProvider> result = test.Create(request, this.logger); Assert.Equal(0, result.Count()); }
public void TranslateHttpResponseProperty() { string requestJson = "{ \"params\": { \"__reserved\": { \"httpResponse\": true } } }"; LiveTestRequest request = Newtonsoft.Json.JsonConvert.DeserializeObject <LiveTestRequest>(requestJson); LiveTestCredentialFactory test = new LiveTestCredentialFactory(); test.TranslateCredentialsObjects(request); request.Params.ContainsKey("__reserved"); Assert.True(request.Params["__reserved"] is Dictionary <string, object>); Dictionary <string, object> reservedParams = (Dictionary <string, object>)request.Params["__reserved"]; Assert.False(reservedParams.ContainsKey("httpResponse")); Assert.True(request.HttpResponse); }
public virtual CommandExecutionResult ProcessRequest(LiveTestRequest request, LiveTestCredentialFactory credentialsFactory) { if (this.Logger != null) { this.Logger.LogAsync("Translating credentials..."); } credentialsFactory.TranslateCredentialsObjects(request); CommandExecutionResult result = null; string operationId = request.OperationId == null ? null : request.OperationId.ToLowerInvariant(); if (this.Logger != null) { this.Logger.LogAsync("Operation ID of message: " + operationId); } if (!String.IsNullOrEmpty(operationId) && this.Operations.ContainsKey(operationId)) { if (this.Logger != null) { this.Logger.LogAsync("Processing operation..."); } OperationData op = this.Operations[operationId]; // Create the command ICommandBuilder command = this.runspace.CreateCommand(); command.Command = op.Command; foreach (string parameterName in op.Parameters.Keys) { if (request.Params != null && request.Params.ContainsKey(parameterName.ToLowerInvariant())) { command.AddParameter(parameterName, request.Params[parameterName.ToLowerInvariant()]); } else { this.Logger.LogAsync("Request missing parameter: " + parameterName); } } // Process credentials IEnumerable <ICredentialProvider> credProviders = credentialsFactory.Create(request, this.Logger); foreach (ICredentialProvider credProvider in credProviders) { credProvider.Process(command); } // Run the command result = command.Invoke(); // Run post processors, if any foreach (ICommandPostProcessor postProcessor in op.PostProcessors) { result = postProcessor.Process(result); } } else { // error if (this.Logger != null) { this.Logger.LogError("Operation ID was not found in module under test."); } } return(result); }
public override CommandExecutionResult ProcessRequest(LiveTestRequest request, LiveTestCredentialFactory credentialsFactory) { this.ProcessRequestCalled = true; return(null); }