a575963da9
Former-commit-id: da6be194a6b1221998fc28233f2503bd61dd9d14
166 lines
5.8 KiB
C#
166 lines
5.8 KiB
C#
// Copyright (c) Microsoft Corporation. All rights reserved. See License.txt in the project root for license information.
|
|
|
|
using System.Collections.Generic;
|
|
using System.Collections.Specialized;
|
|
using System.Web.WebPages.TestUtils;
|
|
using Moq;
|
|
using Xunit;
|
|
|
|
namespace System.Web.Helpers.Test
|
|
{
|
|
public class InfoTest
|
|
{
|
|
[Fact]
|
|
public void ConfigurationReturnsExpectedInfo()
|
|
{
|
|
var configInfo = ServerInfo.Configuration();
|
|
|
|
// verification
|
|
// checks only subset of values
|
|
Assert.NotNull(configInfo);
|
|
VerifyKey(configInfo, "Machine Name");
|
|
VerifyKey(configInfo, "OS Version");
|
|
VerifyKey(configInfo, "ASP.NET Version");
|
|
VerifyKey(configInfo, "ASP.NET Web Pages Version");
|
|
}
|
|
|
|
[Fact]
|
|
public void EnvironmentVariablesReturnsExpectedInfo()
|
|
{
|
|
var envVariables = ServerInfo.EnvironmentVariables();
|
|
|
|
// verification
|
|
// checks only subset of values
|
|
Assert.NotNull(envVariables);
|
|
VerifyKey(envVariables, "Path");
|
|
VerifyKey(envVariables, "SystemDrive");
|
|
}
|
|
|
|
[Fact]
|
|
public void ServerVariablesReturnsExpectedInfoWithNoContext()
|
|
{
|
|
var serverVariables = ServerInfo.ServerVariables();
|
|
|
|
// verification
|
|
// since there is no HttpContext this will be empty
|
|
Assert.NotNull(serverVariables);
|
|
}
|
|
|
|
[Fact]
|
|
public void ServerVariablesReturnsExpectedInfoWthContext()
|
|
{
|
|
var serverVariables = new NameValueCollection();
|
|
serverVariables.Add("foo", "bar");
|
|
|
|
var request = new Mock<HttpRequestBase>();
|
|
request.Setup(c => c.ServerVariables).Returns(serverVariables);
|
|
|
|
var context = new Mock<HttpContextBase>();
|
|
context.Setup(c => c.Request).Returns(request.Object);
|
|
|
|
// verification
|
|
Assert.NotNull(serverVariables);
|
|
|
|
IDictionary<string, string> returnedValues = ServerInfo.ServerVariables(context.Object);
|
|
Assert.Equal(serverVariables.Count, returnedValues.Count);
|
|
foreach (var item in returnedValues)
|
|
{
|
|
Assert.Equal(serverVariables[item.Key], item.Value);
|
|
}
|
|
}
|
|
|
|
[Fact]
|
|
public void HttpRuntimeInfoReturnsExpectedInfo()
|
|
{
|
|
var httpRuntimeInfo = ServerInfo.HttpRuntimeInfo();
|
|
|
|
// verification
|
|
// checks only subset of values
|
|
Assert.NotNull(httpRuntimeInfo);
|
|
VerifyKey(httpRuntimeInfo, "CLR Install Directory");
|
|
VerifyKey(httpRuntimeInfo, "Asp Install Directory");
|
|
VerifyKey(httpRuntimeInfo, "On UNC Share");
|
|
}
|
|
|
|
[Fact]
|
|
public void ServerInfoDoesNotProduceLegacyCasForHomogenousAppDomain()
|
|
{
|
|
// Act and Assert
|
|
Action action = () =>
|
|
{
|
|
IDictionary<string, string> configValue = ServerInfo.LegacyCAS(AppDomain.CurrentDomain);
|
|
|
|
Assert.NotNull(configValue);
|
|
Assert.Equal(0, configValue.Count);
|
|
};
|
|
|
|
AppDomainUtils.RunInSeparateAppDomain(GetAppDomainSetup(legacyCasEnabled: false), action);
|
|
}
|
|
|
|
[Fact]
|
|
public void ServerInfoProducesLegacyCasForNonHomogenousAppDomain()
|
|
{
|
|
// Arrange
|
|
Action action = () =>
|
|
{
|
|
// Act and Assert
|
|
IDictionary<string, string> configValue = ServerInfo.LegacyCAS(AppDomain.CurrentDomain);
|
|
|
|
// Assert
|
|
Assert.True(configValue.ContainsKey("Legacy Code Access Security"));
|
|
Assert.Equal(configValue["Legacy Code Access Security"], "Legacy Code Access Security has been detected on your system. Microsoft WebPage features require the ASP.NET 4 Code Access Security model. For information about how to resolve this, contact your server administrator.");
|
|
};
|
|
|
|
AppDomainUtils.RunInSeparateAppDomain(GetAppDomainSetup(legacyCasEnabled: true), action);
|
|
}
|
|
|
|
//[Fact]
|
|
//public void SqlServerInfoReturnsExpectedInfo() {
|
|
// var sqlInfo = ServerInfo.SqlServerInfo();
|
|
|
|
// // verification
|
|
// // just verifies that we don't get any unexpected exceptions
|
|
// Assert.NotNull(sqlInfo);
|
|
//}
|
|
|
|
[Fact]
|
|
public void RenderResultContainsExpectedTags()
|
|
{
|
|
var htmlString = ServerInfo.GetHtml().ToString();
|
|
|
|
// just verify that the final HTML produced contains some expected info
|
|
Assert.True(htmlString.Contains("<table class=\"server-info\" dir=\"ltr\">"));
|
|
Assert.True(htmlString.Contains("</style>"));
|
|
Assert.True(htmlString.Contains("Server Configuration"));
|
|
}
|
|
|
|
[Fact]
|
|
public void RenderGeneratesValidXhtml()
|
|
{
|
|
// Result does not validate against XHTML 1.1 and HTML5 because ServerInfo generates
|
|
// <style> inside <body>. This is by design however since we only use ServerInfo
|
|
// as debugging aid, not something to be permanently added to a web page.
|
|
XhtmlAssert.Validate1_0(
|
|
ServerInfo.GetHtml(),
|
|
addRoot: true
|
|
);
|
|
}
|
|
|
|
private void VerifyKey(IDictionary<string, string> info, string key)
|
|
{
|
|
Assert.True(info.ContainsKey(key));
|
|
Assert.False(String.IsNullOrEmpty(info[key]));
|
|
}
|
|
|
|
private AppDomainSetup GetAppDomainSetup(bool legacyCasEnabled)
|
|
{
|
|
var setup = new AppDomainSetup();
|
|
if (legacyCasEnabled)
|
|
{
|
|
setup.SetCompatibilitySwitches(new[] { "NetFx40_LegacySecurityPolicy" });
|
|
}
|
|
return setup;
|
|
}
|
|
}
|
|
}
|