protected override void Test(IOrganizationService service)
            {
                var plugin = new TestPlugin(null, null);

                var serviceProvider = new ServiceProviderBuilder(
                    service,
                    new PluginExecutionContextBuilder()
                    .WithRegisteredEvent(20, "Delete", "account")
                    .WithPrimaryEntityId(Ids.Account)
                    .WithTarget(Ids.Account)
                    .Build(),
                    new DebugLogger()).Build();


                var executionContext = (IPluginExecutionContext)serviceProvider.GetService(typeof(IPluginExecutionContext));
                var target           = executionContext.InputParameters["Target"] as EntityReference;


                plugin.Execute(serviceProvider);


                serviceProvider = new ServiceProviderBuilder(
                    service,
                    new PluginExecutionContextBuilder()
                    .WithRegisteredEvent(40, "Delete", "account")
                    .WithPrimaryEntityId(Ids.Account)
                    .WithTarget(Ids.Account)
                    .Build(),
                    new DebugLogger()).Build();

                executionContext = (IPluginExecutionContext)serviceProvider.GetService(typeof(IPluginExecutionContext));

                plugin.Execute(serviceProvider);
            }
            protected override void Test(IOrganizationService service)
            {
                service = new OrganizationServiceBuilder(service)
                          .Build();

                var plugin = new Sample.FieldEncryptionPlugin(null, null);

                plugin.Container.Implement <ICache>().Using <Fakes.FakeCacheProvider>().WithOverwrite();
                plugin.Container.Implement <ISecretProviderFactory>().Using <Fakes.FakeSecretProviderFactory <Fakes.FakeSecretProvider> >().WithOverwrite();

                var testQry = new QueryExpressionBuilder <Contact>()
                              .Select("department")
                              .WhereAll(e => e
                                        .IsActive()
                                        .WhereAll(e1 => e1
                                                  .Attribute("fullname").Is(ConditionOperator.Like, "# " + TestData.DecryptedValue + "%")))
                              .Build();


                var executionContext = new PluginExecutionContextBuilder()
                                       .WithRegisteredEvent(20, "RetrieveMultiple", Contact.EntityLogicalName)
                                       .WithInputParameter("Query", testQry)
                                       .Build();

                var serviceProvider = new ServiceProviderBuilder(
                    service,
                    executionContext,
                    new DebugLogger()).Build();

                plugin.Execute(serviceProvider);

                var context = (IPluginExecutionContext)serviceProvider.GetService(typeof(IPluginExecutionContext));

                // get query and verify that it is modified as expected.
                var outQuery = context.InputParameters["Query"] as QueryExpression;

                var criteria = outQuery.Criteria;

                Assert.AreEqual(LogicalOperator.Or, criteria.FilterOperator);
                Assert.AreEqual(0, criteria.Conditions.Count);
                Assert.AreEqual(1, criteria.Filters.Count);

                // check sub filter
                criteria = criteria.Filters[0];

                Assert.AreEqual(LogicalOperator.And, criteria.FilterOperator);
                Assert.AreEqual(2, criteria.Conditions.Count);
                Assert.AreEqual(0, criteria.Filters.Count);

                Assert.AreEqual("department", criteria.Conditions[0].AttributeName);
                Assert.AreEqual(TestData.EncryptedValue, criteria.Conditions[0].Values[0]);

                Assert.AreEqual("statecode", criteria.Conditions[1].AttributeName);
                Assert.AreEqual(0, criteria.Conditions[1].Values[0]);
            }
            protected override void Test(IOrganizationService service)
            {
                var plugin = new TestPlugin(null, null);

                var serviceProvider = new ServiceProviderBuilder(
                    service,
                    new PluginExecutionContextBuilder()
                    .WithRegisteredEvent(20, "Create", "account")
                    .WithPrimaryEntityId(Ids.Account)
                    .WithTarget(Ids.Account)
                    .Build(),
                    new DebugLogger()).Build();


                var executionContext = (IPluginExecutionContext)serviceProvider.GetService(typeof(IPluginExecutionContext));
                var target           = executionContext.InputParameters["Target"] as Entity;

                Assert.AreEqual(2, target.Attributes.Count);

                plugin.Execute(serviceProvider);

                // input parameter was changed
                Assert.AreEqual(3, target.Attributes.Count);


                serviceProvider = new ServiceProviderBuilder(
                    service,
                    new PluginExecutionContextBuilder()
                    .WithRegisteredEvent(40, "Create", "account")
                    .WithPrimaryEntityId(Ids.Account)
                    .WithTarget(Ids.Account)
                    .WithOutputParameter("id", default(Guid))
                    .Build(),
                    new DebugLogger()).Build();

                executionContext = (IPluginExecutionContext)serviceProvider.GetService(typeof(IPluginExecutionContext));

                plugin.Execute(serviceProvider);

                // output parameter was changed.
                Assert.AreNotEqual(default(Guid), (Guid)executionContext.OutputParameters["id"]);
            }
Exemple #4
0
            protected override void Test(IOrganizationService service)
            {
                service = new OrganizationServiceBuilder(service)
                          .Build();

                var plugin = new Sample.FieldEncryptionPlugin(null, null);

                plugin.Container.Implement <ICache>().Using <Fakes.FakeCacheProvider>().WithOverwrite();
                plugin.Container.Implement <ISecretProviderFactory>().Using <Fakes.FakeSecretProviderFactory <Fakes.FakeSecretProvider> >().WithOverwrite();


                var target = new Contact()
                {
                    Id         = ExistingIds.Contact.EntityId,
                    Department = TestData.EncryptedValue
                };

                var executionContext = new PluginExecutionContextBuilder()
                                       .WithRegisteredEvent(20, "Retrieve", Contact.EntityLogicalName)
                                       .WithInputParameter("Target", target.ToEntityReference())
                                       .WithInputParameter("ColumnSet", new ColumnSet("department"))
                                       .WithOutputParameter("Entity", target)
                                       .Build();

                var serviceProvider = new ServiceProviderBuilder(
                    service,
                    executionContext,
                    new DebugLogger()).Build();

                plugin.Execute(serviceProvider);

                var context = (IPluginExecutionContext)serviceProvider.GetService(typeof(IPluginExecutionContext));


                var maskingInstructions = context.SharedVariables["CCLLC.EncryptedFieldService.DecryptColumns"] as Dictionary <string, EncryptedFieldService.MaskingInstruction>;

                Assert.AreEqual(1, maskingInstructions.Count);
                Assert.IsTrue(maskingInstructions.ContainsKey("department"));
                Assert.AreEqual(EncryptedFieldService.MaskingInstruction.Unmask, maskingInstructions["department"]);
            }
Exemple #5
0
        public void ServiceProviderBuilder_WithContext_GivenContext_Should_ReturnClonedContext()
        {
            //
            // Arrange
            //
            var context = new FakePluginExecutionContext();

            context.SharedVariables.Add("TEST", 1);
            var provider = new ServiceProviderBuilder(null, null).
                           WithContext(context).Build();

            //
            // Act
            //
            var providerContext = (IPluginExecutionContext)provider.GetService(typeof(IPluginExecutionContext));

            //
            // Assert
            //
            Assert.IsFalse(ReferenceEquals(providerContext, context), "The Context Retrieved should have been the context set");
            Assert.AreEqual(providerContext.GetFirstSharedVariable <int>("TEST"), 1);
        }