public void Update_sites_adding_bindings()
{
var contosoWebSite = new WebSite
{
Name = ContosoWebSiteName,
Bindings = new List<Binding>
{
new Binding
{
Protocol = "http",
IpAddress = "10.0.0.1",
Port = 8081,
HostName = "contoso.com"
}
}
};
var factory = new AzureStorageFactory(CloudStorageAccount.DevelopmentStorageAccount);
var iisManager = new IISManager(LocalSitesPath, TempSitesPath, new SyncStatusRepository(factory), new ConsoleFactory(), LoggerLevel.Debug);
var sites = new List<WebSite> {contosoWebSite};
iisManager.UpdateSites(sites, _excludedSites);
var contoso = RetrieveWebSite(ContosoWebSiteName);
Assert.IsNotNull(contoso);
Assert.AreEqual(contosoWebSite.Name, contoso.Name);
Assert.AreEqual(contosoWebSite.Bindings.Count(), contoso.Bindings.Count);
// Add a new binding (https)
var contosoBindings = contosoWebSite.Bindings.ToList();
contosoBindings.Add(new Binding
{
Protocol = "https",
IpAddress = "10.0.0.1",
Port = 8443,
CertificateThumbprint = "12345"
}
);
contosoWebSite.Bindings = contosoBindings;
iisManager.UpdateSites(sites, _excludedSites);
// Asserts
Assert.AreEqual(sites.Count, RetrieveWebSites().Count() - _excludedSites.Count);
contoso = RetrieveWebSite(ContosoWebSiteName);
Assert.IsNotNull(contoso);
Assert.AreEqual(contosoWebSite.Name, contoso.Name);
Assert.AreEqual(2, contoso.Bindings.Count);
Assert.AreEqual(contosoWebSite.Bindings.First().HostName, contoso.Bindings.First().Host);
Assert.AreEqual(contosoWebSite.Bindings.First().Protocol, contoso.Bindings.First().Protocol);
Assert.AreEqual(contosoWebSite.Bindings.First().IpAddress, contoso.Bindings.First().EndPoint.Address.ToString());
Assert.AreEqual(contosoWebSite.Bindings.First().Port, contoso.Bindings.First().EndPoint.Port);
Assert.IsNull(contoso.Bindings.First().CertificateHash);
Assert.IsTrue(string.IsNullOrEmpty(contoso.Bindings.Last().Host));
Assert.AreEqual(contosoWebSite.Bindings.Last().Protocol, contoso.Bindings.Last().Protocol);
Assert.AreEqual(contosoWebSite.Bindings.Last().IpAddress, contoso.Bindings.Last().EndPoint.Address.ToString());
Assert.AreEqual(contosoWebSite.Bindings.Last().Port, contoso.Bindings.Last().EndPoint.Port);
// todo: Figure out why these don't work!
//Assert.AreEqual(StoreName.My.ToString().ToUpperInvariant(), contoso.Bindings.Last().CertificateStoreName.ToUpperInvariant());
//Assert.IsNotNull(contoso.Bindings.Last().CertificateHash);
}