public void Copy () { AllMembershipCondition all = new AllMembershipCondition (); AllMembershipCondition copy = (AllMembershipCondition)all.Copy (); Assert.AreEqual (all, copy, "Equals"); Assert.IsFalse (Object.ReferenceEquals (all, copy), "ReferenceEquals"); }
public void Equals () { AllMembershipCondition all = new AllMembershipCondition (); Assert.IsFalse (all.Equals (null), "Equals(null)"); AllMembershipCondition g2 = new AllMembershipCondition (); Assert.IsTrue (all.Equals (g2), "Equals(g2)"); Assert.IsTrue (g2.Equals (all), "Equals(all)"); Assert.IsFalse (all.Equals (new object ()), "Equals (object)"); }
public static void AllMembershipConditionCallMethods() { AllMembershipCondition amc = new AllMembershipCondition(); bool check = amc.Check(new Evidence()); IMembershipCondition imc = amc.Copy(); check = amc.Equals(new object()); int hash = amc.GetHashCode(); string str = amc.ToString(); SecurityElement se = new SecurityElement(""); PolicyLevel pl = (PolicyLevel)Activator.CreateInstance(typeof(PolicyLevel), true); amc.FromXml(se); amc.FromXml(se, pl); se = amc.ToXml(); se = amc.ToXml(pl); }
public void Check () { AllMembershipCondition all = new AllMembershipCondition (); Evidence e = null; Assert.IsTrue (all.Check (e), "Check (null)"); e = new Evidence (); Assert.IsTrue (all.Check (e), "Check (empty)"); e.AddHost (new Zone (SecurityZone.MyComputer)); Assert.IsTrue (all.Check (e), "Check (zone)"); Url u = new Url ("http://www.go-mono.com/"); e.AddAssembly (u); Assert.IsTrue (all.Check (e), "Check (all-assembly)"); Site s = new Site ("www.go-mono.com"); e.AddHost (s); Assert.IsTrue (all.Check (e), "Check (all-host)"); }
public void Constructor () { AllMembershipCondition all = new AllMembershipCondition (); Assert.IsNotNull (all); }
public void ToXml () { AllMembershipCondition all = new AllMembershipCondition (); SecurityElement se = all.ToXml (); Assert.AreEqual ("IMembershipCondition", se.Tag, "Tag"); Assert.IsTrue (se.Attribute ("class").StartsWith ("System.Security.Policy.AllMembershipCondition"), "class"); Assert.AreEqual ("1", se.Attribute ("version"), "version"); Assert.AreEqual (se.ToString (), all.ToXml (null).ToString (), "ToXml(null)"); Assert.AreEqual (se.ToString (), all.ToXml (PolicyLevel.CreateAppDomainLevel ()).ToString (), "ToXml(PolicyLevel)"); }
public void ToString_ () { AllMembershipCondition all = new AllMembershipCondition (); Assert.AreEqual ("All code", all.ToString ()); }
//----------------------------------------------------------------------------------------------- // private methods //----------------------------------------------------------------------------------------------- /// <summary> /// Written by Abhishek Kumar on March 05, 2007 /// purpose: to initiate the central Application Domain that /// all Grid Threads will be run on. /// /// Police and permissions will also be set. /// ADV: a crash in this App Domain(because of poor code in GThread) /// does not affect eduGRID's Framework i.e. the Alchemi executor is maintained steady even in error /// /// initially Alchemi created separate app domains for each Gthread it received. /// now, instead, we create 1 appdomain and run all gthreads on it /// the Bot Logic resides in this app domain. /// (this saves the overhead of initializing bot logic for every Gthread (or every query)) /// </summary> private void initialize_GridThreadExecutor() { if (GridThreadExecutor == null) { string appDir = GetApplicationDirectory(_CurTi.ApplicationId); AppDomainSetup info = new AppDomainSetup(); info.PrivateBinPath = appDir; GridThreadApplicationDomain = AppDomain.CreateDomain("Central_AppDomain", null, info); // *** // http://www.dotnetthis.com/Articles/DynamicSandboxing.htm PolicyLevel domainPolicy = PolicyLevel.CreateAppDomainLevel(); AllMembershipCondition allCodeMC = new AllMembershipCondition(); // TODO: 'FullTrust' in the following line needs to be replaced with something like 'AlchemiGridThread' // This permission set needs to be defined and set automatically as part of the installation. PermissionSet internetPermissionSet = domainPolicy.GetNamedPermissionSet("FullTrust"); PolicyStatement internetPolicyStatement = new PolicyStatement(internetPermissionSet); CodeGroup allCodeInternetCG = new UnionCodeGroup(allCodeMC, internetPolicyStatement); domainPolicy.RootCodeGroup = allCodeInternetCG; GridThreadApplicationDomain.SetAppDomainPolicy(domainPolicy); GridThreadExecutor = (AppDomainExecutor) GridThreadApplicationDomain.CreateInstanceFromAndUnwrap(Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "Alchemi.Executor.dll"), "Alchemi.Executor.AppDomainExecutor"); } if (!GridThreadExecutor.Initialized) { try { GridThreadExecutor.initialize(); } catch (Exception ex) { throw new Exception("Error during initialization of GridThreadExecutor"); } } }
public void FromXml () { AllMembershipCondition all = new AllMembershipCondition (); SecurityElement se = all.ToXml (); all.FromXml (se); }
public void FromXml_SecurityElementNull () { AllMembershipCondition all = new AllMembershipCondition (); all.FromXml (null, PolicyLevel.CreateAppDomainLevel ()); }
public void FromXml_NoVersion () { AllMembershipCondition all = new AllMembershipCondition (); SecurityElement se = all.ToXml (); SecurityElement w = new SecurityElement (se.Tag); w.AddAttribute ("class", se.Attribute ("class")); all.FromXml (w); }
public void FromXml_InvalidVersion () { AllMembershipCondition all = new AllMembershipCondition (); SecurityElement se = all.ToXml (); SecurityElement w = new SecurityElement (se.Tag); w.AddAttribute ("class", se.Attribute ("class")); w.AddAttribute ("version", "2"); all.FromXml (w); // doesn't seems to care about the version number! }
public void FromXml_NoClass () { AllMembershipCondition all = new AllMembershipCondition (); SecurityElement se = all.ToXml (); SecurityElement w = new SecurityElement (se.Tag); w.AddAttribute ("version", se.Attribute ("version")); all.FromXml (w); // doesn't even care of the class attribute presence }
public void FromXml_InvalidClass () { AllMembershipCondition all = new AllMembershipCondition (); SecurityElement se = all.ToXml (); se.Attributes ["class"] = "Hello world"; all.FromXml (se); }
public void FromXml_WrongTagCase () { AllMembershipCondition all = new AllMembershipCondition (); SecurityElement se = all.ToXml (); se.Tag = "IMEMBERSHIPCONDITION"; // instead of IMembershipCondition all.FromXml (se); }
public void FromXml_InvalidTag () { AllMembershipCondition all = new AllMembershipCondition (); SecurityElement se = all.ToXml (); se.Tag = "IMonoship"; all.FromXml (se); }
public void FromXml_Null () { AllMembershipCondition all = new AllMembershipCondition (); all.FromXml (null); }
public void FromXml_PolicyLevelNull () { AllMembershipCondition all = new AllMembershipCondition (); SecurityElement se = all.ToXml (); all.FromXml (se, null); }
private void SetSandBoxPolicy() { if (!this.SandBox) throw new InvalidOperationException("SandBox property is not set to true"); // http://www.dotnetthis.com/Articles/DynamicSandboxing.htm // Now we need to set the appdomain policy, // and to do that we will need to create a Policy Level. // A Policy Level is a tree-like structure that has Code Groups as its nodes. // Each code group consists of a Membership Condition (something that // defines if an assembly in question belongs to the code group) and // a Permission Set that is granted to the assembly if it does. PolicyLevel domainPolicy = PolicyLevel.CreateAppDomainLevel(); // Let's create a code group that gives Internet permission set // to all code. // First, let's create a membership condition that accepts all code. AllMembershipCondition allCodeMC = new AllMembershipCondition(); // If you were to build a more complex policy (giving different permissions // to different assemblies) you could use other membership conditions, // such as ZoneMembershipCondition, StrongNameMembershipCondition, etc. // Now let's create a policy statement that represents Internet permissions. // Here we just grab named permission set called "Internet" from the default policy, // but you could also create your own permission set with whatever permissions // you want in there. PermissionSet internetPermissionSet = domainPolicy.GetNamedPermissionSet("Internet"); PolicyStatement internetPolicyStatement = new PolicyStatement(internetPermissionSet); // We are ready to create a code group that maps all code to Internet permissions CodeGroup allCodeInternetCG = new UnionCodeGroup(allCodeMC, internetPolicyStatement); // We have used a UnionCodeGroup here. It does not make much difference for // a simple policy like ours here, but if you were to set up a more complex one // you would probably add some child code groups and then the type of the parent // code group would matter. UnionCodeGroup unions all permissions granted by its // child code groups (as opposed to FirstMatchCodeGroup that only takes one child // code group into effect). // Once we have the CodeGroup set up we can add it to our Policy Level. domainPolicy.RootCodeGroup = allCodeInternetCG; // If our root code group had any children the whole tree would be added // to the appdomain security policy now. // Imagine you wanted to modify our policy so that your strongname signed // assemblies would get FullTrust and all other assemblies would get Internet // permissions. Do accomplish that you would create a new UnionCodeGroup, // whose membership condition would be a StrongNameMembershipCondition // specifying your public key, and its permission set would be a "FullTrust" // or just a "new PermissionSet(PermissionState.Unrestricted)". // Then you would add that code group as a child to our allCodeInternetCG by // calling its AddChild method. Whenever you then loaded a correct strong // name signed assembly into your appdomain it would get Internet from the // root code group and FullTrust from the child code group, and the effective // permissions would be a union of the two, which is FullTrust. // and our final policy related step is setting the AppDomain policy this.Domain.SetAppDomainPolicy(domainPolicy); }
public void GetHashCode_ () { AllMembershipCondition all = new AllMembershipCondition (); AllMembershipCondition copy = (AllMembershipCondition)all.Copy (); Assert.AreEqual (all.GetHashCode (), copy.GetHashCode ()); }