示例#1
0
        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());
        }
示例#2
0
        //[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.");
            }
        }