/// <summary> /// Gets a dynamic implementation that simulates the exception response return a list of activity libraries. /// </summary> /// <returns>Dynamic implementation of type ActivityLibraryRepositoryService.</returns> public static ImplementationOfType GetActivityLibrariesExceptionResponseMock(Exception e) { ImplementationOfType impl = new ImplementationOfType(typeof(ActivityLibraryRepositoryService)); impl.Register(() => ActivityLibraryRepositoryService.GetActivityLibraries(Argument<ActivityLibraryDC>.Any, true)) .Execute(delegate { throw e; return null; }); return impl; }
/// <summary> /// Gets a dynamic implementation that simulates the success response return a list of activity libraries. /// </summary> /// <returns>Dynamic implementation of type ActivityLibraryRepositoryService.</returns> public static ImplementationOfType GetActivityLibrariesSuccessResponseMock(List<ActivityLibraryDC> list) { ImplementationOfType impl = new ImplementationOfType(typeof(ActivityLibraryRepositoryService)); impl.Register(() => ActivityLibraryRepositoryService.GetActivityLibraries(Argument<ActivityLibraryDC>.Any, true)) .Execute(delegate { return list; }); return impl; }
public void ActivityBusinessServiceGetActivityLibrariesWhichActivityLibraryReturnEmptyReply() { using (ImplementationOfType impl = new ImplementationOfType(typeof(ActivityRepositoryService))) { impl.Register(() => ActivityRepositoryService.GetActivitiesByActivityLibrary(Argument<GetLibraryAndActivitiesDC>.Any, false)) .Execute(delegate { return null; }); CWF.DataContracts.GetActivitiesByActivityLibraryNameAndVersionRequestDC request = CreateActivityLibraryGetRequest(); var reply = ActivityBusinessService.GetActivitiesByActivityLibrary(request, false); } }
public void ActivityBusinessServiceCheckActivityExistsWhichReturnEmptyReply() { using (ImplementationOfType impl = new ImplementationOfType(typeof(ActivityRepositoryService))) { impl.Register(() => ActivityRepositoryService.CheckActivityExists(Argument<StoreActivitiesDC>.Any)) .Execute(delegate { return new StatusReplyDC(); }); CWF.DataContracts.StoreActivitiesDC request = CreateStoreActivitiesDC(); var reply = ActivityBusinessService.CheckActivityExists(request); } }
/// <summary> /// Gets a dynamic implementation that simulates empty log settings configuration. /// </summary> /// <returns>Dynamic implementation of type LogSettingConfigSection for empty log setting.</returns> public static ImplementationOfType GetEmptyLogSettingConfigurationMock() { ImplementationOfType impl = new ImplementationOfType(typeof(LogSettingConfigSection)); impl.Register(typeof(LogSettingConfigSection).GetMethod(ConfigurationSectionGetSettingsMethod), null, null, null, RegistrationOptions.None, delegate { LogSettingConfigCollection collection = new LogSettingConfigCollection(); return collection; }); return impl; }
public void ActivityBusinessServiceCheckActivityExistsThrowDataAccessException() { int eventCode = EventCode.DatabaseEvent.Validation.ActivityLibraryNotFound; DataAccessException exception = new DataAccessException(eventCode); try { using (ImplementationOfType impl = new ImplementationOfType(typeof(ActivityRepositoryService))) { impl.Register(() => ActivityRepositoryService.CheckActivityExists(Argument<StoreActivitiesDC>.Any)) .Execute(delegate { throw exception; return null; }); CWF.DataContracts.StoreActivitiesDC request = CreateStoreActivitiesDC(); var reply = ActivityBusinessService.CheckActivityExists(request); } } catch (BusinessException e) { Assert.AreEqual(eventCode, e.ErrorCode); } }
/// <summary> /// Gets a dynamic implementation that simulates a valid log settings configuration. /// </summary> /// <returns>Dynamic implementation of type LogSettingConfigSection for valid log setting.</returns> public static ImplementationOfType GetValidLogSettingConfigurationMock() { ImplementationOfType impl = new ImplementationOfType(typeof(LogSettingConfigSection)); impl.Register(typeof(LogSettingConfigSection).GetMethod(ConfigurationSectionGetSettingsMethod), null, null, null, RegistrationOptions.None, delegate { LogSettingConfigCollection collection = new LogSettingConfigCollection(); collection[LogSettingKey.LogWriter] = new LogSettingConfigElement { Key = LogSettingKey.LogWriter, Value = "Microsoft.Support.Workflow.Service.Common.Logging.EventLogWriter,QueryService.Common" }; collection[LogSettingKey.LogName] = new LogSettingConfigElement { Key = LogSettingKey.LogName, Value = LogSettingDefaultValue.LogName }; collection[LogSettingKey.GetLogLevelKey("default")] = new LogSettingConfigElement { Key = "default", Value = "2" }; collection[LogSettingKey.GetLogLevelKey(EventSource.DatabaseError.ToString().ToLower())] = new LogSettingConfigElement { Key = LogSettingKey.GetLogLevelKey("default"), Value = "2" }; collection[LogSettingKey.GetLogLevelKey(EventSource.DataAccessLayerError.ToString().ToLower())] = new LogSettingConfigElement { Key = LogSettingKey.GetLogLevelKey(EventSource.DataAccessLayerError.ToString().ToLower()), Value = "2" }; collection[LogSettingKey.GetLogLevelKey(EventSource.BusinessLayerError.ToString().ToLower())] = new LogSettingConfigElement { Key = LogSettingKey.GetLogLevelKey(EventSource.BusinessLayerError.ToString().ToLower()), Value = "2" }; collection[LogSettingKey.GetLogLevelKey(EventSource.WebServiceLayerError.ToString().ToLower())] = new LogSettingConfigElement { Key = LogSettingKey.GetLogLevelKey(EventSource.WebServiceLayerError.ToString().ToLower()), Value = "2" }; collection[LogSettingKey.GetLogLevelKey(EventSource.LogWriterError.ToString().ToLower())] = new LogSettingConfigElement { Key = LogSettingKey.GetLogLevelKey(EventSource.LogWriterError.ToString().ToLower()), Value = "2" }; collection[LogSettingKey.GetLogLevelKey(EventSource.BusinessLayerValidation.ToString().ToLower())] = new LogSettingConfigElement { Key = LogSettingKey.GetLogLevelKey(EventSource.BusinessLayerValidation.ToString().ToLower()), Value = "-1" }; return collection; }); return impl; }
public void DoNotReturnExecutableIfNotRequestedWhenGetActivityLibrariesIsCalled() { using (ImplementationOfType impl = new ImplementationOfType(typeof(Database))) { // Simulate 10 items being returned by the database. int numberOfMatches = 10; DataTable table = CreateValidActivityLibraryResponseMock(numberOfMatches); DataReaderMock mockReader = new DataReaderMock(table); impl.Register<Database>(inst => inst.ExecuteReader(Argument<DbCommand>.Any)).Return(mockReader); CWF.DataContracts.ActivityLibraryDC request = CreateActivityLibraryGetRequest(); List<CWF.DataContracts.ActivityLibraryDC> reply = ActivityLibraryRepositoryService.GetActivityLibraries(request, false); Assert.IsNotNull(reply); Assert.AreEqual(numberOfMatches, reply.Count); for (int i = 0; i < numberOfMatches; i++) { Assert.AreEqual(table.Rows[i][DataFieldName.ActivityLibrary.AuthGroupName], reply[i].AuthGroupName); Assert.IsNull(reply[i].Executable); } } }
public void ReturnActivityLibraryReturnedByDatabaseWhenGetActivityLibrariesIsCalled() { using (ImplementationOfType impl = new ImplementationOfType(typeof(Database))) { DataTable table = CreateValidActivityLibraryResponseMock(1); DataReaderMock mockReader = new DataReaderMock(table); impl.Register<Database>(inst => inst.ExecuteReader(Argument<DbCommand>.Any)).Return(mockReader); CWF.DataContracts.ActivityLibraryDC request = CreateActivityLibraryGetRequest(); List<CWF.DataContracts.ActivityLibraryDC> reply = ActivityLibraryRepositoryService.GetActivityLibraries(request, true); Assert.IsNotNull(reply); Assert.AreEqual(1, reply.Count); Assert.AreEqual(table.Rows[0][DataFieldName.ActivityLibrary.AuthGroupName], reply[0].AuthGroupName); Assert.IsNotNull(reply[0].Executable); Assert.AreEqual(((Byte[])table.Rows[0][DataFieldName.ActivityLibrary.Executable]).Length, reply[0].Executable.Length); } }
public void ReturnEmptyItemsListIfDatabaseDoesNotReturnAnyItemsWhenGetActivityLibrariesIsCalled() { using (ImplementationOfType impl = new ImplementationOfType(typeof(Database))) { DataTable table = new DataTable(); DataReaderMock mockReader = new DataReaderMock(table); impl.Register<Database>(inst => inst.ExecuteReader(Argument<DbCommand>.Any)).Return(mockReader); CWF.DataContracts.ActivityLibraryDC request = CreateActivityLibraryGetRequest(); List<CWF.DataContracts.ActivityLibraryDC> reply = ActivityLibraryRepositoryService.GetActivityLibraries(request, true); Assert.IsNotNull(reply); Assert.AreEqual(0, reply.Count); } }
public void ReturnDatabaseExceptionWithMatchingErrorCodeReturnedWithSqlExceptionWhenGetActivityLibrariesIsCalled() { using (LogSettingConfigIsolator.GetValidLogSettingConfigurationMock()) // Simulate valid log setting config in order to let the LogWriterFactory work as expected. using (EventLogWriterIsolator.GetNoLoggingEventLogWriterMock()) // Mock event log writer not to write events. using (ImplementationOfType impl = new ImplementationOfType(typeof(Database))) { int databaseErrorCode = 50001; DataTable table = CreateValidActivityLibraryResponseMock(3); DataReaderMock mockReader = new DataReaderMock(table); impl.Register<Database>(inst => inst.ExecuteReader(Argument<DbCommand>.Any)).Execute( delegate { CauseSqlException(databaseErrorCode); return null; }); try { CWF.DataContracts.ActivityLibraryDC request = CreateActivityLibraryGetRequest(); List<CWF.DataContracts.ActivityLibraryDC> reply = ActivityLibraryRepositoryService.GetActivityLibraries(request, true); } catch (DataAccessException e) { Assert.IsTrue(e.ErrorCode > 0); } } }
public void ActivityBusinessServiceSearchActivitiesWhichReturnEmptyReply() { using (ImplementationOfType impl = new ImplementationOfType(typeof(ActivityRepositoryService))) { impl.Register(() => ActivityRepositoryService.SearchActivities(Argument<ActivitySearchRequestDC>.Any)) .Execute(delegate { return null; }); CWF.DataContracts.ActivitySearchRequestDC request = new ActivitySearchRequestDC(); var reply = ActivityBusinessService.SearchActivities(request); } }
public void ActivityBusinessServiceGetActivityLibrariesWhichActivityLibraryThrowDataAccessException() { int eventCode = EventCode.DatabaseEvent.Validation.ActivityLibraryNotFound; DataAccessException exception = new DataAccessException(eventCode); try { using (ImplementationOfType impl = new ImplementationOfType(typeof(ActivityRepositoryService))) { impl.Register(() => ActivityRepositoryService.GetActivitiesByActivityLibrary(Argument<GetLibraryAndActivitiesDC>.Any, false)) .Execute(delegate { throw exception; return null; }); CWF.DataContracts.GetActivitiesByActivityLibraryNameAndVersionRequestDC request = CreateActivityLibraryGetRequest(); var reply = ActivityBusinessService.GetActivitiesByActivityLibrary(request, false); } } catch (BusinessException e) { Assert.AreEqual(eventCode, e.ErrorCode); } }
public void TestFillInMissingStatuses() { var workflowName = "Test " + Guid.NewGuid().ToString(); var testWorkflow = CreateTestStoreActivity(workflowName, TestVersionString, false); var testDependencyName = "Test Dependency " + Guid.NewGuid().ToString(); //var testDependency = CreateTestStoreActivity(testDependencyName, TestVersionString, true); var request = new StoreLibraryAndActivitiesRequestDC(); request.StoreActivitiesList = new List<StoreActivitiesDC>(); request.StoreActivitiesList.Add(testWorkflow); request.StoreActivityLibraryDependenciesGroupsRequestDC = new StoreActivityLibraryDependenciesGroupsRequestDC(); request.StoreActivityLibraryDependenciesGroupsRequestDC.List = new List<StoreActivityLibraryDependenciesGroupsRequestDC>(); CreateTestDependencies(request.StoreActivityLibraryDependenciesGroupsRequestDC.List); var item = request.StoreActivityLibraryDependenciesGroupsRequestDC.List[1]; item.Status = String.Empty; item.Name = testDependencyName; item.Version = "1.0.0.0"; using (ImplementationOfType impl = new ImplementationOfType(typeof(Database))) { var table = new System.Data.DataTable(); DataReaderMock mockReader; table.Columns.Add("AuthGroupId", typeof(int)); table.Columns.Add("AuthGroupName", typeof(string)); table.Columns.Add("Category", typeof(Guid)); table.Columns.Add("CategoryId", typeof(int)); table.Columns.Add("Description", typeof(string)); table.Columns.Add("Executable", typeof(byte[])); table.Columns.Add("Guid", typeof(Guid)); table.Columns.Add("HasActivities", typeof(bool)); table.Columns.Add("Id", typeof(string)); table.Columns.Add("ImportedBy", typeof(string)); table.Columns.Add("MetaTags", typeof(string)); table.Columns.Add("Name", typeof(string)); table.Columns.Add("Status", typeof(int)); table.Columns.Add("StatusName", typeof(string)); table.Columns.Add("VersionNumber", typeof(string)); table.Columns.Add("FriendlyName", typeof(string)); table.Columns.Add("ReleaseNotes", typeof(string)); table.Rows.Add( 0, String.Empty, Guid.Empty, 0, String.Empty, DBNull.Value, Guid.Empty, false, 0, String.Empty, String.Empty, testDependencyName, 0, DefaultStatusCodeName, String.Empty, String.Empty, String.Empty ); mockReader = new DataReaderMock(table); impl.Register<Database>(inst => inst.ExecuteReader(Argument<DbCommand>.Any)).Return(mockReader); VersionHelper.GetMissingDependencyStates(request.StoreActivityLibraryDependenciesGroupsRequestDC.List); Assert.IsFalse(request .StoreActivityLibraryDependenciesGroupsRequestDC .List .Any(resultItem => string.IsNullOrEmpty(item.Status)), "All items should have their status property filled in."); } }
public void ReturnDatabaseExceptionIfSqlExceptionOccursWhenIsGetMarketplaceAssetDetailsCalled() { using (LogSettingConfigIsolator.GetValidLogSettingConfigurationMock()) // Simulate valid log setting config in order to let the LogWriterFactory work as expected. using (EventLogWriterIsolator.GetNoLoggingEventLogWriterMock()) // Mock event log writer not to write events. using (ImplementationOfType impl = new ImplementationOfType(typeof(Database))) { int databaseErrorCode = 50001; impl.Register<Database>(inst => inst.ExecuteReader(Argument<DbCommand>.Any)).Execute( delegate { SqlHelper.CauseSqlException(databaseErrorCode); return null; }); MarketplaceSearchDetail request = CreateGetMarketplaceAssetDetailsGetRequest(); MarketplaceAssetDetails reply = MarketplaceRepositoryService.GetMarketplaceAssetDetails(request); } }
/// <summary> /// Gets a dynamic implementation of event log writer that does not really perform any log writing. /// </summary> /// <returns>Dynamic implementation of type EventLogWriter.</returns> public static ImplementationOfType GetNoLoggingEventLogWriterMock() { ImplementationOfType impl = new ImplementationOfType(typeof(EventLogWriter)); impl.Register<EventLogWriter>(inst => inst.WriteEvent(Argument<string>.Any, Argument<int>.Any, Argument<EventLogEntryType>.Any, Argument<EventCategory>.Any, Argument<object[]>.Any)).Execute(delegate { return true; }); return impl; }
public void ActivityBusinessServiceGetActivityLibrariesWhichActivityLibraryReturnReply() { List<GetLibraryAndActivitiesDC> result = new List<GetLibraryAndActivitiesDC>(){ new GetLibraryAndActivitiesDC() { StoreActivitiesList=new List<StoreActivitiesDC>(), }, }; using (ImplementationOfType impl = new ImplementationOfType(typeof(ActivityRepositoryService))) { impl.Register(() => ActivityRepositoryService.GetActivitiesByActivityLibrary(Argument<GetLibraryAndActivitiesDC>.Any, false)) .Execute(delegate { return result; }); CWF.DataContracts.GetActivitiesByActivityLibraryNameAndVersionRequestDC request = CreateActivityLibraryGetRequest(); var reply = ActivityBusinessService.GetActivitiesByActivityLibrary(request, false); Assert.AreEqual(result[0].StoreActivitiesList, reply.List); } }