Пример #1
0
        public void FilterBefore_AllowedStatus()
        {
            var fileIndexItems = new List <FileIndexItem>
            {
                new FileIndexItem {
                    FilePath = "/1.jpg", Status = FileIndexItem.ExifStatus.Deleted
                },
                new FileIndexItem()
                {
                    FilePath = "/2.jpg", Status = FileIndexItem.ExifStatus.Ok
                },
                new FileIndexItem()
                {
                    FilePath = "/3.jpg", Status = FileIndexItem.ExifStatus.NotFoundNotInIndex
                },
                new FileIndexItem()
                {
                    FilePath = "/4.jpg", Status = FileIndexItem.ExifStatus.NotFoundSourceMissing
                }
            };

            var result = new SyncWatcherConnector(null, null,
                                                  null, null, new FakeIWebLogger(), new TelemetryClient(new TelemetryConfiguration())).FilterBefore(fileIndexItems);

            Assert.AreEqual(4, result.Count);
        }
Пример #2
0
        public void Sync_CheckInput_Socket()
        {
            var sync = new FakeISynchronize(new List <FileIndexItem>
            {
                new FileIndexItem("/test")
                {
                    Status = FileIndexItem.ExifStatus.Ok
                }
            });
            var websockets           = new FakeIWebSocketConnectionsService();
            var appSettings          = new AppSettings();
            var syncWatcherPreflight = new SyncWatcherConnector(new AppSettings(),
                                                                sync, websockets, new FakeIQuery(), new FakeIWebLogger(), new TelemetryClient(new TelemetryConfiguration()));

            syncWatcherPreflight.Sync(
                new Tuple <string, string, WatcherChangeTypes>(
                    Path.Combine(appSettings.StorageFolder, "test"), null, WatcherChangeTypes.Changed));

            Assert.AreEqual(1, websockets.FakeSendToAllAsync.Count(p => !p.StartsWith("[system]")));
            var value = websockets.FakeSendToAllAsync.FirstOrDefault(p =>
                                                                     !p.StartsWith("[system]"));

            Assert.IsTrue(value.Contains("filePath\":\"/test\""));
            Assert.AreEqual("/test", sync.Inputs[0].Item1);
        }
Пример #3
0
        public void EndRequestOperation_NoKey()
        {
            var connector = new SyncWatcherConnector(new AppSettings(), new FakeISynchronize(),
                                                     new FakeIWebSocketConnectionsService(), new FakeIQuery(),
                                                     new FakeIWebLogger(), new TelemetryClient(new TelemetryConfiguration()));

            var result = connector.EndRequestOperation(new EmptyOperationHolder <RequestTelemetry>());

            Assert.IsFalse(result);
        }
Пример #4
0
        public void CreateNewRequestTelemetry_NoKey()
        {
            var connector = new SyncWatcherConnector(new AppSettings(), new FakeISynchronize(),
                                                     new FakeIWebSocketConnectionsService(), new FakeIQuery(),
                                                     new FakeIWebLogger(), new TelemetryClient(new TelemetryConfiguration()));

            var operationHolder  = connector.CreateNewRequestTelemetry();
            var operationHolder2 = operationHolder as EmptyOperationHolder <RequestTelemetry>;

            Assert.IsTrue(operationHolder2.Empty);
        }
Пример #5
0
        public async Task Sync_InjectScopes_NullReferenceException()
        {
            var appSettings     = new AppSettings();
            var services        = new ServiceCollection();
            var serviceProvider = services.BuildServiceProvider();
            var scope           = serviceProvider.GetRequiredService <IServiceScopeFactory>();

            var syncWatcherPreflight = new SyncWatcherConnector(scope);
            await syncWatcherPreflight.Sync(
                new Tuple <string, string, WatcherChangeTypes>(
                    Path.Combine(appSettings.StorageFolder, "test"), null, WatcherChangeTypes.Changed));
        }
Пример #6
0
        public async Task Sync_Rename_skipNull()
        {
            var sync                 = new FakeISynchronize();
            var appSettings          = new AppSettings();
            var syncWatcherPreflight = new SyncWatcherConnector(new AppSettings(), sync,
                                                                new FakeIWebSocketConnectionsService(), new FakeIQuery(),
                                                                new FakeIWebLogger(), new TelemetryClient(new TelemetryConfiguration()));
            var result = await syncWatcherPreflight.Sync(
                new Tuple <string, string, WatcherChangeTypes>(
                    Path.Combine(appSettings.StorageFolder, "test"), null, WatcherChangeTypes.Renamed));

            Assert.AreEqual("/test", sync.Inputs[0].Item1);
        }
Пример #7
0
        public void EndRequestOperation_Key_NoTelemetryClient()
        {
            var connector = new SyncWatcherConnector(new AppSettings {
                ApplicationInsightsInstrumentationKey = "1"
            }, new FakeISynchronize(),
                                                     new FakeIWebSocketConnectionsService(), new FakeIQuery(),
                                                     new FakeIWebLogger(), null); // <-- no tel client

            var operationHolder = connector.CreateNewRequestTelemetry();

            var result = connector.EndRequestOperation(operationHolder);

            Assert.IsFalse(result);
        }
Пример #8
0
        public void CreateNewRequestTelemetry_Key_NoTelemetryClient()
        {
            var connector = new SyncWatcherConnector(new AppSettings {
                ApplicationInsightsInstrumentationKey = "1"
            }, new FakeISynchronize(),
                                                     new FakeIWebSocketConnectionsService(), new FakeIQuery(),
                                                     new FakeIWebLogger(), null); // <-- no tel client

            var operationHolder = connector.CreateNewRequestTelemetry();

            var operationHolder2 = operationHolder as EmptyOperationHolder <RequestTelemetry>;

            Assert.IsTrue(operationHolder2.Empty);
        }
Пример #9
0
        public async Task Sync_Rename()
        {
            var sync                 = new FakeISynchronize();
            var appSettings          = new AppSettings();
            var syncWatcherPreflight = new SyncWatcherConnector(new AppSettings(), sync,
                                                                new FakeIWebSocketConnectionsService(),
                                                                new FakeIQuery(), new FakeIWebLogger(), new TelemetryClient(new TelemetryConfiguration()));
            var result = await syncWatcherPreflight.Sync(
                new Tuple <string, string, WatcherChangeTypes>(
                    Path.Combine(appSettings.StorageFolder, "test"), Path.Combine(appSettings.StorageFolder, "test2"), WatcherChangeTypes.Renamed));

            Assert.AreEqual("/test", sync.Inputs[0].Item1);
            Assert.AreEqual("/test2", sync.Inputs[1].Item1);
            // result
            Assert.AreEqual("/test", result[0].FilePath);
            Assert.AreEqual(FileIndexItem.ExifStatus.NotFoundSourceMissing, result[0].Status);
        }
Пример #10
0
        public void FilterBefore_AllowedStatus_removeDuplicates()
        {
            var fileIndexItems = new List <FileIndexItem>
            {
                new FileIndexItem {
                    FilePath = "/1.jpg", Status = FileIndexItem.ExifStatus.Ok
                },
                new FileIndexItem()
                {
                    FilePath = "/1.jpg", Status = FileIndexItem.ExifStatus.Ok
                },
            };
            var result = new SyncWatcherConnector(null, null,
                                                  null, null, new FakeIWebLogger(), new TelemetryClient(new TelemetryConfiguration())).FilterBefore(fileIndexItems);

            Assert.AreEqual(1, result.Count);
        }
Пример #11
0
        public void Sync_CheckInput_CheckIfCacheIsUpdated_ButIgnoreNotInIndexFile()
        {
            var sync = new FakeISynchronize(new List <FileIndexItem>
            {
                //    = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = > source is missing
                new FileIndexItem("/test.jpg")
                {
                    Status = FileIndexItem.ExifStatus.NotFoundSourceMissing
                }
            });
            var websockets  = new FakeIWebSocketConnectionsService();
            var appSettings = new AppSettings();

            var provider = new ServiceCollection()
                           .AddMemoryCache()
                           .BuildServiceProvider();
            var memoryCache = provider.GetService <IMemoryCache>();

            var builderDb = new DbContextOptionsBuilder <ApplicationDbContext>();

            builderDb.UseInMemoryDatabase(nameof(DownloadPhotoControllerTest));
            var options = builderDb.Options;
            var context = new ApplicationDbContext(options);

            var query = new Query(context, null, null, null, memoryCache);

            query.AddCacheParentItem("/",
                                     new List <FileIndexItem> {
                new FileIndexItem("/test.jpg")
                {
                    IsDirectory     = false,
                    Tags            = "This should not be the tags",
                    ParentDirectory = "/"
                }
            });

            var syncWatcherConnector = new SyncWatcherConnector(appSettings,
                                                                sync, websockets, query, new FakeIWebLogger(), new TelemetryClient(new TelemetryConfiguration()));

            syncWatcherConnector.Sync(
                new Tuple <string, string, WatcherChangeTypes>(
                    Path.Combine(appSettings.StorageFolder, "test.jpg"), null, WatcherChangeTypes.Changed));

            Assert.AreEqual(0, query.DisplayFileFolders().Count());
        }
Пример #12
0
        public void CreateNewRequestTelemetry_Key()
        {
            var connector = new SyncWatcherConnector(new AppSettings {
                ApplicationInsightsInstrumentationKey = "1"
            }, new FakeISynchronize(),
                                                     new FakeIWebSocketConnectionsService(), new FakeIQuery(),
                                                     new FakeIWebLogger(), new TelemetryClient(new TelemetryConfiguration()));

            var operationHolder = connector.CreateNewRequestTelemetry();

            Assert.AreEqual("FSW SyncWatcherConnector", operationHolder.Telemetry.Name);
            var expected = new RequestTelemetry();

            new CloudRoleNameInitializer($"{new AppSettings().ApplicationType}").Initialize(expected);
            Assert.AreEqual(expected.Context.Cloud.RoleName, operationHolder.Telemetry.Context.Cloud.RoleName);
            Assert.AreEqual(expected.Context.Cloud.RoleInstance, operationHolder.Telemetry.Context.Cloud.RoleInstance);
            connector.EndRequestOperation(operationHolder);
        }
Пример #13
0
        public void Sync_InjectScopes()
        {
            var services = new ServiceCollection();

            services.AddSingleton <ISynchronize, FakeISynchronize>();
            services.AddSingleton <AppSettings>();
            services.AddSingleton <IWebSocketConnectionsService, FakeIWebSocketConnectionsService>();
            services.AddSingleton <IQuery, FakeIQuery>();
            services.AddSingleton <IWebLogger, FakeIWebLogger>();
            services.AddMemoryCache();

            var serviceProvider = services.BuildServiceProvider();

            var scope = serviceProvider.GetRequiredService <IServiceScopeFactory>();

            var syncWatcherPreflight = new SyncWatcherConnector(scope);
            var result = syncWatcherPreflight.InjectScopes();

            Assert.IsTrue(result);
        }
Пример #14
0
        public void Sync_CheckInput_Socket_Ignore()
        {
            var sync = new FakeISynchronize(new List <FileIndexItem>
            {
                new FileIndexItem("/test")
                {
                    Status = FileIndexItem.ExifStatus.OperationNotSupported
                }
            });
            var websockets           = new FakeIWebSocketConnectionsService();
            var appSettings          = new AppSettings();
            var syncWatcherConnector = new SyncWatcherConnector(appSettings,
                                                                sync, websockets, new FakeIQuery(), new FakeIWebLogger(), new TelemetryClient(new TelemetryConfiguration()));

            syncWatcherConnector.Sync(
                new Tuple <string, string, WatcherChangeTypes>(
                    Path.Combine(appSettings.StorageFolder, "test"), null, WatcherChangeTypes.Changed));

            Assert.AreEqual(0, websockets.FakeSendToAllAsync.Count);
            Assert.AreEqual("/test", sync.Inputs[0].Item1);
        }