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"]); }
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"]); }
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); }