public AuthenticationServiceTests()
        {
            Mock <IElementHandle> elementMock = new Mock <IElementHandle>();

            elementMock.Setup(x => x.FocusAsync())
            .Returns(Task.Delay(0));

            Mock <IKeyboard> keyboardMock = new Mock <IKeyboard>();

            keyboardMock.Setup(x => x.PressAsync(It.IsAny <string>(), It.IsAny <int>()))
            .Returns(Task.Delay(0));

            PageMock.Setup(x => x.ClickAsync(It.IsAny <string>(), It.IsAny <int>(), It.IsAny <MouseButton>(),
                                             It.IsAny <int>(), It.IsAny <Modifier[]>(), It.IsAny <Point?>(), It.IsAny <int?>(), It.IsAny <bool>(), It.IsAny <bool?>()))
            .Returns(Task.Delay(0));
            PageMock.Setup(x => x.GoToAsync(It.IsAny <string>(), It.IsAny <LifecycleEvent>(), It.IsAny <string>(), It.IsAny <int>()))
            .Returns(Task.FromResult(default(IResponse)));
            PageMock.Setup(x => x.QuerySelectorAsync(It.IsAny <string>()))
            .Returns(Task.FromResult(elementMock.Object));
            PageMock.Setup(x => x.CloseAsync(It.IsAny <bool>()))
            .Callback(() => PageMock.SetupGet(x => x.IsClosed).Returns(true))
            .Returns(Task.Delay(1));
            PageMock.Setup(x => x.Keyboard)
            .Returns(keyboardMock.Object);

            Service = new AuthenticationService(BrowserMock.Object, LoggerMock.Object);
        }
        private void SetTokenResponse(IResponse response = null)
        {
            if (response == null)
            {
                var responseMock = new Mock <IResponse>();
                responseMock.Setup(x => x.GetJsonAsync <AuthenticationToken>(It.IsAny <JsonSerializerOptions>()))
                .Returns(Task.FromResult(new AuthenticationToken
                {
                    Token = "valid_token"
                }));
                responseMock.Setup(x => x.Status)
                .Returns(HttpStatusCode.OK);

                response = responseMock.Object;
            }

            PageMock.Setup(x => x.GoToAsync(Endpoints.F1TV.AuthenticateToken, It.IsAny <LifecycleEvent?>(), It.IsAny <string>(), It.IsAny <int?>()))
            .Returns(Task.FromResult(response));
        }
        private void SetAuthenticationResponse(IResponse response = null)
        {
            if (response == null)
            {
                var responseMock = new Mock <IResponse>();
                responseMock.Setup(x => x.GetJsonAsync <AuthenticationResponse>(It.IsAny <JsonSerializerOptions>()))
                .Returns(Task.FromResult(new AuthenticationResponse
                {
                    SessionId = "valid_oauth_jwt_token",
                    Session   = new Subscription
                    {
                        Status = "valid",
                        Token  = "valid_jwt_token"
                    }
                }));
                responseMock.Setup(x => x.Status)
                .Returns(HttpStatusCode.OK);

                response = responseMock.Object;
            }

            PageMock.Setup(x => x.WaitForResponseAsync(Endpoints.AuthenticationByPassword, It.IsAny <int?>()))
            .Returns(Task.FromResult(response));
        }