public void SetUp() { _ratAttrib = new RunAsDefaultTenant(); // Explicitly calling the RunAsDefaultTenant attribute so that we can set up some common objects to speed up the test. _ratAttrib.BeforeTest(null); _userAccount = Entity.Create <UserAccount>(); _userAccount.Name = "Test user " + Guid.NewGuid().ToString(); _userAccount.Save(); new AccessRuleFactory().AddAllowByQuery( _userAccount.As <Subject>(), Workflow.Workflow_Type.As <SecurableEntity>(), Permissions.Read.ToEnumerable(), TestQueries.WorkflowWithName("A").ToReport()); new AccessRuleFactory().AddAllowByQuery( _userAccount.As <Subject>(), Resource.Resource_Type.As <SecurableEntity>(), new EntityRef("core:read").ToEnumerable(), TestQueries.EntitiesWithName("Readable").ToReport()); new AccessRuleFactory().AddAllowByQuery( _userAccount.As <Subject>(), Resource.Resource_Type.As <SecurableEntity>(), new EntityRef("core:modify").ToEnumerable(), TestQueries.EntitiesWithName("Writable").ToReport()); new AccessRuleFactory().AddAllowByQuery( _userAccount.As <Subject>(), Resource.Resource_Type.As <SecurableEntity>(), new EntityRef("core:create").ToEnumerable(), TestQueries.EntitiesWithName("Creatable").ToReport()); new AccessRuleFactory().AddAllowByQuery( _userAccount.As <Subject>(), Resource.Resource_Type.As <SecurableEntity>(), new EntityRef("core:delete").ToEnumerable(), TestQueries.EntitiesWithName("Deletable").ToReport()); new AccessRuleFactory().AddAllowByQuery( _userAccount.As <Subject>(), Resource.Resource_Type.As <SecurableEntity>(), new EntityRef("core:read").ToEnumerable(), TestQueries.EntitiesWithName("Deletable").ToReport()); }
//[Ignore] // Cant seem to get this test working in the auto test environment - don't know why public void CheckWorkflowOwnerAndTriggererSet() { using (new WorkflowRunContext { RunTriggersInCurrentThread = true }) { var wfName = "test wf" + DateTime.Now; var owner = new UserAccount { Name = "TestOwner" + DateTime.Now }; owner.Save(); new AccessRuleFactory().AddAllowByQuery( owner.As <Subject>(), Workflow.Workflow_Type.As <SecurableEntity>(), Permissions.Read.ToEnumerable(), TestQueries.WorkflowWithName(wfName).ToReport()); var triggerer = new UserAccount { Name = "TestTriggerer" + DateTime.Now }; triggerer.Save(); new AccessRuleFactory().AddAllowByQuery( triggerer.As <Subject>(), UserAccount.UserAccount_Type.As <SecurableEntity>(), new EntityRef("core:read").ToEnumerable(), TestQueries.EntitiesWithName(owner.Name).ToReport()); new AccessRuleFactory().AddAllowByQuery( triggerer.As <Subject>(), Workflow.Workflow_Type.As <SecurableEntity>(), Permissions.Read.ToEnumerable(), TestQueries.WorkflowWithName(wfName).ToReport()); var currentContext = RequestContext.GetContext(); var wf = new Workflow { Name = wfName }; //var wfAs = wf.Cast<WfActivity>(); // why? wf .AddDefaultExitPoint() .AddOutput <ResourceArgument>("triggerman") .AddOutput <ResourceArgument>("owner") .AddAssignToVar("set out 1", "[Triggering User]", "triggerman") .AddAssignToVar("set out 2", "[Workflow Owner]", "owner") .AddLog("Log", "Owner: {{[Workflow Owner]}} Triggerer: {{[Triggering User]}}"); wf.SecurityOwner = owner; wf.Save(); var input = new Dictionary <string, object> { { "wfInInt", 10 } }; WorkflowRun run; using (CustomContext.SetContext(new IdentityInfo(triggerer.Id, owner.Name), currentContext.Tenant, currentContext.Culture)) { run = (RunWorkflow(wf, input)); } var outputs = run.GetOutput(); Assert.IsTrue(outputs.ContainsKey("owner"), "Owner was returned"); Assert.IsTrue(outputs.ContainsKey("triggerman"), "Triggerer was returned"); Assert.AreEqual(triggerer.Id, ((IEntity)outputs["triggerman"]).Id, "Ensure that the Triggering user is set to the id of the context."); Assert.AreEqual(owner.Id, ((IEntity)outputs["owner"]).Id, "The owner is set correctly."); } }