示例#1
0
        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);
        }
示例#2
0
        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());
        }
示例#3
0
        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());
        }
示例#4
0
        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);
        }
示例#5
0
        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);
        }
示例#6
0
 public override CommandExecutionResult ProcessRequest(LiveTestRequest request, LiveTestCredentialFactory credentialsFactory)
 {
     this.ProcessRequestCalled = true;
     return(null);
 }