public async Task TestGetHomeDataEventListFirst()
        {
            using var netatmoClient = new NetatmoWebClient(new MockHttpMessageHandler()
                                                           .AddAuthMock()
                                                           .AddHomeData()
                                                           .ToMockProvider());

            var result = await netatmoClient.GetHomeData();

            Assert.Equal("vehicle", result.Homes[0].Events[0].EventList[0].Type);
            Assert.Equal(DateTimeOffset.FromUnixTimeSeconds(1585726685), result.Homes[0].Events[0].EventList[0].Time);
            Assert.Equal(0, result.Homes[0].Events[0].EventList[0].Offset);
            Assert.Equal("1234d30c-1234-5678-9012-ff735af0923f", result.Homes[0].Events[0].EventList[0].Id);
            Assert.Equal("Vehicle detected", result.Homes[0].Events[0].EventList[0].Message);
            Assert.Equal("123e75a5980d8c6c79ef111a", result.Homes[0].Events[0].EventList[0].Snapshot.Id);
            Assert.Equal(1, result.Homes[0].Events[0].EventList[0].Snapshot.Version);
            Assert.Equal("123e75a5980d8c6c79ef111a977f2280e9823d3e5ba00adaa94edbe5ba00e5ba", result.Homes[0].Events[0].EventList[0].Snapshot.Key);
            Assert.Equal("https://netatmocameraimage.blob.domain.com/path/b178de75e8444df3c9d762bd452bc2d625a44e75a5980d8c6c79ef111a977f2280e9823d3e5ba00adaa94edb", result.Homes[0].Events[0].EventList[0].Snapshot.Url);
            Assert.Equal(string.Empty, result.Homes[0].Events[0].EventList[0].Snapshot.Filename);
            Assert.Equal("234e75a5980d8c6c79ef111a", result.Homes[0].Events[0].EventList[0].Vignette.Id);
            Assert.Equal(1, result.Homes[0].Events[0].EventList[0].Vignette.Version);
            Assert.Equal("234e75a5980d8c6c79ef111a977f2280e9823d3e5ba00adaa94edbe5ba00e5ba", result.Homes[0].Events[0].EventList[0].Vignette.Key);
            Assert.Equal("https://netatmocameraimage.blob.domain.com/path/b178de75e8444df3c9d762bd452bc2d625a44e75a5980d8c6c79ef111a977f2280e9823d3e5ba00adaa94edb", result.Homes[0].Events[0].EventList[0].Vignette.Url);
            Assert.Equal(string.Empty, result.Homes[0].Events[0].EventList[0].Vignette.Filename);
        }
        public async Task TestGetHomeDataUser()
        {
            using var netatmoClient = new NetatmoWebClient(new MockHttpMessageHandler()
                                                           .AddAuthMock()
                                                           .AddHomeData()
                                                           .ToMockProvider());

            var result = await netatmoClient.GetHomeData();

            Assert.Equal("en-US", result.User.RegLocale);
            Assert.Equal("en", result.User.Lang);
            Assert.Equal("US", result.User.Country);
            Assert.Equal("*****@*****.**", result.User.Mail);
            Assert.True(result.GlobalInfo.ShowTags);
        }
        public async Task TestGetHomeDataHomes()
        {
            using var netatmoClient = new NetatmoWebClient(new MockHttpMessageHandler()
                                                           .AddAuthMock()
                                                           .AddHomeData()
                                                           .ToMockProvider());

            var result = await netatmoClient.GetHomeData();

            Assert.Single(result.Homes);
            Assert.Equal("1234abcd1234abcd1234abcd", result.Homes[0].Id);
            Assert.Equal("My Netatmo Home", result.Homes[0].Name);
            Assert.Equal("Unittest Town", result.Homes[0].Place.City);
            Assert.Equal("EN", result.Homes[0].Place.Country);
            Assert.Equal("America/New_York", result.Homes[0].Place.Timezone);
        }
        public async Task TestGetHomeDataEventListSubsequent()
        {
            using var netatmoClient = new NetatmoWebClient(new MockHttpMessageHandler()
                                                           .AddAuthMock()
                                                           .AddHomeData()
                                                           .ToMockProvider());

            var result = await netatmoClient.GetHomeData();

            Assert.Equal("human", result.Homes[0].Events[0].EventList[1].Type);
            Assert.Equal(DateTimeOffset.FromUnixTimeSeconds(1585576470), result.Homes[0].Events[0].EventList[1].Time);
            Assert.Equal(1, result.Homes[0].Events[0].EventList[1].Offset);
            Assert.Equal("1234d30c-1234-5678-9012-e5b34ccbd5b3", result.Homes[0].Events[0].EventList[1].Id);
            Assert.Equal("Person detected", result.Homes[0].Events[0].EventList[1].Message);
            Assert.Equal("vod/1234d30c-1234-5678-9012-abc35d7a4abc/events/1234d30c-1234-5678-9012-e5b34ccbd5b3/snapshot_1234d30c-1234-5678-9012-e5b34ccbd5b3.jpg", result.Homes[0].Events[0].EventList[1].Snapshot.Filename);
            Assert.Equal("vod/1234d30c-1234-5678-9012-abc35d7a4abc/events/1234d30c-1234-5678-9012-e5b34ccbd5b3/vignette_1234d30c-1234-5678-9012-e5b34ccbd5b3.jpg", result.Homes[0].Events[0].EventList[1].Vignette.Filename);
        }
        public async Task TestGetHomeDataEventInfo()
        {
            using var netatmoClient = new NetatmoWebClient(new MockHttpMessageHandler()
                                                           .AddAuthMock()
                                                           .AddHomeData()
                                                           .ToMockProvider());

            var result = await netatmoClient.GetHomeData();

            Assert.Single(result.Homes[0].Events);
            Assert.Equal("1234abcd1234abcd1234abcd", result.Homes[0].Events[0].Id);
            Assert.Equal("outdoor", result.Homes[0].Events[0].Type);
            Assert.Equal(DateTimeOffset.FromUnixTimeSeconds(1585576467), result.Homes[0].Events[0].Time);
            Assert.Equal("78:90:ab:cd:ef:01", result.Homes[0].Events[0].CameraId);
            Assert.Equal("78:90:ab:cd:ef:01", result.Homes[0].Events[0].DeviceId);
            Assert.Equal("1234d30c-1234-5678-9012-abc35d7a4abc", result.Homes[0].Events[0].VideoId);
            Assert.Equal("available", result.Homes[0].Events[0].VideoStatus);
            Assert.NotEmpty(result.Homes[0].Events[0].EventList);
        }
        public async Task TestGetHomeDataCameras()
        {
            using var netatmoClient = new NetatmoWebClient(new MockHttpMessageHandler()
                                                           .AddAuthMock()
                                                           .AddHomeData()
                                                           .ToMockProvider());

            var result = await netatmoClient.GetHomeData();

            Assert.Single(result.Homes[0].Cameras);
            Assert.Equal("78:90:ab:cd:ef:01", result.Homes[0].Cameras[0].Id);
            Assert.Equal("NOC", result.Homes[0].Cameras[0].Type);
            Assert.Equal("on", result.Homes[0].Cameras[0].Status);
            Assert.Equal("https://prodvpn-eu-123.netatmo.net/restricted/10.0.0.1/abcabc123412341234123412341234ab/MTABCDEFG1234ABCDEF1234BACDEF1234ABCDEF123,,", result.Homes[0].Cameras[0].VpnUrl);
            Assert.False(result.Homes[0].Cameras[0].IsLocal);
            Assert.Equal("on", result.Homes[0].Cameras[0].SdStatus);
            Assert.Equal("on", result.Homes[0].Cameras[0].AlimStatus);
            Assert.Equal("My Presence", result.Homes[0].Cameras[0].Name);
            Assert.Equal(DateTimeOffset.FromUnixTimeSeconds(1490468965), result.Homes[0].Cameras[0].LastSetup);
            Assert.Equal("auto", result.Homes[0].Cameras[0].LightModeStatus);
        }