public async Task CanGetAzureSettings()
        {
            var fullPath = Path.GetFullPath($"./{nameof(CanGetAzureSettings)}");
            var envMock  = GetEnvMock(fullPath, false);

            var model = new UserSettings.Model {
                Azure = new AzureSettings {
                    SubscriptionId = Guid.NewGuid().ToString("N")
                }
            };
            var json     = JsonConvert.SerializeObject(model, JsonUtil.CreateSettings());
            var fileMock = new Mock <IFileUtil>(MockBehavior.Strict);

            fileMock.Setup(m => m.ReadAllText(It.IsAny <string>())).ReturnsAsync(json);

            var settings   = new UserSettings(fileMock.Object, envMock.Object);
            var azSettings = await settings.GetAzureSettings();

            Assert.Equal(model.Azure.SubscriptionId, azSettings.SubscriptionId);

            model = new UserSettings.Model();
            json  = JsonConvert.SerializeObject(model, JsonUtil.CreateSettings());
            fileMock.Setup(m => m.ReadAllText(It.IsAny <string>())).ReturnsAsync(json);
            azSettings = await settings.GetAzureSettings();

            Assert.NotNull(azSettings);
            Assert.Equal(default, azSettings.SubscriptionId);
        public async Task CanGetServer()
        {
            var uri        = new Uri("http://acme.d/d");
            var fullPath   = Path.GetFullPath($"./{nameof(CanGetServer)}");
            var configPath = Path.Combine(fullPath, ".certes", "certes.json");
            var envMock    = GetEnvMock(fullPath);

            var fileMock = new Mock <IFileUtil>(MockBehavior.Strict);

            fileMock.Setup(m => m.ReadAllText(It.IsAny <string>())).ReturnsAsync((string)null);

            var settings = new UserSettings(fileMock.Object, envMock.Object);

            Assert.Equal(WellKnownServers.LetsEncryptV2, await settings.GetDefaultServer());
            fileMock.Verify(m => m.ReadAllText(configPath), Times.Once);

            fileMock.ResetCalls();
            var model = new UserSettings.Model {
                DefaultServer = uri, Servers = new AcmeSettings[0]
            };

            fileMock.Setup(m => m.ReadAllText(It.IsAny <string>()))
            .ReturnsAsync(JsonConvert.SerializeObject(model, JsonUtil.CreateSettings()));

            Assert.Equal(uri, await settings.GetDefaultServer());

            fileMock.Verify(m => m.ReadAllText(configPath), Times.Once);
        }