/*
* Copyright (c) 2025 Proton AG
*
* This file is part of ProtonVPN.
*
* ProtonVPN is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* ProtonVPN is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with ProtonVPN. If not, see .
*/
using System;
using System.Net.Http;
using FlaUI.Core.Tools;
using ProtonVPN.UI.Tests.TestsHelper;
namespace ProtonVPN.UI.Tests.ApiClient.TestEnv;
public class BtiController
{
private static HttpClient _client;
static BtiController()
{
HttpClientHandler handler = new HttpClientHandler
{
ServerCertificateCustomValidationCallback = (message, cert, chain, errors) => true
};
_client = new HttpClient(handler)
{
BaseAddress = new Uri(Environment.GetEnvironmentVariable("BTI_CONTROLLER_URL") ?? throw new Exception("Missing BTI_CONTROLLER_URL env var."))
};
}
public static void SetScenario(string scenarioEndpoint)
{
RetryResult retry = Retry.WhileException(
() => {
MakeScenarioRequest(scenarioEndpoint);
},
TestConstants.TenSecondsTimeout, TestConstants.ApiRetryInterval);
if (!retry.Success)
{
throw new Exception($"Failed to set scenario:\n${retry.LastException}");
}
}
private static void MakeScenarioRequest(string scenarioEndpoint)
{
HttpResponseMessage response = _client.GetAsync(scenarioEndpoint).Result;
response.EnsureSuccessStatusCode();
}
}