private void backgroundWorkerLogin_GetAuthenticationTokenCompleted(object sender, RunWorkerCompletedEventArgs e)
        {
            mobileDeviceLoginResponse response       = e.Result as mobileDeviceLoginResponse;
            MainController            mainController = null;

            if (!object.ReferenceEquals(response, null) && !object.ReferenceEquals(response.sessionToken, null))
            {
                this.response = response;
                Debug.WriteLine("RunnerBackground completed" + response.sessionToken);
                //this.Hide();

                try
                {
                    this.Dispatcher.Invoke(() =>
                    {
                        MainController.merchantName = this.response.merchantContact.merchantName; // optional
                        MainController.merchantID   = "888000000108 ";                            // optional
                        mainController = new MainController(this.sdkEnvironment,
                                                            "840",
                                                            "0114",
                                                            this.skipSignatureValue,
                                                            this.showReceiptValue,
                                                            "123456789WINSDK",
                                                            this.response.sessionToken);
                        Application.Current.MainWindow = mainController;
                        this.Close();
                        mainController.ShowDialog();
                    });
                }
                catch
                (Exception exception)
                {
                    Debug.Write("Exception in main window" + exception.Message + " " + mainController);
                }
                finally
                {
                }
            }
            else
            {
                Debug.WriteLine("RunnerBackground completed with some error");
                this.btnPay.IsEnabled = true;
                ErrorScreen errorScreen = new ErrorScreen();
                errorScreen.ShowDialog();
            }
        }
        public void MockmobileDeviceLoginTest()
        {
            //define all mocked objects as final
            var mockController = GetMockController <mobileDeviceLoginRequest, mobileDeviceLoginResponse>();
            var mockRequest    = new mobileDeviceLoginRequest
            {
                merchantAuthentication = new merchantAuthenticationType {
                    name = "mocktest", Item = "mockKey", ItemElementName = ItemChoiceType.transactionKey
                },
            };
            var transRetailInfoType = new transRetailInfoType
            {
                deviceType = "android",
                marketType = "marketplace",
            };
            var mockResponse = new mobileDeviceLoginResponse
            {
                refId           = "1234",
                sessionToken    = "sessiontoken",
                merchantAccount = transRetailInfoType,
            };

            var errorResponse = new ANetApiResponse();
            var results       = new List <String>();
            const messageTypeEnum messageTypeOk = messageTypeEnum.Ok;

            SetMockControllerExpectations <mobileDeviceLoginRequest, mobileDeviceLoginResponse, mobileDeviceLoginController>(
                mockController.MockObject, mockRequest, mockResponse, errorResponse, results, messageTypeOk);
            mockController.MockObject.Execute(AuthorizeNet.Environment.CUSTOM);
            //mockController.MockObject.Execute();
            // or var controllerResponse = mockController.MockObject.ExecuteWithApiResponse(AuthorizeNet.Environment.CUSTOM);
            var controllerResponse = mockController.MockObject.GetApiResponse();

            Assert.IsNotNull(controllerResponse);

            Assert.IsNotNull(controllerResponse.merchantAccount);
            LogHelper.info(Logger, "mobileDeviceLogin: Details:{0}", controllerResponse.merchantAccount);
        }