public void ExpandVariables_ExpandVariablesWhenExecuteInvoked_WithDifferentCaseNames()
        {
            // arrange
            var target     = new ExpandVariables();
            var parameters = new Dictionary <string, object>
            {
                { "Inputs", new[] { "$(value1)", "$(buildNumber)", "$(TMp)" } },
                { "Variables", new Dictionary <string, string> {
                      { "Value1", "value1" }
                  } },
                { "IncludeBuildVariables", true },
                { "IncludeEnvironmentVariables", true }
            };

            var buildDetail = GetMockedIBuildDetail();

            var invoker = new WorkflowInvoker(target);

            invoker.Extensions.Add(buildDetail.Object);

            // act
            var actual = invoker.Invoke(parameters);

            // assert
            Assert.AreEqual(3, ((IEnumerable <string>)actual["Result"]).Count(), "Expected 3 output parameter.");
            Assert.AreEqual("value1", ((IEnumerable <string>)actual["Result"]).ElementAt(0));
            Assert.AreEqual(buildDetail.Object.BuildNumber, ((IEnumerable <string>)actual["Result"]).ElementAt(1));
            Assert.AreEqual(Environment.GetEnvironmentVariable("TMP"), ((IEnumerable <string>)actual["Result"]).ElementAt(2));
        }
        public void ExpandVariables_ExpandUserVariablesWhenExecuteInvoked_WithUserVariableOverridingBuildVariable()
        {
            // arrange
            var target     = new ExpandVariables();
            var parameters = new Dictionary <string, object>
            {
                { "Inputs", new[] { "My user var: $(BuildId)" } },
                { "Variables", new Dictionary <string, string> {
                      { "BuildId", "-1" }
                  } },
                { "IncludeBuildVariables", true }
            };

            var buildDetail = GetMockedIBuildDetail();
            var invoker     = new WorkflowInvoker(target);

            invoker.Extensions.Add(buildDetail.Object);

            // act
            var actual = invoker.Invoke(parameters);

            // assert
            Assert.AreEqual(1, ((IEnumerable <string>)actual["Result"]).Count(), "Expected only one output parameter.");
            Assert.AreEqual("My user var: -1", ((IEnumerable <string>)actual["Result"]).ElementAt(0));
        }
        public void ExpandVariables_ReturnsEmptyWhenExecuteInvoked_WithEmptyInput()
        {
            // arrange
            var target     = new ExpandVariables();
            var parameters = new Dictionary <string, object>
            {
                { "Inputs", new string[0] }
            };

            var invoker = new WorkflowInvoker(target);

            // act
            var actual = invoker.Invoke(parameters);

            // assert
            Assert.IsFalse(((IEnumerable <string>)actual["Result"]).Any());
        }
        public void ExpandVariables_ReturnsNullWhenExecuteInvoked_WithNullInput()
        {
            // arrange
            var target = new ExpandVariables();
            var parameters = new Dictionary<string, object>
            {
                { "Inputs", null }
            };

            var invoker = new WorkflowInvoker(target);

            // act
            var actual = invoker.Invoke(parameters);

            // assert
            Assert.IsNull(actual["Result"]);
        }
        public void ExpandVariables_ReturnsNullWhenExecuteInvoked_WithNullInput()
        {
            // arrange
            var target     = new ExpandVariables();
            var parameters = new Dictionary <string, object>
            {
                { "Inputs", null }
            };

            var invoker = new WorkflowInvoker(target);

            // act
            var actual = invoker.Invoke(parameters);

            // assert
            Assert.IsNull(actual["Result"]);
        }
        public void ExpandVariables_ReturnsEmptyWhenExecuteInvoked_WithEmptyInput()
        {
            // arrange
            var target = new ExpandVariables();
            var parameters = new Dictionary<string, object>
            {
                { "Inputs", new string[0] }
            };

            var invoker = new WorkflowInvoker(target);

            // act
            var actual = invoker.Invoke(parameters);

            // assert
            Assert.IsFalse(((IEnumerable<string>)actual["Result"]).Any());
        }
        public void ExpandVariables_DoNotExpandBuildVariablesWhenExecuteInvoked_WithIncludeBuildVariablesEqualsFalse()
        {
            // arrange
            var target     = new ExpandVariables();
            var parameters = new Dictionary <string, object>
            {
                { "Inputs", new[] { "My build number: $(BuildNumber)" } }
            };

            var invoker = new WorkflowInvoker(target);

            // act
            var actual = invoker.Invoke(parameters);

            // assert
            Assert.AreEqual(1, ((IEnumerable <string>)actual["Result"]).Count(), "Expected only one output parameter.");
            Assert.AreEqual("My build number: $(BuildNumber)", ((IEnumerable <string>)actual["Result"]).ElementAt(0));
        }
        public void ExpandVariables_ExpandEnvironmentVariablesWhenExecuteInvoked()
        {
            // arrange
            var target     = new ExpandVariables();
            var parameters = new Dictionary <string, object>
            {
                { "Inputs", new[] { "My temp dir: $(TMP)" } },
                { "IncludeEnvironmentVariables", true }
            };

            var invoker = new WorkflowInvoker(target);

            // act
            var actual = invoker.Invoke(parameters);

            // assert
            Assert.AreEqual(1, ((IEnumerable <string>)actual["Result"]).Count(), "Expected only one output parameter.");
            Assert.AreEqual("My temp dir: " + Environment.GetEnvironmentVariable("TMP"), ((IEnumerable <string>)actual["Result"]).ElementAt(0));
        }
        public void ExpandVariables_ExpandVariablesWhenExecuteInvoked_WithVariableNameOnly()
        {
            // arrange
            var target = new ExpandVariables();
            var parameters = new Dictionary<string, object>
            {
                { "Inputs", new[] { "My user var: $(Value1)/$(Value2)" } },
                { "Variables", new Dictionary<string, string> { { "Value1", "value1" },  { "Value2", "value2" } } }
            };

            var invoker = new WorkflowInvoker(target);

            // act
            var actual = invoker.Invoke(parameters);

            // assert
            Assert.AreEqual(1, ((IEnumerable<string>)actual["Result"]).Count(), "Expected only one output parameter.");
            Assert.AreEqual("My user var: value1/value2", ((IEnumerable<string>)actual["Result"]).ElementAt(0));
        }
        public void ExpandVariables_ExpandVariablesWhenExecuteInvoked_WithVariableNameOnly()
        {
            // arrange
            var target     = new ExpandVariables();
            var parameters = new Dictionary <string, object>
            {
                { "Inputs", new[] { "My user var: $(Value1)/$(Value2)" } },
                { "Variables", new Dictionary <string, string> {
                      { "Value1", "value1" }, { "Value2", "value2" }
                  } }
            };

            var invoker = new WorkflowInvoker(target);

            // act
            var actual = invoker.Invoke(parameters);

            // assert
            Assert.AreEqual(1, ((IEnumerable <string>)actual["Result"]).Count(), "Expected only one output parameter.");
            Assert.AreEqual("My user var: value1/value2", ((IEnumerable <string>)actual["Result"]).ElementAt(0));
        }
        public void ExpandVariables_ExpandBuildIdVariableWhenExecuteInvoked()
        {
            // arrange
            var target     = new ExpandVariables();
            var parameters = new Dictionary <string, object>
            {
                { "Inputs", new[] { "$(BuildId)" } },
                { "IncludeBuildVariables", true }
            };

            var buildDetail = GetMockedIBuildDetail();
            var invoker     = new WorkflowInvoker(target);

            invoker.Extensions.Add(buildDetail.Object);

            // act
            var actual = invoker.Invoke(parameters);

            // assert
            Assert.AreEqual(1, ((IEnumerable <string>)actual["Result"]).Count(), "Expected only one output parameter.");
            Assert.AreEqual(LinkingUtilities.DecodeUri(buildDetail.Object.Uri.ToString()).ToolSpecificId, ((IEnumerable <string>)actual["Result"]).ElementAt(0));
        }
        public void ExpandVariables_DoNotExpandBuildAgentIdWhenExecuteInvokedOutsideAgentScope()
        {
            // arrange
            var target     = new ExpandVariables();
            var parameters = new Dictionary <string, object>
            {
                { "Inputs", new[] { "$(BuildAgentId)" } },
                { "IncludeBuildVariables", true }
            };

            var buildDetail = GetMockedIBuildDetail();
            var invoker     = new WorkflowInvoker(target);

            invoker.Extensions.Add(buildDetail.Object);

            // act
            var actual = invoker.Invoke(parameters);

            // assert
            Assert.AreEqual(1, ((IEnumerable <string>)actual["Result"]).Count(), "Expected only one output parameter.");
            Assert.AreEqual(string.Empty, ((IEnumerable <string>)actual["Result"]).ElementAt(0));
        }
        public void ExpandVariables_ExpandUserVariablesWhenExecuteInvoked_WithUserVariableOverridingEnvironmentVariable()
        {
            // arrange
            var target     = new ExpandVariables();
            var parameters = new Dictionary <string, object>
            {
                { "Inputs", new[] { "My user var: $(TMP)" } },
                { "Variables", new Dictionary <string, string> {
                      { "TMP", "[TEMP]" }
                  } },
                { "IncludeEnvironmentVariables", true }
            };

            var invoker = new WorkflowInvoker(target);

            // act
            var actual = invoker.Invoke(parameters);

            // assert
            Assert.AreEqual(1, ((IEnumerable <string>)actual["Result"]).Count(), "Expected only one output parameter.");
            Assert.AreEqual("My user var: [TEMP]", ((IEnumerable <string>)actual["Result"]).ElementAt(0));
        }
        public void ExpandVariables_ExpandUserVariablesWhenExecuteInvoked_WithUserVariableOverridingBuildVariable()
        {
            // arrange
            var target = new ExpandVariables();
            var parameters = new Dictionary<string, object>
            {
                { "Inputs", new[] { "My user var: $(BuildId)" } },
                { "Variables", new Dictionary<string, string> { { "BuildId", "-1" } } },
                { "IncludeBuildVariables", true }
            };

            var buildDetail = GetMockedIBuildDetail();
            var invoker = new WorkflowInvoker(target);
            invoker.Extensions.Add(buildDetail.Object);

            // act
            var actual = invoker.Invoke(parameters);

            // assert
            Assert.AreEqual(1, ((IEnumerable<string>)actual["Result"]).Count(), "Expected only one output parameter.");
            Assert.AreEqual("My user var: -1", ((IEnumerable<string>)actual["Result"]).ElementAt(0));
        }
        public void ExpandVariables_ExpandVariablesWhenExecuteInvoked_WithDifferentCaseNames()
        {
            // arrange
            var target = new ExpandVariables();
            var parameters = new Dictionary<string, object>
            {
                { "Inputs", new[] { "$(value1)", "$(buildNumber)", "$(TMp)" } },
                { "Variables", new Dictionary<string, string> { { "Value1", "value1" } } },
                { "IncludeBuildVariables", true },
                { "IncludeEnvironmentVariables", true }
            };

            var buildDetail = GetMockedIBuildDetail();

            var invoker = new WorkflowInvoker(target);
            invoker.Extensions.Add(buildDetail.Object);

            // act
            var actual = invoker.Invoke(parameters);

            // assert
            Assert.AreEqual(3, ((IEnumerable<string>)actual["Result"]).Count(), "Expected 3 output parameter.");
            Assert.AreEqual("value1", ((IEnumerable<string>)actual["Result"]).ElementAt(0));
            Assert.AreEqual(buildDetail.Object.BuildNumber, ((IEnumerable<string>)actual["Result"]).ElementAt(1));
            Assert.AreEqual(Environment.GetEnvironmentVariable("TMP"), ((IEnumerable<string>)actual["Result"]).ElementAt(2));
        }
        public void ExpandVariables_ExpandBuildAgentIdWhenExecuteInvokedInsideAgentScope()
        {
            // arrange
            var target = new ExpandVariables();
            var parameters = new Dictionary<string, object>
            {
                { "Inputs", new[] { "$(BuildAgentId)" } },
                { "IncludeBuildVariables", true }
            };

            var buildDetail = GetMockedIBuildDetail();
            var buildAgent = GetMockedIBuildAgent();
            var invoker = new WorkflowInvoker(target);
            invoker.Extensions.Add(buildDetail.Object);
            invoker.Extensions.Add(buildAgent.Object);

            // act
            var actual = invoker.Invoke(parameters);

            // assert
            Assert.AreEqual(1, ((IEnumerable<string>)actual["Result"]).Count(), "Expected only one output parameter.");
            Assert.AreEqual("5", ((IEnumerable<string>)actual["Result"]).ElementAt(0));
        }
        public void ExpandVariables_ExpandBuildIdVariableWhenExecuteInvoked()
        {
            // arrange
            var target = new ExpandVariables();
            var parameters = new Dictionary<string, object>
            {
                { "Inputs", new[] { "$(BuildId)" } },
                { "IncludeBuildVariables", true }
            };

            var buildDetail = GetMockedIBuildDetail();
            var invoker = new WorkflowInvoker(target);
            invoker.Extensions.Add(buildDetail.Object);

            // act
            var actual = invoker.Invoke(parameters);

            // assert
            Assert.AreEqual(1, ((IEnumerable<string>)actual["Result"]).Count(), "Expected only one output parameter.");
            Assert.AreEqual(LinkingUtilities.DecodeUri(buildDetail.Object.Uri.ToString()).ToolSpecificId, ((IEnumerable<string>)actual["Result"]).ElementAt(0));
        }
        public void ExpandVariables_DoNotExpandBuildVariablesWhenExecuteInvoked_WithIncludeBuildVariablesEqualsFalse()
        {
            // arrange
            var target = new ExpandVariables();
            var parameters = new Dictionary<string, object>
            {
                { "Inputs", new[] { "My build number: $(BuildNumber)" } }
            };

            var invoker = new WorkflowInvoker(target);

            // act
            var actual = invoker.Invoke(parameters);

            // assert
            Assert.AreEqual(1, ((IEnumerable<string>)actual["Result"]).Count(), "Expected only one output parameter.");
            Assert.AreEqual("My build number: $(BuildNumber)", ((IEnumerable<string>)actual["Result"]).ElementAt(0));
        }
        public void ExpandVariables_ExpandEnvironmentVariablesWhenExecuteInvoked()
        {
            // arrange
            var target = new ExpandVariables();
            var parameters = new Dictionary<string, object>
            {
                { "Inputs", new[] { "My temp dir: $(TMP)" } },
                { "IncludeEnvironmentVariables", true }
            };

            var invoker = new WorkflowInvoker(target);

            // act
            var actual = invoker.Invoke(parameters);

            // assert
            Assert.AreEqual(1, ((IEnumerable<string>)actual["Result"]).Count(), "Expected only one output parameter.");
            Assert.AreEqual("My temp dir: " + Environment.GetEnvironmentVariable("TMP"), ((IEnumerable<string>)actual["Result"]).ElementAt(0));
        }
        public void ExpandVariables_ExpandUserVariablesWhenExecuteInvoked_WithUserVariableOverridingEnvironmentVariable()
        {
            // arrange
            var target = new ExpandVariables();
            var parameters = new Dictionary<string, object>
            {
                { "Inputs", new[] { "My user var: $(TMP)" } },
                { "Variables", new Dictionary<string, string> { { "TMP", "[TEMP]" } } },
                { "IncludeEnvironmentVariables", true }
            };

            var invoker = new WorkflowInvoker(target);

            // act
            var actual = invoker.Invoke(parameters);

            // assert
            Assert.AreEqual(1, ((IEnumerable<string>)actual["Result"]).Count(), "Expected only one output parameter.");
            Assert.AreEqual("My user var: [TEMP]", ((IEnumerable<string>)actual["Result"]).ElementAt(0));
        }