public void PhoneForAuthRequired_OnValidRequest_ReturnObjects()
        {
            // arrange
            const string posRefId     = "xyz";
            const string merchantId   = "12345678";
            const string requestId    = "20";
            const string phoneNumnber = "1800999999";

            // act
            var request = new PhoneForAuthRequired(posRefId, requestId, phoneNumnber, merchantId);

            // assert
            Assert.Equal(posRefId, request.PosRefId);
            Assert.Equal(requestId, request.RequestId);
            Assert.Equal(phoneNumnber, request.GetPhoneNumber());
            Assert.Equal(merchantId, request.GetMerchantId());
        }
        public void PhoneForAuthRequired_OnValidRequestWithMessage_ReturnObjects()
        {
            // arrange
            var          secrets = SpiClientTestUtils.SetTestSecrets();
            const string jsonStr = @"{""message"":{""event"":""authorisation_code_required"",""id"":""20"",""datetime"":""2017-11-01T06:09:33.918"",""data"":{""merchant_id"":""12345678"",""auth_centre_phone_number"":""1800999999"",""pos_ref_id"": ""xyz""}}}";

            // act
            var msg     = Message.FromJson(jsonStr, secrets);
            var request = new PhoneForAuthRequired(msg);

            // assert
            Assert.Equal("authorisation_code_required", msg.EventName);
            Assert.Equal("xyz", request.PosRefId);
            Assert.Equal("20", request.RequestId);
            Assert.Equal("1800999999", request.GetPhoneNumber());
            Assert.Equal("12345678", request.GetMerchantId());
        }
        public void TransactionFlowState_OnValidRequestPhoneForAuthRequired_ReturnObjects()
        {
            // arrnge
            var          secrets = SpiClientTestUtils.SetTestSecrets();
            const string jsonStr = @"{""message"":{""event"":""authorisation_code_required"",""id"":""20"",""datetime"":""2017-11-01T06:09:33.918"",""data"":{""merchant_id"":""12345678"",""auth_centre_phone_number"":""1800999999"",""pos_ref_id"": ""xyz""}}}";
            var          msg     = Message.FromJson(jsonStr, secrets);
            var          request = new PhoneForAuthRequired(msg);
            var          transactionFlowState = new TransactionFlowState("1", TransactionType.SettlementEnquiry, 0, msg, $"Waiting for EFTPOS connection to make a settlement enquiry");

            // act
            transactionFlowState.PhoneForAuthRequired(request, "PhoneForAuthRequired");

            // assert
            Assert.Equal(request, transactionFlowState.PhoneForAuthRequiredMessage);
            Assert.True(transactionFlowState.AwaitingPhoneForAuth);
            Assert.Equal("PhoneForAuthRequired", transactionFlowState.DisplayMessage);
        }