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()); } }
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; } }