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

namespace E2ETest;

public abstract class EndToEndTestBase {
    protected ISender Sender = null!;
    protected ISubscriber Subscriber = null!;
    protected MockSettings Settings = null!;
    protected ILogger Logger = null!;
    
    [OneTimeSetUp]
    public void Setup() {
        var container = MockContainer.Container.Create();
        Settings = container.Resolve<MockSettings>();

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


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