public void ShouldOperateOnInterface()
 {
     var harness = new StringHarness();
     var proxy = ActionProxy<ITestAction>.Create("testActionName", "netsh unittest", harness);
     proxy.SimpleMethod();
     Assert.AreEqual("netsh unittest testActionName SimpleMethod", harness.Value);
 }
 public void VerifySSLCertOutput()
 {
     var harness = new StringHarness();
     new NetSH(harness).Http.Delete.SSLCert(ipPort:"testipport");
     Assert.AreEqual("netsh http delete sslcert ipport=testipport", harness.Value);
     new NetSH(harness).Http.Delete.SSLCert(hostnamePort: "www.contoso.com:1414");
     Assert.AreEqual("netsh http delete sslcert hostnameport=www.contoso.com:1414", harness.Value);
 }
 public void ShouldSupportEnumerationParameters()
 {
     var harness = new StringHarness();
     var proxy = ActionProxy<ITestAction>.Create("testActionName", "netsh unittest", harness);
     proxy.MethodWithNull();
     Assert.AreEqual("netsh unittest testActionName MethodWithNull", harness.Value);
     proxy.MethodWithNull(1);
     Assert.AreEqual("netsh unittest testActionName MethodWithNull testInt=1", harness.Value);
 }
        public void VerifySSLCertOutput()
        {
            var harness = new StringHarness();
            new NetSH(harness).Http.Show.SSLCert();
            Assert.AreEqual("netsh http show sslcert", harness.Value);

            new NetSH(harness).Http.Show.SSLCert("testipport");
            Assert.AreEqual("netsh http show sslcert ipport=testipport", harness.Value);
        }
 public void ShouldSupportBooleanTypeDecoratedParameters()
 {
     var harness = new StringHarness();
     var proxy = ActionProxy<ITestAction>.Create("testActionName", "netsh unittest", harness);
     proxy.MethodWithBooleanTypeYesNo(true, false, true);
     Assert.AreEqual("netsh unittest testActionName MethodWithBooleanTypeYesNo testBooleanYesNo=yes testBooleanEnabledDisabled=disabled testBooleanTrueFalse=true", harness.Value);
     proxy.MethodWithBooleanTypeYesNo(false, true, false);
     Assert.AreEqual("netsh unittest testActionName MethodWithBooleanTypeYesNo testBooleanYesNo=no testBooleanEnabledDisabled=enabled testBooleanTrueFalse=false", harness.Value);
 }
 public void ShouldSupportBooleanValueDecoratedEnumerations()
 {
     var harness = new StringHarness();
     var proxy = ActionProxy<ITestAction>.Create("testActionName", "netsh unittest", harness);
     proxy.MethodWithDecoratedEnum(DecoratedEnum.Value1);
     Assert.AreEqual("netsh unittest testActionName MethodWithDecoratedEnum testEnum=value1", harness.Value);
     proxy.MethodWithDecoratedEnum(DecoratedEnum.Value2);
     Assert.AreEqual("netsh unittest testActionName MethodWithDecoratedEnum testEnum=value2", harness.Value);
 }
        public void VerifyCacheStateOutput()
        {
            var harness = new StringHarness();
            new NetSH(harness).Http.Show.CacheState("testurl");
            Assert.AreEqual("netsh http show cachestate url=testurl", harness.Value);

            new NetSH(harness).Http.Show.CacheState();
            Assert.AreEqual("netsh http show cachestate", harness.Value);
        }
        public void VerifyTimeoutOutput()
        {
            var harness = new StringHarness();
            new NetSH(harness).Http.Delete.Timeout(Timeout.HeaderWaitTimeout);
            Assert.AreEqual("netsh http delete timeout timeouttype=headerwaittimeout", harness.Value);

            new NetSH(harness).Http.Delete.Timeout(Timeout.IdleConnectionTimeout);
            Assert.AreEqual("netsh http delete timeout timeouttype=idleconnectiontimeout", harness.Value);
        }
        public void VerifyUrlAclOutput()
        {
            var harness = new StringHarness();
            new NetSH(harness).Http.Show.UrlAcl();
            Assert.AreEqual("netsh http show urlacl", harness.Value);

            new NetSH(harness).Http.Show.UrlAcl("testurl");
            Assert.AreEqual("netsh http show urlacl url=testurl", harness.Value);
        }
 public void VerifyCacheOutput()
 {
     var harness = new StringHarness();
     new NetSH(harness).Http.Delete.Cache("testurl", false);
     Assert.AreEqual("netsh http delete cache url=testurl recursive=no", harness.Value);
     new NetSH(harness).Http.Delete.Cache("testurl", true);
     Assert.AreEqual("netsh http delete cache url=testurl recursive=yes", harness.Value);
     new NetSH(harness).Http.Delete.Cache("testurl");
     Assert.AreEqual("netsh http delete cache url=testurl", harness.Value);
 }
        public void VerifyServiceStateOutput()
        {
            var harness = new StringHarness();
            new NetSH(harness).Http.Show.ServiceStateRequestQueueView();
            Assert.AreEqual("netsh http show servicestate view=requestq", harness.Value);

            new NetSH(harness).Http.Show.ServiceStateRequestQueueView(false);
            Assert.AreEqual("netsh http show servicestate view=requestq verbose=no", harness.Value);

            new NetSH(harness).Http.Show.ServiceStateRequestQueueView(true);
            Assert.AreEqual("netsh http show servicestate view=requestq verbose=yes", harness.Value);

            new NetSH(harness).Http.Show.ServiceStateSessionView();
            Assert.AreEqual("netsh http show servicestate view=session", harness.Value);

            new NetSH(harness).Http.Show.ServiceStateSessionView(false);
            Assert.AreEqual("netsh http show servicestate view=session verbose=no", harness.Value);

            new NetSH(harness).Http.Show.ServiceStateSessionView(true);
            Assert.AreEqual("netsh http show servicestate view=session verbose=yes", harness.Value);
        }
 public void VerifyLogBufferOutput()
 {
     var harness = new StringHarness();
     new NetSH(harness).Http.Flush.LogBuffer();
     Assert.AreEqual("netsh http flush logbuffer", harness.Value);
 }
 public void VerifyIpListenOutput()
 {
     var harness = new StringHarness();
     new NetSH(harness).Http.Show.IpListen();
     Assert.AreEqual("netsh http show iplisten", harness.Value);
 }
 public void ShouldSupportParameterNameDecoratedMethods()
 {
     var harness = new StringHarness();
     var proxy = ActionProxy<ITestAction>.Create("testActionName", "netsh unittest", harness);
     proxy.MethodWithParameterNameDecoration("myParameterTest");
     Assert.AreEqual("netsh unittest testActionName MethodWithParameterNameDecoration test=myParameterTest", harness.Value);
 }
 public void VerifyIpListenOutput()
 {
     var harness = new StringHarness();
     new NetSH(harness).Http.Delete.IpListen("testaddress");
     Assert.AreEqual("netsh http delete iplisten ipaddress=testaddress", harness.Value);
 }
        public void VerifySSLCertOutput()
        {
            var harness = new StringHarness();

            var tests = new[]
            {
                new object[] {"testipport", null, "testcerthash", "testcertstorename", "testsslctlidentifier", "testsslctlstorename", (Guid?) new Guid("11111111-1111-1111-1111-111111111111"), (uint?) 1, (uint?) 1, (bool?) true, (bool?) false, (bool?) true, (bool?) false, (bool?) true},
                new object[] {null, "testhostnameport", null, "testcertstorename", "testsslctlidentifier", "testsslctlstorename", (Guid?) new Guid("11111111-1111-1111-1111-111111111111"), (uint?) 1, (uint?) 1, (bool?) false, (bool?) true, (bool?) false, (bool?) true, (bool?) false},
                new object[] {"testipport", null, "testcerthash", null, "testsslctlidentifier", "testsslctlstorename", (Guid?) new Guid("11111111-1111-1111-1111-111111111111"), (uint?) 1, (uint?) 1, (bool?) false, (bool?) true, (bool?) false, (bool?) true, (bool?) false},
                new object[] {null, "testhostnameport", "testcerthash", "testcertstorename", null, "testsslctlstorename", (Guid?) new Guid("11111111-1111-1111-1111-111111111111"), (uint?) 1, (uint?) 1, (bool?) false, (bool?) true, (bool?) false, (bool?) true, (bool?) false},
                new object[] {"testipport", null, "testcerthash", "testcertstorename", "testsslctlidentifier", null, (Guid?) new Guid("11111111-1111-1111-1111-111111111111"), (uint?) 1, (uint?) 1, (bool?) false, (bool?) true, (bool?) false, (bool?) true, (bool?) false},
                new object[] {null, "testhostnameport", "testcerthash", "testcertstorename", "testsslctlidentifier", "testsslctlstorename", null, (uint?) 1, (uint?) 1, (bool?) false, (bool?) true, (bool?) false, (bool?) true, (bool?) false},
                new object[] {"testipport", null, "testcerthash", "testcertstorename", "testsslctlidentifier", "testsslctlstorename", (Guid?) new Guid("11111111-1111-1111-1111-111111111111"), null, (uint?) 1, (bool?) false, (bool?) true, (bool?) false, (bool?) true, (bool?) false},
                new object[] {null, "testhostnameport", "testcerthash", "testcertstorename", "testsslctlidentifier", "testsslctlstorename", (Guid?) new Guid("11111111-1111-1111-1111-111111111111"), (uint?) 1, null, (bool?) false, (bool?) true, (bool?) false, (bool?) true, (bool?) false},
                new object[] {"testipport", null, "testcerthash", "testcertstorename", "testsslctlidentifier", "testsslctlstorename", (Guid?) new Guid("11111111-1111-1111-1111-111111111111"), (uint?) 1, (uint?) 1, null, (bool?) true, (bool?) false, (bool?) true, (bool?) false},
                new object[] {null, "testhostnameport", "testcerthash", "testcertstorename", "testsslctlidentifier", "testsslctlstorename", (Guid?) new Guid("11111111-1111-1111-1111-111111111111"), (uint?) 1, (uint?) 1, (bool?) false, null, (bool?) false, (bool?) true, (bool?) false},
                new object[] {"testipport", null, "testcerthash", "testcertstorename", "testsslctlidentifier", "testsslctlstorename", (Guid?) new Guid("11111111-1111-1111-1111-111111111111"), (uint?) 1, (uint?) 1, (bool?) false, (bool?) true, null, (bool?) true, (bool?) false},
                new object[] {null, "testhostnameport", "testcerthash", "testcertstorename", "testsslctlidentifier", "testsslctlstorename", (Guid?) new Guid("11111111-1111-1111-1111-111111111111"), (uint?) 1, (uint?) 1, (bool?) false, (bool?) true, (bool?) false, null, (bool?) false},
                new object[] {"testipport", null, "testcerthash", "testcertstorename", "testsslctlidentifier", "testsslctlstorename", (Guid?) new Guid("11111111-1111-1111-1111-111111111111"), (uint?) 1, (uint?) 1, (bool?) false, (bool?) true, (bool?) false, (bool?) true, null}
            };

            foreach (var values in tests)
            {
                var nullValueIndices = values.Select((val, idx) => Tuple.Create(val, idx)).Where(t => t.Item1 == null).Select(t => t.Item2).ToArray();

                new NetSH(harness).Http.Add.SSLCert(ipPort:										(string)values[0],
                                                    hostnamePort:								(string)values[1],
                                                    certHash:									(string)values[2],
                                                    certStoreName:								(string)values[3],
                                                    sslCtlIdentifier:							(string)values[4],
                                                    sslCtlStoreName:							(string)values[5],
                                                    appId:										(Guid?) values[6],
                                                    revocationFreshnessTime:					(uint?) values[7],
                                                    urlRetrievalTimeout:						(uint?) values[8],
                                                    verifyClientCertRevocation:					(bool?) values[9],
                                                    verifyRevocationWithCachedClientCertOnly:	(bool?) values[10],
                                                    usageCheck:									(bool?) values[11],
                                                    dsMapperUsage:								(bool?) values[12],
                                                    clientCertNegotiation:						(bool?) values[13]);

                var value = harness.Value;
                var parameters = typeof (IAddAction).GetMethod("SSLCert").GetParameters();
                var i = 0;
                parameters.ToList().ForEach(x =>
                {
                    var type = x.ParameterType;
                    var name = x.Name.ToLower();

                    if (nullValueIndices.Contains(i))
                    {
                        Assert.IsTrue(!value.Contains(name + "="));
                        i++;
                        return;
                    }

                    if (type == typeof (string))
                        Assert.IsTrue(value.Contains(name + "=" + "test" + name));
                    else if (type == typeof (Guid))
                        Assert.IsTrue(value.Contains(name + "={11111111-1111-1111-1111-111111111111}"));
                    else if (type == typeof(Guid?))
                        Assert.IsTrue(value.Contains(name + "={11111111-1111-1111-1111-111111111111}"));
                    else if (type == typeof (bool))
                        Assert.IsTrue(value.Contains(name + "=enabled") || value.Contains(name + "=disabled"));
                    i++;
                });
            }
        }
        public void VerifyUrlAclOutput()
        {
            var harness = new StringHarness();
            var netsh = new NetSH(harness);

            netsh.Http.Add.UrlAcl("testurl", "testuser", false, false);
            Assert.AreEqual("netsh http add urlacl url=testurl user=testuser listen=no delegate=no", harness.Value);

            netsh.Http.Add.UrlAcl("testurl", "testuser", false, true);
            Assert.AreEqual("netsh http add urlacl url=testurl user=testuser listen=no delegate=yes", harness.Value);

            netsh.Http.Add.UrlAcl("testurl", "testuser", true, false);
            Assert.AreEqual("netsh http add urlacl url=testurl user=testuser listen=yes delegate=no", harness.Value);

            netsh.Http.Add.UrlAcl("testurl", "testuser", true, true);
            Assert.AreEqual("netsh http add urlacl url=testurl user=testuser listen=yes delegate=yes", harness.Value);

            netsh.Http.Add.UrlAcl("testurl", "testuser", null, true);
            Assert.AreEqual("netsh http add urlacl url=testurl user=testuser delegate=yes", harness.Value);

            netsh.Http.Add.UrlAcl("testurl", "testuser", null, false);
            Assert.AreEqual("netsh http add urlacl url=testurl user=testuser delegate=no", harness.Value);

            netsh.Http.Add.UrlAcl("testurl", "testuser", true);
            Assert.AreEqual("netsh http add urlacl url=testurl user=testuser listen=yes", harness.Value);

            netsh.Http.Add.UrlAcl("testurl", "testuser", false);
            Assert.AreEqual("netsh http add urlacl url=testurl user=testuser listen=no", harness.Value);

            netsh.Http.Add.UrlAcl("testurl", "testuser", "testsddl");
            Assert.AreEqual("netsh http add urlacl url=testurl user=testuser sddl=testsddl", harness.Value);
        }
 public void VerifyTimeoutOutput()
 {
     var harness = new StringHarness();
     new NetSH(harness).Http.Show.Timeout();
     Assert.AreEqual("netsh http show timeout", harness.Value);
 }