Exemple #1
0
        public async Task PathMustBeAllowed()
        {
            RequireCcsTestInfrastructure();
            const string path = @"C:\Not\Allowed\Path";

            Assert.True(Disable());

            CcsUser user = await CcsUser.Get();

            dynamic ccsInfo = new
            {
                path     = path,
                identity = new
                {
                    username = user.Username,
                    password = user.Password
                },
                private_key_password = PVK_PASS
            };

            using (var client = ApiHttpClient.Create()) {
                JObject             webserver = client.Get($"{Configuration.Instance().TEST_SERVER_URL}/api/webserver/");
                string              ccsLink   = Utils.GetLink(webserver, "central_certificates");
                HttpResponseMessage res       = client.PostRaw(ccsLink, (object)ccsInfo);
                Assert.True((int)res.StatusCode == 403);
            }
        }
Exemple #2
0
        public async Task CanEnable()
        {
            RequireCcsTestInfrastructure();
            CcsUser user = await CcsUser.Get();

            Assert.True(Disable());
            Assert.True(Enable(FOLDER_PATH, user.Username, user.Password, PVK_PASS));
        }
Exemple #3
0
        public async Task CanCreateCcsBinding()
        {
            RequireCcsTestInfrastructure();
            CcsUser user = await CcsUser.Get();

            Assert.True(Enable(FOLDER_PATH, user.Username, user.Password, PVK_PASS));

            JObject      site;
            const string siteName = "CcsBindingTestSite";

            using (var client = ApiHttpClient.Create()) {
                Sites.EnsureNoSite(client, siteName);
                site = Sites.CreateSite(_output, client, siteName, Utils.GetAvailablePort(), Sites.TEST_SITE_PATH);
                Assert.NotNull(site);

                try {
                    JObject cert = GetCertificates().FirstOrDefault(c => {
                        return(c.Value <string>("alias").Equals(CERT_NAME + ".pfx") &&
                               c.Value <JObject>("store").Value <string>("name").Equals(NAME, StringComparison.OrdinalIgnoreCase));
                    });
                    Assert.NotNull(cert);

                    site["bindings"] = JToken.FromObject(new object[] {
                        new {
                            port        = 443,
                            protocol    = "https",
                            ip_address  = "*",
                            hostname    = CERT_NAME,
                            certificate = cert,
                            require_sni = true
                        }
                    });

                    site = client.Patch(Utils.Self(site), site);
                    Assert.NotNull(site);

                    string index = Path.Combine(site.Value <string>("physical_path"), "index.html");
                    if (!File.Exists(index))
                    {
                        File.WriteAllText(index, $"<h1>{siteName}</h1>");
                    }

                    site = client.Get(Utils.Self(site));

                    JObject binding = site["bindings"].ToObject <IEnumerable <JObject> >().First();
                    Assert.NotNull(binding["certificate"]);
                    Assert.True(binding.Value <bool>("require_sni"));

                    JObject certificate = client.Get(Utils.Self(binding.Value <JObject>("certificate")));
                    Assert.NotNull(certificate);
                    Assert.True(certificate["store"].Value <string>("name").Equals(NAME));
                }
                finally {
                    Sites.EnsureNoSite(client, siteName);
                }
            }
        }
Exemple #4
0
        public static async Task <CcsUser> Get()
        {
            var user = new CcsUser();

            user.Username = CentralCertificates.CcsTestUsername;
            user.Password = Guid.NewGuid().ToString();
            await CreateLocalUser(user.Username, user.Password);

            return(user);
        }
Exemple #5
0
        public async Task CcsCertificatesShown()
        {
            RequireCcsTestInfrastructure();
            CcsUser user = await CcsUser.Get();

            Assert.True(Enable(FOLDER_PATH, user.Username, user.Password, PVK_PASS));
            Assert.True(GetCertificates().Any(cert => {
                return(cert.Value <string>("alias").Equals(CERT_NAME + ".pfx") &&
                       cert.Value <JObject>("store").Value <string>("name").Equals(NAME, StringComparison.OrdinalIgnoreCase));
            }));
        }
Exemple #6
0
        public async Task DynamicallyAddsToStores()
        {
            RequireCcsTestInfrastructure();
            CcsUser user = await CcsUser.Get();

            Assert.True(Disable());
            Assert.False(GetStores().Any(store => store.Value <string>("name").Equals(NAME, StringComparison.OrdinalIgnoreCase)));
            Assert.True(Enable(FOLDER_PATH, user.Username, user.Password, PVK_PASS));
            Assert.True(GetStores().Any(store => store.Value <string>("name").Equals(NAME, StringComparison.OrdinalIgnoreCase)));
            Assert.True(Disable());
            Assert.False(GetStores().Any(store => store.Value <string>("name").Equals(NAME, StringComparison.OrdinalIgnoreCase)));
        }