public void RepositoryStart_DataProviderExtensions_OverrideDefault()
        {
            var dbProvider         = new InMemoryDataProvider();
            var securityDbProvider = new MemoryDataProvider(DatabaseStorage.CreateEmpty());
            var searchEngine       = new InMemorySearchEngine(GetInitialIndex());
            var accessProvider     = new DesktopAccessProvider();
            var emvrProvider       = new ElevatedModificationVisibilityRule();

            // switch this ON here for testing purposes (to check that repo start does not override it)
            SnTrace.Custom.Enabled = true;

            // switch this ON here for testing purposes (to check that repo start does not override it)
            SnTrace.Custom.Enabled = true;

            var repoBuilder = new RepositoryBuilder()
                              .UseAccessProvider(new DesktopAccessProvider())
                              .UseDataProvider(dbProvider)
                              .UseInitialData(GetInitialData())
                              .UseBlobMetaDataProvider(new InMemoryBlobStorageMetaDataProvider(dbProvider))
                              .UseBlobProviderSelector(new InMemoryBlobProviderSelector())
                              .UseAccessTokenDataProviderExtension(new TestAccessTokenDataProvider()) // ACTION: set test provider
                              .UseSecurityDataProvider(securityDbProvider)
                              .UseSearchEngine(searchEngine)
                              .UseAccessProvider(accessProvider)
                              .UseElevatedModificationVisibilityRuleProvider(emvrProvider)
                              .StartIndexingEngine(false)
                              .StartWorkflowEngine(false)
                              .UseTraceCategories("Test", "Web", "System");

            using (Repository.Start(repoBuilder))
            {
                Assert.AreEqual(typeof(TestAccessTokenDataProvider), DataStore.GetDataProviderExtension <IAccessTokenDataProviderExtension>().GetType());
            }
        }
Example #2
0
        /// <summary>
        /// Sets the elevated modification visibility rule provider.
        /// </summary>
        public RepositoryBuilder UseElevatedModificationVisibilityRuleProvider(ElevatedModificationVisibilityRule modificationVisibilityRuleProvider)
        {
            Configuration.Providers.Instance.ElevatedModificationVisibilityRuleProvider = modificationVisibilityRuleProvider;
            WriteLog("ElevatedModificationVisibilityRuleProvider", modificationVisibilityRuleProvider);

            return(this);
        }
        public void RepositoryStart_NamedProviders()
        {
            var dbProvider         = new InMemoryDataProvider();
            var securityDbProvider = new MemoryDataProvider(DatabaseStorage.CreateEmpty());
            var searchEngine       = new InMemorySearchEngine(GetInitialIndex());
            var accessProvider     = new DesktopAccessProvider();
            var emvrProvider       = new ElevatedModificationVisibilityRule();

            // switch this ON here for testing purposes (to check that repo start does not override it)
            SnTrace.Custom.Enabled = true;

            var repoBuilder = new RepositoryBuilder()
                              .UseAccessProvider(new DesktopAccessProvider())
                              .UseDataProvider(dbProvider)
                              .UseInitialData(GetInitialData())
                              .UseBlobMetaDataProvider(new InMemoryBlobStorageMetaDataProvider(dbProvider))
                              .UseBlobProviderSelector(new InMemoryBlobProviderSelector())
                              .AddBlobProvider(new InMemoryBlobProvider())
                              .UseSecurityDataProvider(securityDbProvider)
                              .UseSecurityMessageProvider(new DefaultMessageProvider(new MessageSenderManager()))
                              .UseSearchEngine(searchEngine)
                              .UseAccessProvider(accessProvider)
                              .UseElevatedModificationVisibilityRuleProvider(emvrProvider)
                              .StartIndexingEngine(false)
                              .StartWorkflowEngine(false)
                              .UseTraceCategories("Test", "Web", "System");

            using (Repository.Start(repoBuilder))
            {
                Assert.AreSame(dbProvider, Providers.Instance.DataStore.DataProvider);
                Assert.AreEqual(searchEngine, SearchManager.SearchEngine);
                Assert.AreEqual(accessProvider, AccessProvider.Current);
                Assert.AreEqual(emvrProvider, Providers.Instance.ElevatedModificationVisibilityRuleProvider);

                // Currently this does not work, because the property below re-creates the security
                // db provider from the prototype, so it cannot be ref equal with the original.
                // Assert.AreEqual(securityDbProvider, SecurityHandler.SecurityContext.DataProvider);
                Assert.AreEqual(securityDbProvider, Providers.Instance.SecurityDataProvider);

                // Check a few trace categories that were switched ON above.
                Assert.IsTrue(SnTrace.Custom.Enabled);
                Assert.IsTrue(SnTrace.Test.Enabled);
                Assert.IsTrue(SnTrace.Web.Enabled);
                Assert.IsTrue(SnTrace.System.Enabled);
                Assert.IsFalse(SnTrace.TaskManagement.Enabled);
                Assert.IsFalse(SnTrace.Workflow.Enabled);
            }
        }
        public void RepositoryStart_AuditEventWriter_Database()
        {
            var originalWriter = SnLog.AuditEventWriter;
            var auditWriter    = new DatabaseAuditEventWriter();

            var dbProvider         = new InMemoryDataProvider();
            var securityDbProvider = new MemoryDataProvider(DatabaseStorage.CreateEmpty());
            var searchEngine       = new InMemorySearchEngine(GetInitialIndex());
            var accessProvider     = new DesktopAccessProvider();
            var emvrProvider       = new ElevatedModificationVisibilityRule();

            try
            {
                // Clear the slot to ensure a real test.
                Providers.Instance.AuditEventWriter = null;

                var repoBuilder = new RepositoryBuilder()
                                  .UseAccessProvider(new DesktopAccessProvider())
                                  .UseDataProvider(dbProvider)
                                  .UseAuditEventWriter(auditWriter) // <-- The important line
                                  .UseInitialData(GetInitialData())
                                  .UseBlobMetaDataProvider(new InMemoryBlobStorageMetaDataProvider(dbProvider))
                                  .UseBlobProviderSelector(new InMemoryBlobProviderSelector())
                                  .AddBlobProvider(new InMemoryBlobProvider())
                                  .UseSecurityDataProvider(securityDbProvider)
                                  .UseSecurityMessageProvider(new DefaultMessageProvider(new MessageSenderManager()))
                                  .UseSearchEngine(searchEngine)
                                  .UseAccessProvider(accessProvider)
                                  .UseElevatedModificationVisibilityRuleProvider(emvrProvider)
                                  .StartIndexingEngine(false)
                                  .StartWorkflowEngine(false)
                                  .UseTraceCategories("Test", "Web", "System");

                using (Repository.Start(repoBuilder))
                {
                    Assert.AreSame(auditWriter, Providers.Instance.AuditEventWriter);
                    Assert.AreSame(auditWriter, SnLog.AuditEventWriter);
                }
            }
            finally
            {
                SnLog.AuditEventWriter = originalWriter;
            }
        }
        public void RepositoryStart_NullPopulator()
        {
            var dbProvider2 = new InMemoryDataProvider();

            Providers.Instance.DataProvider = dbProvider2;
            var securityDbProvider = new MemoryDataProvider(DatabaseStorage.CreateEmpty());
            var searchEngine       = new InMemorySearchEngine(GetInitialIndex());
            var accessProvider     = new DesktopAccessProvider();
            var emvrProvider       = new ElevatedModificationVisibilityRule();

            var repoBuilder = new RepositoryBuilder()
                              .UseAccessProvider(new DesktopAccessProvider())
                              .UseDataProvider(dbProvider2)
                              .UseInitialData(GetInitialData())
                              .UseBlobMetaDataProvider(new InMemoryBlobStorageMetaDataProvider(dbProvider2))
                              .UseBlobProviderSelector(new InMemoryBlobProviderSelector())
                              .AddBlobProvider(new InMemoryBlobProvider())
                              .UseSecurityDataProvider(securityDbProvider)
                              .UseSecurityMessageProvider(new DefaultMessageProvider(new MessageSenderManager()))
                              .UseSearchEngine(searchEngine)
                              .UseAccessProvider(accessProvider)
                              .UseElevatedModificationVisibilityRuleProvider(emvrProvider)
                              .StartIndexingEngine(false)
                              .StartWorkflowEngine(false)
                              .UseTraceCategories("Test", "Web", "System");

            var originalIsOuterSearchEngineEnabled = Indexing.IsOuterSearchEngineEnabled;

            Indexing.IsOuterSearchEngineEnabled = false;
            try
            {
                using (Repository.Start(repoBuilder))
                {
                    Assert.IsFalse(SearchManager.IsOuterEngineEnabled);
                    Assert.AreEqual(typeof(InternalSearchEngine), SearchManager.SearchEngine.GetType());
                    var populator = SearchManager.GetIndexPopulator();
                    Assert.AreEqual(typeof(NullPopulator), populator.GetType());
                }
            }
            finally
            {
                Indexing.IsOuterSearchEngineEnabled = originalIsOuterSearchEngineEnabled;
            }
        }
Example #6
0
 public static IRepositoryBuilder UseElevatedModificationVisibilityRuleProvider(this IRepositoryBuilder repositoryBuilder, ElevatedModificationVisibilityRule modificationVisibilityRuleProvider)
 {
     return(repositoryBuilder);
 }