public void CreateSandboxedInstanceWithFullTrustListTest() { PermissionSet internet = PermissionSetFactory.GetStandardPermissionSet(StandardPermissionSet.Internet); RemoteDomainObject fullTrustListInternet = SandboxActivator.CreateSandboxedInstance <RemoteDomainObject>(internet, new Assembly[] { typeof(object).Assembly, typeof(System.Diagnostics.Debug).Assembly }); // Ensure we got Internet permissions Assert.IsTrue(fullTrustListInternet.Demand(internet)); Assert.IsFalse(fullTrustListInternet.Demand(PermissionSetFactory.GetStandardPermissionSet(StandardPermissionSet.LocalIntranet))); // We should share with other objects having the same full trust list RemoteDomainObject fullTrustListInternet2 = SandboxActivator.CreateSandboxedInstance <RemoteDomainObject>(internet, new Assembly[] { typeof(object).Assembly, typeof(System.Diagnostics.Debug).Assembly }); Assert.AreEqual(fullTrustListInternet.AppDomainId, fullTrustListInternet2.AppDomainId); // We shouldn't share with a non-full-trust-list bearing Internet object RemoteDomainObject noFullTrustListInternet = SandboxActivator.CreateSandboxedInstance <RemoteDomainObject>(internet, null); Assert.AreNotEqual(fullTrustListInternet.AppDomainId, noFullTrustListInternet.AppDomainId); // Nor should we share with assemblies with a different full trust list RemoteDomainObject differentFullTrustListInternet = SandboxActivator.CreateSandboxedInstance <RemoteDomainObject>(internet, new Assembly[] { typeof(object).Assembly }); Assert.AreNotEqual(fullTrustListInternet.AppDomainId, differentFullTrustListInternet.AppDomainId); }
public void CreateSandboxedInstanceDefaultTest() { RemoteDomainObject object1 = SandboxActivator.CreateSandboxedInstance <RemoteDomainObject>(); // Ensure we got Execution permission Assert.IsTrue(object1.Demand(PermissionSetFactory.GetStandardPermissionSet(StandardPermissionSet.Execution))); Assert.IsFalse(object1.Demand(PermissionSetFactory.GetStandardPermissionSet(StandardPermissionSet.Internet))); // Ensure that we reuse the same domain for multiple objects RemoteDomainObject object2 = SandboxActivator.CreateSandboxedInstance <RemoteDomainObject>(); Assert.AreEqual(object1.AppDomainId, object2.AppDomainId); }
public void CreateSandboxedInstanceInternetTest() { PermissionSet internet = PermissionSetFactory.GetStandardPermissionSet(StandardPermissionSet.Internet); RemoteDomainObject object1 = SandboxActivator.CreateSandboxedInstance <RemoteDomainObject>(internet); // Ensure we got Internet permissions Assert.IsTrue(object1.Demand(internet)); Assert.IsFalse(object1.Demand(PermissionSetFactory.GetStandardPermissionSet(StandardPermissionSet.LocalIntranet))); // Ensure we reuse the same domain for multiple objects RemoteDomainObject object2 = SandboxActivator.CreateSandboxedInstance <RemoteDomainObject>(internet); Assert.AreEqual(object1.AppDomainId, object2.AppDomainId); }
public void CreateSandboxedInstanceMultipleSandboxesTest() { PermissionSet execution = PermissionSetFactory.GetStandardPermissionSet(StandardPermissionSet.Execution); RemoteDomainObject executionObject = SandboxActivator.CreateSandboxedInstance <RemoteDomainObject>(execution); Assert.IsTrue(executionObject.Demand(execution)); Assert.IsFalse(executionObject.Demand(new PermissionSet(PermissionState.Unrestricted))); PermissionSet internet = PermissionSetFactory.GetStandardPermissionSet(StandardPermissionSet.Internet); RemoteDomainObject internetObject = SandboxActivator.CreateSandboxedInstance <RemoteDomainObject>(internet); Assert.IsTrue(internetObject.Demand(internet)); Assert.IsFalse(internetObject.Demand(new PermissionSet(PermissionState.Unrestricted))); PermissionSet intranet = PermissionSetFactory.GetStandardPermissionSet(StandardPermissionSet.LocalIntranet); RemoteDomainObject intranetObject = SandboxActivator.CreateSandboxedInstance <RemoteDomainObject>(intranet); Assert.IsTrue(intranetObject.Demand(intranet)); Assert.IsFalse(intranetObject.Demand(new PermissionSet(PermissionState.Unrestricted))); Assert.AreNotEqual(executionObject.AppDomainId, internetObject.AppDomainId); Assert.AreNotEqual(executionObject.AppDomainId, intranetObject.AppDomainId); Assert.AreNotEqual(internetObject.AppDomainId, intranetObject.AppDomainId); }