namespace ZB.MOM.WW.LmxProxy.Client.IntegrationTests;

public class ConnectionTests : IntegrationTestBase
{
    [Fact]
    public async Task ConnectAndDisconnect_Succeeds()
    {
        // Client is connected in InitializeAsync
        Assert.True(await Client!.IsConnectedAsync());
        await Client.DisconnectAsync();
        Assert.False(await Client.IsConnectedAsync());
    }

    [Fact]
    public async Task ConnectWithInvalidApiKey_Fails()
    {
        using var badClient = CreateClient(InvalidApiKey);
        var ex = await Assert.ThrowsAsync<Grpc.Core.RpcException>(
            () => badClient.ConnectAsync());
        Assert.Equal(Grpc.Core.StatusCode.Unauthenticated, ex.StatusCode);
    }

    [Fact]
    public async Task DoubleConnect_IsIdempotent()
    {
        await Client!.ConnectAsync(); // Already connected — should be no-op
        Assert.True(await Client.IsConnectedAsync());
    }
}
