public async Task DetermineStrength_WhenVeryStrongPassword_ReturnEntropyBitRange()
        {
            DetermineStrengthService service = GetClient();

            var verystrongPassword = "******";

            var result = await service.CheckStrength(verystrongPassword);

            Results value = JsonConvert.DeserializeObject <Results>(result);

            Assert.True(value.EntropyBits > 128);
        }
        public async Task DetermineStrength_WhenWeakPassword_ReturnEntropyBitRange()
        {
            DetermineStrengthService service = GetClient();

            var weakPassword = "******";

            var result = await service.CheckStrength(weakPassword);

            Results value = JsonConvert.DeserializeObject <Results>(result);

            Assert.True(value.EntropyBits < 36);
        }
        public async Task DetermineStrength_WhenStrongPassword_ReturnEntropyBitRange()
        {
            DetermineStrengthService service = GetClient();

            var strongPassword = "******";

            var result = await service.CheckStrength(strongPassword);

            Results value = JsonConvert.DeserializeObject <Results>(result);

            Assert.True(value.EntropyBits < 128);
        }
        public async Task DetermineStrength_WhenBreachedPassword_ReturnZero()
        {
            DetermineStrengthService service = GetClient();

            var weakPassword = "******";

            var result = await service.CheckStrength(weakPassword);

            Results value = JsonConvert.DeserializeObject <Results>(result);

            Assert.True(value.PwnedCount == 0);
        }
        public async Task DetermineStrength_WhenBreachedPassword_ReturnCount()
        {
            DetermineStrengthService service = GetClient();

            var breachedPassword = "******";

            var result = await service.CheckStrength(breachedPassword);

            Results value = JsonConvert.DeserializeObject <Results>(result);

            Assert.True(value.PwnedCount > 0);
        }
        public async Task DetermineStrength_WhenCommonPassword_ReturnFalse()
        {
            DetermineStrengthService service = GetClient();

            var uncommonPassword = "******";

            var result = await service.CheckStrength(uncommonPassword);

            Results value = JsonConvert.DeserializeObject <Results>(result);

            Assert.False(value.IsCommonPassword);
        }
        public async Task DetermineStrength_WhenCommonPassword_ReturnTrue()
        {
            DetermineStrengthService service = GetClient();

            var commonPassword = "******";

            var result = await service.CheckStrength(commonPassword);

            Results value = JsonConvert.DeserializeObject <Results>(result);

            Assert.True(value.IsCommonPassword);
        }
        public static DetermineStrengthService GetClient()
        {
            var collection = new ServiceCollection();

            collection.AddHttpClient <IDetermineStrengthService, DetermineStrengthService>();

            var serviceProvider = collection.BuildServiceProvider();

            _ = serviceProvider.GetService <DetermineStrengthService>();

            DetermineStrengthService service = new DetermineStrengthService(UtilHelper.StubLogger <DetermineStrengthService>(), serviceProvider.GetRequiredService <IHttpClientFactory>());

            return(service);
        }
        public void DetermineStrength_WhenEmptyPassword_GetArgumentException()
        {
            DetermineStrengthService service = GetClient();

            Assert.ThrowsAsync <ArgumentException>(async() => await service.CheckStrength(string.Empty));
        }
        public void DetermineStrength_WhenNullValues_GetArgumentException()
        {
            DetermineStrengthService service = GetClient();

            Assert.ThrowsAsync <ArgumentException>(async() => await service.CheckStrength(null));
        }