public static void ClassCleanup() { PrimaryBlob primaryBlob; CollectingBlob collectingBlob; // DI { TestDiProviderBuilder builder = new TestDiProviderBuilder(); builder.ServiceCollection.AddTransient <CollectingBlob>(); builder.ServiceCollection.AddSingleton <ITimeProvider>(UnitTestHelper.CreateTimeProvider(new DateTime(2030, 1, 1))); ServiceProvider provider = builder.Build(); primaryBlob = provider.GetService <PrimaryBlob>(); collectingBlob = provider.GetService <CollectingBlob>(); } { var container1 = primaryBlob.Client.GetContainerReference(TargetContainerName1); container1.DeleteIfExistsAsync().Wait(); var container2 = primaryBlob.Client.GetContainerReference(TargetContainerName2); container2.DeleteIfExistsAsync().Wait(); } { var container1 = collectingBlob.Client.GetContainerReference(TargetContainerName1); container1.DeleteIfExistsAsync().Wait(); var container2 = collectingBlob.Client.GetContainerReference(TargetContainerName2); container2.DeleteIfExistsAsync().Wait(); } }
/// <summary> /// DIを実行する /// </summary> /// <param name="appSettings">アプリケーション設定を上書きする場合は指定する</param> /// <param name="testLogs">ログの格納先</param> /// <param name="testMails">送信したメール情報を格納するリスト</param> /// <param name="mockResponseCode">SendMailメソッドが返却するHTTPステータスコード</param> /// <param name="mockResponseException">SendMailメソッドが返却するException</param> private void DependencyInjection(Dictionary <string, string> appSettings = null, List <TestLog> testLogs = null, List <MailInfo> testMails = null, HttpStatusCode mockResponseCode = HttpStatusCode.Accepted, Exception mockResponseException = null) { var builder = new TestDiProviderBuilder <OperationAppSettings>(FunctionsHostBuilderExtend.AddUtility); builder.ServiceCollection.AddTransient <MailSenderController>(); builder.ServiceCollection.AddTransient <FailureBlob>(); builder.AddConfigures(appSettings); Mock <DateTimeProvider> timeProviderMock = new Mock <DateTimeProvider>(); timeProviderMock.SetupGet(tp => tp.UtcNow).Returns(TestTime); builder.ServiceCollection.AddSingleton <ITimeProvider>(timeProviderMock.Object); if (testLogs != null) { builder.ServiceCollection.AddSingleton <ILogger <MailSenderService> >(new TestLogger <MailSenderService>(testLogs)); } if (testMails != null) { builder.ServiceCollection.AddTransient <IMailRepository>(x => new TestMailRepository(testMails, mockResponseCode, mockResponseException)); } ServiceProvider provider = builder.Build(); failureBlob = provider.GetService <FailureBlob>(); settings = provider.GetService <AppSettings>() as OperationAppSettings; target = provider.GetService <MailSenderController>(); }
/// <summary> /// DIを実行する /// </summary> /// <param name="appSettings">アプリケーション設定を上書きする場合は指定する</param> /// <param name="testLogs">ログの格納先</param> /// <param name="exceptionType">DbCleanerServiceのモックに例外をスローさせる場合そのタイプを指定する。DbCleanerServiceのモックを使用しない場合はnullを指定する</param> private void DependencyInjection(Dictionary <string, string> appSettings = null, List <TestLog> testLogs = null, Type exceptionType = null) { var builder = new TestDiProviderBuilder <OperationAppSettings>(FunctionsHostBuilderExtend.AddUtility); builder.ServiceCollection.AddTransient <DbCleanController>(); if (exceptionType != null) { Exception exception = Activator.CreateInstance(exceptionType) as Exception; builder.ServiceCollection.AddTransient <Rms.Server.Core.Service.Services.ICleanDbService>(x => new ErrorCleanDbService(exception)); } builder.AddConfigures(appSettings); Mock <DateTimeProvider> timeProviderMock = new Mock <DateTimeProvider>(); timeProviderMock.SetupGet(tp => tp.UtcNow).Returns(TestTime); builder.ServiceCollection.AddSingleton <ITimeProvider>(timeProviderMock.Object); if (testLogs != null) { builder.ServiceCollection.AddSingleton <ILogger <CleanDbService> >(new TestLogger <CleanDbService>(testLogs)); } ServiceProvider provider = builder.Build(); settings = provider.GetService <OperationAppSettings>() as OperationAppSettings; target = provider.GetService <DbCleanController>(); }
public void CreateParameterInValidParmTest( long?deliveryFileSid, string name, bool isNotNullStartDateTime, bool isNotNullDeliveryDestinations) { // Target Create var builder = new TestDiProviderBuilder(); builder.ServiceCollection.AddTransient <DeliveryGroupsController>(); var controller = builder.Build().GetService <DeliveryGroupsController>(); // 配信グループデータ作成パラメータ作成 var createActual = new DeliveryGroupAddRequestDto() { DeliveryFileSid = deliveryFileSid, // DeliveryGroupStatusSid Name = name, StartDatetime = isNotNullStartDateTime ? (DateTime?)new DateTime(2099, 12, 31) : null, // DownloadDelayTime DeliveryDestinations = isNotNullDeliveryDestinations ? new DeliveryResultAddRequestDto[] { } : null }; // 制約違反の場合はBadRequestが返ることを確認する var createResponse = controller.PostDeliveryGroup(createActual, UnitTestHelper.CreateLogger()); Assert.IsInstanceOfType(createResponse, typeof(BadRequestObjectResult)); }
/// <summary> /// DIを実行する /// </summary> /// <param name="utcNow">TimeProviderに渡す日時</param> /// <param name="appSettings">アプリケーション設定を上書きする場合は指定する</param> /// <param name="isSeriviceError">サービスで例外を強制的に発生させる場合はtrueを指定する</param> private void DependencyInjection(DateTime utcNow, Dictionary <string, string> appSettings = null, bool isSeriviceError = false) { // Repository生成 TestDiProviderBuilder builder = new TestDiProviderBuilder(); builder.ServiceCollection.AddTransient <DevicesController>(); if (isSeriviceError) { // Serviceの各メソッドで例外を発生させるクラスに置き換える builder.ServiceCollection.AddTransient <IDeviceService, TestDeviceService>(); } builder.ServiceCollection.AddTransient <DeliveringBlob>(); builder.ServiceCollection.AddSingleton <myUtility.ITimeProvider>(UnitTestHelper.CreateTimeProvider(utcNow)); builder.AddConfigures(appSettings); _serviceLogs = new List <TestLog>(); _serviceLogger = new TestLogger <DeviceService>(_serviceLogs); builder.ServiceCollection.AddSingleton <ILogger <DeviceService> >(_serviceLogger); // DI後したクラスを作成する ServiceProvider provider = builder.Build(); _controller = provider.GetService <DevicesController>(); _deliveringBlob = provider.GetService <DeliveringBlob>(); _appSettings = provider.GetService <myUtility.AppSettings>(); }
public async Task PostDeviceRemote_ExceptionThrown_Returns500Error() { // Target Create var builder = new TestDiProviderBuilder(); builder.ServiceCollection.AddTransient <DevicesController>(); // Mock var mockReturnSucceed = new Mock <IDeviceService>(); mockReturnSucceed.Setup(x => x.RequestRemoteAsync(It.IsAny <RequestRemote>())) .ThrowsAsync(new System.Exception()); builder.ServiceCollection.AddTransient <IDeviceService>(_ => mockReturnSucceed.Object); var controller = builder.Build().GetService <DevicesController>(); var dviceId = 100; // 配信グループデータ更新パラメータ作成 var validDto = new DeviceRemoteRequestDto() { SessionCode = "100" }; var response = await controller.PostDeviceRemoteAsync( validDto, dviceId, UnitTestHelper.CreateLogger()); Assert.IsInstanceOfType(response, typeof(StatusCodeResult)); Assert.AreEqual(StatusCodes.Status500InternalServerError, (response as StatusCodeResult).StatusCode); }
public void NoChangeInRepositoryIfNoSettings() { // 設定値が空 var diBuilder = new TestDiProviderBuilder(); diBuilder.ServiceCollection.AddTransient <ITimeProvider>(x => UnitTestHelper.CreateTimeProvider(new DateTime(2020, 3, 1))); diBuilder.ServiceCollection.AddSingleton <IPrimaryRepository, PrimaryRepositoryMock>(); diBuilder.ServiceCollection.AddSingleton <IDtDeviceFileRepository, DtDeviceFileRepositoryMock>(); var provider = diBuilder.Build(); // テスト対象 var target = provider.GetService <ICleanBlobService>(); target.Clean(); // 結果確認のため、状態を持つリポジトリを取得する。このために上記の設定でシングルトンにしている。 var primaryRepositoryMock = provider.GetService <IPrimaryRepository>() as PrimaryRepositoryMock; var deviceFileRepositoryMock = provider.GetService <IDtDeviceFileRepository>() as DtDeviceFileRepositoryMock; // Delete が特に変更ないことを確認。 var list = PrimaryRepositoryMock.GetDefaultList(); Assert.AreEqual( PrimaryRepositoryMock.GetDefaultList().ToStringJson(), primaryRepositoryMock.ArchiveFiles.ToStringJson()); Assert.AreEqual( DtDeviceFileRepositoryMock.GetDefaultList().ToStringJson(), deviceFileRepositoryMock.files.ToStringJson()); }
public async Task PostDeviceRemote_Success_ReturnsSuccess() { // Target Create var builder = new TestDiProviderBuilder(); builder.ServiceCollection.AddTransient <DevicesController>(); // Mock var mockReturnSucceed = new Mock <IDeviceService>(); mockReturnSucceed.Setup(x => x.RequestRemoteAsync(It.IsAny <RequestRemote>())) .ReturnsAsync(new Result(ResultCode.Succeed)); builder.ServiceCollection.AddTransient <IDeviceService>(_ => mockReturnSucceed.Object); var controller = builder.Build().GetService <DevicesController>(); var dviceId = 100; // 配信グループデータ更新パラメータ作成 var validDto = new DeviceRemoteRequestDto() { SessionCode = "100" }; var updateResponse = await controller.PostDeviceRemoteAsync( validDto, dviceId, UnitTestHelper.CreateLogger()); Assert.IsInstanceOfType(updateResponse, typeof(OkObjectResult)); }
public void UpdateParameterInValidParmTest( long?deliveryGroupStatusSid, string name, bool isNotNullStartDateTime, long?rowVersion) { // Target Create var builder = new TestDiProviderBuilder(); builder.ServiceCollection.AddTransient <DeliveryGroupsController>(); var controller = builder.Build().GetService <DeliveryGroupsController>(); // 配信グループデータ更新パラメータ作成 var updateActual = new DeliveryGroupUpdateRequestDto() { Name = name, StartDatetime = isNotNullStartDateTime ? (DateTime?)new DateTime(2050, 6, 1) : null, // DownloadDelayTime RowVersion = rowVersion }; // 制約違反の場合はBadRequestが返ることを確認する var updateResponse = controller.PutDeliveryGroup(updateActual, 1, UnitTestHelper.CreateLogger()); Assert.IsInstanceOfType(updateResponse, typeof(BadRequestObjectResult)); }
public void Onepass() { // 準備 var diBuilder = new TestDiProviderBuilder(); diBuilder.AddConfigure("BlobCleanTarget_container_filepath", "30"); // init // DBにファイルパス、データを追加 // コンテナがなければ作成 // Blobにそれと同じファイルを追加 var file = new ArchiveFile() { ContainerName = "", FilePath = "" }; // プロバイダ生成 var provider = diBuilder.Build(); // ■テストの本筋 var actual = provider.GetService <CleanBlobService>(); actual.Clean(); // 削除対象がGetできばOK // 非削除対象がGetできなければNG // 後始末 }
public async Task RequestRemoteAsync_SendSuccess_ReturnsSucceed() { // 以下の確認をしたい。 // ・DBから取得したエッジIDに対して処理を行う。 // ・設定から取得したメッセージを送る。 // ・引数セッションコードをその中に含む // 期待する結果 Guid expectedEdgeId = Guid.NewGuid(); string expectedSessionCode = "525215"; string expectedRemoteParameter = "isl.exe --session-code {0}."; string expectedMessage = JsonConvert.SerializeObject( new RequestRemoteMessage( expectedRemoteParameter, new RequestRemote() { SessionCode = expectedSessionCode })); var GotDevice = new DtDevice() { EdgeId = expectedEdgeId }; // 渡された値 Guid actualEdgeId = Guid.Empty; string actualMessage = string.Empty; // Target Create TestDiProviderBuilder builder = new TestDiProviderBuilder() .AddConfigure("RemoteParameter", expectedRemoteParameter); // Mock : デバイス取得に成功 SetMock_ReadDevice_Returns(GotDevice, builder); // Mock : メッセージ送信に成功 var mockOfRequestDevice = new Mock <IRequestDeviceRepository>(); mockOfRequestDevice .Setup(x => x.SendMessageAsync(It.IsAny <DeviceConnectionInfo>(), It.IsAny <string>())) .Callback <DeviceConnectionInfo, string>((info, message) => { // 引数が想定された内容で渡されたことを確認する。 actualEdgeId = info.EdgeId; actualMessage = message; }); builder.ServiceCollection.AddTransient(_ => mockOfRequestDevice.Object); var service = builder.Build().GetService <IDeviceService>(); var request = new RequestRemote() { SessionCode = expectedSessionCode }; var result = await service.RequestRemoteAsync(request); Assert.AreEqual(ResultCode.Succeed, result.ResultCode); Assert.AreEqual(expectedEdgeId, actualEdgeId); Assert.AreEqual(expectedMessage, actualMessage); }
private static void SetMock_SendMessage_Thrown(Exception throwException, TestDiProviderBuilder builder) { var mockOfRequestDevice = new Mock <IRequestDeviceRepository>(); mockOfRequestDevice.Setup(x => x.SendMessageAsync(It.IsAny <DeviceConnectionInfo>(), It.IsAny <string>())) .Throws(throwException); builder.ServiceCollection.AddTransient(_ => mockOfRequestDevice.Object); }
private static void SetMock_SendMessage_Returns(bool result, TestDiProviderBuilder builder) { var mockOfRequestDevice = new Mock <IRequestDeviceRepository>(); mockOfRequestDevice.Setup(x => x.SendMessageAsync(It.IsAny <DeviceConnectionInfo>(), It.IsAny <string>())); // .ReturnsAsync(result); builder.ServiceCollection.AddTransient(_ => mockOfRequestDevice.Object); }
private static void SetMock_ReadDevice_Thrown(Exception ex, TestDiProviderBuilder builder) { var mock = new Mock <IDtDeviceRepository>(); mock.Setup(x => x.ReadDtDevice(It.IsAny <long>())) .Throws(ex); builder.ServiceCollection.AddTransient <IDtDeviceRepository>(_ => mock.Object); }
private static void SetMock_ReadDevice_Returns(DtDevice result, TestDiProviderBuilder builder) { var mock = new Mock <IDtDeviceRepository>(); mock.Setup(x => x.ReadDtDevice(It.IsAny <long>())) .Returns(result); builder.ServiceCollection.AddTransient <IDtDeviceRepository>(_ => mock.Object); }
/// <summary> /// DIを実行する /// </summary> /// <param name="utcNow">TimeProviderに渡す日時</param> /// <param name="serviceLogger">Service用のロガー</param> /// <param name="configures">AppSettingsに追加する項目</param> private void DependencyInjection(DateTime utcNow, TestLogger <CleanBlobService> serviceLogger, Dictionary <string, string> configures = null) { TestDiProviderBuilder builder = new TestDiProviderBuilder(); // Blob builder.ServiceCollection.AddTransient <PrimaryBlob>(); // Polly builder.ServiceCollection.AddSingleton(s => new BlobPolly(s.GetService <AppSettings>())); builder.ServiceCollection.AddSingleton(s => new DBPolly(s.GetService <AppSettings>())); // Logger builder.ServiceCollection.AddSingleton <ILogger <CleanBlobService> >(serviceLogger); // Controller生成 builder.ServiceCollection.AddTransient <BlobCleanController>(); // Repository生成 builder.ServiceCollection.AddTransient <IDtDeviceFileRepository, DtDeviceFileRepositoryMock>(); builder.ServiceCollection.AddTransient <IPrimaryRepository, PrimaryBlobRepositoryMock>(); builder.ServiceCollection.AddSingleton <ITimeProvider>(UnitTestHelper.CreateTimeProvider(utcNow)); // 追加の設定項目 if (configures != null) { builder.AddConfigures(configures); } _provider = builder.Build(); // AppSettings _appSettings = _provider.GetService <AppSettings>(); // DateTimeProvider _dateTimeProvider = _provider.GetService <ITimeProvider>() as DateTimeProvider; // PrimaryBlob _primaryBlob = _provider.GetService <PrimaryBlob>(); // BlobPolly _blobPolly = _provider.GetService <BlobPolly>(); // DBPolly _dBPolly = _provider.GetService <DBPolly>(); // BlobCleanController _controller = _provider.GetService <BlobCleanController>(); // DtDeviceFileRepository _dtDeviceFileRepositoryMock = _provider.GetService <IDtDeviceFileRepository>() as DtDeviceFileRepositoryMock; // PrimaryBlobRepository _primaryBlobRepositoryMock = _provider.GetService <IPrimaryRepository>() as PrimaryBlobRepositoryMock; }
// [DynamicData("aa",DynamicDataSourceType.Method)] public async Task Index_Success_CopyedFile() { // 前提条件 // ・ファイルがCollectingBlob上に存在する。 // あと条件 // ・ファイルがPrimaryBlob上にコピーされる。 // TestInitialize DbTestHelper.DeleteAll(); var dataOnDb = DbTestHelper.CreateMasterTables(); dataOnDb = DbTestHelper.CreateDevices(dataOnDb); var owner = dataOnDb.Get <DtDevice>().First().EdgeId.ToString(); // 設定値が空 var diBuilder = new TestDiProviderBuilder(); diBuilder.ServiceCollection.AddTransient <ITimeProvider>(x => UnitTestHelper.CreateTimeProvider(new DateTime(2020, 3, 1))); var provider = diBuilder.Build(); // テストデータ作成 // 準備として、Primary,Collectingのファイルを全部消す。 var settings = provider.GetService <AppSettings>(); await DeleteContainerOnBlob(settings.CollectingBlobConnectionString, "collect"); await DeleteContainerOnBlob(settings.CollectingBlobConnectionString, "unknown"); await DeleteContainerOnBlob(settings.PrimaryBlobConnectionString, "log"); await DeleteContainerOnBlob(settings.PrimaryBlobConnectionString, "error"); await DeleteContainerOnBlob(settings.PrimaryBlobConnectionString, "device"); await CreateTestFilesOnCollectingBlob(settings, owner); // テスト対象 var target = provider.GetService <IIndexBlobService>(); target.Index(); // 結果確認 //var _account = CloudStorageAccount.Parse(settings.CoreStorageCollectingConnectionString); //var client = _account.CreateCloudBlobClient(); //var container = client.GetContainerReference(settings.CoreStorageCollectingCollectContainerName); //var blob1 = container.GetBlockBlobReference(filePath); // CollectingBlobにファイルがないことを確認。 // PrimaryBlobにそのファイルがあることを確認。 // DBにファイルがあることを確認。 }
public static void ClassInit(TestContext context) { // 関連DBデータを全削除 DbTestHelper.DeleteAllReseed(); // Repository生成 TestDiProviderBuilder builder = new TestDiProviderBuilder(); builder.ServiceCollection.AddTransient <DtDeliveryResultRepository>(); ServiceProvider provider = builder.Build(); _deliveryResultRepository = provider.GetService <DtDeliveryResultRepository>(); }
public void Update403ErrorIfStatusIsNotStarted() { // DbSetup DbTestHelper.DeleteAll(); var list = DbTestHelper.CreateMasterTables(); list = DbTestHelper.CreateDeliveries(list); list = DbTestHelper.CreateDevices(list); // Target Create var builder = new TestDiProviderBuilder(); builder.ServiceCollection.AddTransient <DeliveryGroupsController>(); var controller = builder.Build().GetService <DeliveryGroupsController>(); // 配信グループデータを作成し、SIDを読み込む(作成・読み込み結果は別テストで判定するためここでは省略) var statusStarted = new DeliveryGroupAddRequestDto() { DeliveryFileSid = list.GetDtDeliveryFileSid(), // これがNotStartではないのが本テストのポイント。 // HACK: この // DeliveryGroupStatusSid = list.GetMtDeliveryGroupStatusSid( "started" ), Name = "UnitTest", StartDatetime = new DateTime(2099, 12, 31), // DownloadDelayTime DeliveryDestinations = new DeliveryResultAddRequestDto[] { } }; var createResponse = controller.PostDeliveryGroup(statusStarted, UnitTestHelper.CreateLogger()) as OkObjectResult; var createResponseValue = createResponse.Value as DeliveryGroupResponseDto; // 更新処理 var updateActual = new DeliveryGroupUpdateRequestDto() { Name = "updateExpectedName", StartDatetime = new DateTime(2050, 6, 1), // DownloadDelayTime RowVersion = createResponseValue.RowVersion }; var actual = controller.PutDeliveryGroup(updateActual, createResponseValue.Sid, UnitTestHelper.CreateLogger()); // 403が返るかチェック Assert.IsInstanceOfType(actual, typeof(StatusCodeResult)); var statucCodeResult = actual as StatusCodeResult; Assert.AreEqual(StatusCodes.Status403Forbidden, statucCodeResult.StatusCode); }
public async Task RequestRemoteAsync_SendSuccess_ReturnsSucceed() { // 以下の確認をしたい。 // ・DBから取得したエッジIDに対して処理を行う。 // ・設定から取得したメッセージを送る。 // ・引数セッションコードをその中に含む var builder = new TestDiProviderBuilder(); IDispatchService testTarget = builder.Build().GetService <IDispatchService>(); // testTarget.StoreDXABillingLog(); ////HACK:下記はWarning除け用の仮コードです。 Guid guid = Guid.NewGuid(); DateTime eventTime = default(DateTime); await testTarget.StoreDeviceConnected(guid, eventTime); }
public async Task RequestRemoteAsync_NotExistDevice_ReturnsNotFound() { DtDevice NotFoundResult = null; // Target Create var builder = new TestDiProviderBuilder(); // Mock : デバイス取得失敗 SetMock_ReadDevice_Returns(NotFoundResult, builder); var service = builder.Build().GetService <IDeviceService>(); var result = await service.RequestRemoteAsync(new RequestRemote()); Assert.AreEqual(ResultCode.NotFound, result.ResultCode); }
public void ExceptionTest( bool IsFailed_CreateDtDeviceFile, bool IsFailed_GetFileDatasBelowFilePath, bool IsFailed_DeleteDtDeviceFile, bool IsThrowEx_CreateDtDeviceFile, bool IsThrowEx_GetFileDatasBelowFilePath, bool IsThrowEx_DeleteDtDeviceFile) { // 設定値 var diBuilder = new TestDiProviderBuilder(); diBuilder.AddConfigure("BlobCleanTarget_container_path/folder1", "1"); // DI設定 diBuilder.ServiceCollection.AddTransient <ITimeProvider>(x => UnitTestHelper.CreateTimeProvider(new DateTime(2020, 3, 1))); var primaryRepository = new PrimaryRepositoryMock(); diBuilder.ServiceCollection.AddSingleton <IPrimaryRepository>(x => primaryRepository); // 失敗設定する var dtDeviceFileRepository = new DtDeviceFileRepositoryMock() .FailedIfCallCreateDtDeviceFile(IsFailed_CreateDtDeviceFile) .FailedIfCallDeleteDtDeviceFile(IsFailed_DeleteDtDeviceFile) .FailedIfCallGetFileDatasBelowFilePath(IsFailed_GetFileDatasBelowFilePath) .ThrowIfCallCreateDtDeviceFile(IsThrowEx_CreateDtDeviceFile) .ThrowIfCallDeleteDtDeviceFile(IsThrowEx_DeleteDtDeviceFile) .ThrowIfCallGetFileDatasBelowFilePath(IsThrowEx_GetFileDatasBelowFilePath); diBuilder.ServiceCollection.AddSingleton <IDtDeviceFileRepository>(x => dtDeviceFileRepository); var provider = diBuilder.Build(); // テスト対象実行 var target = provider.GetService <ICleanBlobService>(); target.Clean(); var expected = GetExpected("CreateAllData"); Assert.AreEqual( expected.Item1.ToStringJson(), dtDeviceFileRepository.files.ToStringJson()); Assert.AreEqual( expected.Item2.ToStringJson(), primaryRepository.ArchiveFiles.ToStringJson()); }
private DpsPolly CreateTestTarget(int?retry = null, int?delaySeconds = null) { // DI設定 var builder = new TestDiProviderBuilder(); if (null != retry) { builder.AddConfigure("DpsMaxRetryAttempts", retry.ToString()); } if (null != delaySeconds) { builder.AddConfigure("DpsDelayDeltaSeconds", delaySeconds.ToString()); } var provider = builder.Build(); return(provider.GetService <DpsPolly>()); }
public async Task RequestRemoteAsync_ThrowExceptionAtReadDevice_ThrownException() { var exception = new Exception(); // Target Create TestDiProviderBuilder builder = new TestDiProviderBuilder() .AddConfigure("RemoteParameter", "isl.exe --session-code {0}."); // Mock : デバイス取得時に例外 SetMock_ReadDevice_Thrown(exception, builder); var service = builder.Build().GetService <IDeviceService>(); await service.RequestRemoteAsync(new RequestRemote()); Assert.Fail(); }
public static void ClassCleanup() { FailureBlob failureBlob; // DI { TestDiProviderBuilder builder = new TestDiProviderBuilder(); builder.ServiceCollection.AddTransient <FailureBlob>(); builder.ServiceCollection.AddSingleton <ITimeProvider>(UnitTestHelper.CreateTimeProvider(new DateTime(2030, 1, 1))); ServiceProvider provider = builder.Build(); failureBlob = provider.GetService <FailureBlob>(); } var container1 = failureBlob.Client.GetContainerReference(TargetContainerName1); container1.DeleteIfExistsAsync().Wait(); }
public async Task RequestRemoteAsync_NotExistRemoteParamAtAppSettings_ReturnsServerError() { var GotDevice = new DtDevice(); // Target Create TestDiProviderBuilder builder = new TestDiProviderBuilder(); //.AddConfigure("RemoteParameter", "isl.exe --session-code {0}."); // Mock : デバイス取得に成功 SetMock_ReadDevice_Returns(GotDevice, builder); var service = builder.Build().GetService <IDeviceService>(); var result = await service.RequestRemoteAsync(new RequestRemote()); Assert.AreEqual(ResultCode.ServerEerror, result.ResultCode); }
public void CreateParameterInValidParmTest( long?deliveryFileTypeSid, string filePath, string equipmentModel, string installType, string version, string installableVersion, string description, string informationId) { // Target Create var builder = new TestDiProviderBuilder(); builder.ServiceCollection.AddTransient <DeliveryFilesController>(); var controller = builder.Build().GetService <DeliveryFilesController>(); // 配信グループデータ作成パラメータ作成 var createActual = new DeliveryFileAddRequestDto() { DeliveryFileType = deliveryFileTypeSid == null ? null : new DeliveryFileTypeMasterDto() { DeliveryFileTypeSid = deliveryFileTypeSid, DeliveryFileTypeCode = "tekitou" }, FilePath = filePath, // HACK: 本当はTypeによって要不要が異なるので、その観点でテストを分けるべき。 // EquipmentModels = new List<MtEquipmentModel>(){ // HACK: 本当はTypeによって要不要が異なるので、その観点でテストを分けるべき。 // InstallType = installType, Version = version, InstallableVersion = installableVersion, Description = description, InformationId = informationId }; // 制約違反の場合はBadRequestが返ることを確認する var createResponse = controller.PostDeliveryFile(createActual, UnitTestHelper.CreateLogger()); Assert.IsInstanceOfType(createResponse, typeof(BadRequestObjectResult)); }
/// <summary> /// DIを実行する /// </summary> /// <param name="appSettings">アプリケーション設定を上書きする場合は指定する</param> /// <param name="testLogs">ログの格納先</param> /// <param name="exceptionMethodName">例外を発生させるサービスのメソッド名</param> private void DependencyInjection(Dictionary <string, string> appSettings = null, List <TestLog> testLogs = null, string exceptionMethodName = null) { // DI前のFailureBlobを取得 var locaSettingsBuilder = new TestDiProviderBuilder(); var locaSettingsProvider = locaSettingsBuilder.Build(); _failureBlob = locaSettingsProvider.GetService <FailureBlob>(); var builder = new TestDiProviderBuilder <AppSettings>(FunctionsHostBuilderExtend.AddUtility); builder.ServiceCollection.AddTransient <DispatchController>(); builder.ServiceCollection.AddTransient <FailureBlob>(); if (appSettings != null) { builder.AddConfigures(appSettings); } Mock <DateTimeProvider> timeProviderMock = new Mock <DateTimeProvider>(); timeProviderMock.SetupGet(tp => tp.UtcNow).Returns(TestTime); builder.ServiceCollection.AddSingleton <ITimeProvider>(timeProviderMock.Object); if (testLogs != null) { builder.ServiceCollection.AddSingleton <ILogger <DispatchService> >(new TestLogger <DispatchService>(testLogs)); } if (!string.IsNullOrEmpty(exceptionMethodName)) { builder.ServiceCollection.AddTransient <IDispatchService, DispatchServiceMock>(); } ServiceProvider provider = builder.Build(); _diAppSettings = provider.GetService <AppSettings>(); _target = provider.GetService <DispatchController>(); var dispatchServiceMock = provider.GetService <IDispatchService>() as DispatchServiceMock; dispatchServiceMock?.Init(exceptionMethodName); }
public void GetIntValueTest(string targetPropertyName, string actualValue, int expected) { // テスト対象の準備 //NULLか空欄ではなかったら var diBuilder = new TestDiProviderBuilder(); if (int.TryParse(actualValue, out int result) == true) { diBuilder.AddConfigure(targetPropertyName, actualValue); } var provider = diBuilder.Build(); AppSettings testTarget = provider.GetService(typeof(AppSettings)) as AppSettings; // テスト var property = typeof(AppSettings).GetProperty(targetPropertyName); int?actual = property.GetValue(testTarget) as int?; //結果 Assert.AreEqual(expected, actual); }
public void ParamNullTest() { // Target Create var builder = new TestDiProviderBuilder(); builder.ServiceCollection.AddTransient <DeliveryGroupsController>(); var controller = builder.Build().GetService <DeliveryGroupsController>(); // BadRequestが返るかチェック var createResponse = controller.PostDeliveryGroup(null, UnitTestHelper.CreateLogger()); Assert.IsInstanceOfType(createResponse, typeof(BadRequestObjectResult)); var updateResponse = controller.PutDeliveryGroup(null, 0, UnitTestHelper.CreateLogger()); Assert.IsInstanceOfType(updateResponse, typeof(BadRequestObjectResult)); // DeleteはBadRequestを返さない }