Ejemplo n.º 1
0
        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();
            }
        }
Ejemplo n.º 2
0
        /// <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>();
        }
Ejemplo n.º 3
0
        /// <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>();
        }
Ejemplo n.º 4
0
        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));
        }
Ejemplo n.º 5
0
        /// <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>();
        }
Ejemplo n.º 6
0
        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);
        }
Ejemplo n.º 7
0
        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());
        }
Ejemplo n.º 8
0
        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));
        }
Ejemplo n.º 9
0
        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));
        }
Ejemplo n.º 10
0
        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

            // 後始末
        }
Ejemplo n.º 11
0
        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);
        }
Ejemplo n.º 12
0
        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);
        }
Ejemplo n.º 13
0
        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);
        }
Ejemplo n.º 14
0
        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);
        }
Ejemplo n.º 15
0
        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);
        }
Ejemplo n.º 16
0
        /// <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;
        }
Ejemplo n.º 17
0
        // [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にファイルがあることを確認。
        }
Ejemplo n.º 18
0
        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>();
        }
Ejemplo n.º 19
0
        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);
        }
Ejemplo n.º 20
0
        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);
        }
Ejemplo n.º 21
0
        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);
        }
Ejemplo n.º 22
0
        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());
        }
Ejemplo n.º 23
0
        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>());
        }
Ejemplo n.º 24
0
        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();
        }
Ejemplo n.º 25
0
        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();
        }
Ejemplo n.º 26
0
        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);
        }
Ejemplo n.º 27
0
        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));
        }
Ejemplo n.º 28
0
        /// <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);
        }
Ejemplo n.º 29
0
        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);
        }
Ejemplo n.º 30
0
        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を返さない
        }