using Autofac;
using FitConnect;
using FitConnect.Interfaces;
using FitConnect.Interfaces.Subscriber;
using Microsoft.Extensions.Logging;
using MockContainer;

namespace E2ETest;

public abstract class EndToEndTestBase {
    protected ILogger Logger = null!;
    protected ISender Sender = null!;
    protected IFitConnectSettings Settings = null!;
    protected ISubscriber Subscriber = null!;

    [SetUp]
    public void Setup() {
        var container = Container.Create();
        Settings = container.Resolve<IFitConnectSettings>();

        Logger = LoggerFactory.Create(
            builder => {
                builder.AddConsole();
                builder.SetMinimumLevel(LogLevel.Trace);
            }).CreateLogger("E2E Test");


        Sender = Client.GetSender(FitConnectEnvironment.Testing,
            Settings.SenderClientId, Settings.SenderClientSecret,
            Logger);
        Subscriber = Client.GetSubscriber(FitConnectEnvironment.Testing,
            Settings.SubscriberClientId, Settings.SubscriberClientSecret,
            Settings.PrivateKeyDecryption,
            Settings.PrivateKeySigning,
            Logger
        );
    }
}