コード例 #1
0
        public void Pay_ValidTransaction_ReturnsGuid()
        {
            var bankClientMoq = new Mock <IBankClientService>();
            var repositoryMoq = new Mock <ITransactionResultRepository>();

            repositoryMoq
            .Setup(moq => moq.InsertTransaction(It.IsAny <TransactionResult>()));
            var resultMapperMoq = new Mock <ITransactionResultMapper>();

            resultMapperMoq
            .Setup(moq => moq.Map(It.IsAny <PaymentState>(), It.IsAny <Transaction>()))
            .Returns(new TransactionResult());
            var mapperMoq = new Mock <ITransactionMapper>();

            var provider = new PaymentProvider(
                bankClientMoq.Object,
                repositoryMoq.Object,
                resultMapperMoq.Object,
                mapperMoq.Object);

            var result = provider.Pay(new Transaction()).Result;

            Assert.IsTrue(!string.IsNullOrWhiteSpace(result));
            Guid guid = Guid.Parse(result);

            repositoryMoq
            .Verify(
                moq => moq.InsertTransaction(It.IsAny <TransactionResult>()),
                Times.Once);
        }
コード例 #2
0
        public void Pay_NullTransaction_ThrowsNullArgumentException()
        {
            var bankClientMoq   = new Mock <IBankClientService>();
            var repositoryMoq   = new Mock <ITransactionResultRepository>();
            var resultMapperMoq = new Mock <ITransactionResultMapper>();
            var mapperMoq       = new Mock <ITransactionMapper>();

            var provider = new PaymentProvider(
                bankClientMoq.Object,
                repositoryMoq.Object,
                resultMapperMoq.Object,
                mapperMoq.Object);

            bool thrown = false;

            try
            {
                var result = provider.Pay(null).Result;
            }
            catch (AggregateException ex)
            {
                if (ex.InnerException is ArgumentNullException)
                {
                    thrown = true;
                }
            }

            Assert.IsTrue(thrown);
        }
コード例 #3
0
        public int CreateOrder([FromBody] Order order)
        {
            if (ModelState.IsValid && order.TicketIDs != "")
            {
                Response.StatusCode = 200;

                PaymentProvider paymentProvider = new PaymentProvider();
                var             payment         = paymentProvider.Pay(150, "SEK", order.TransactionID.ToString());
                if (payment.PaymentStatus == PaymentStatus.PaymentApproved)
                {
                    // TODO: maybe catch parse error here and give appropriate error, if ticket IDs are bad?
                    try
                    {
                        int[] ticketIDs = order.TicketIDs.Split(",").Select(int.Parse).ToArray();
                        return(ticketDB.AddCustomerOrder(order.BuyerFirstName, order.BuyerLastName, order.BuyerAddress, order.BuyerCity, payment.PaymentStatus, payment.PaymentReference, ticketIDs, order.BuyerEmailAddress));
                    }
                    catch (FormatException)
                    {
                        Response.StatusCode = 400;
                        return(0);
                    }
                }
                else
                {
                    Response.StatusCode = 403;
                    return(-(int)payment.PaymentStatus);
                }
            }
            else
            {
                Response.StatusCode = 400;
                return(0);
            }
        }
コード例 #4
0
        public void Post([FromBody] JObject data)
        {
            string apiKeyData       = Request.Headers["Authorization"];
            string sessionData      = Request.Headers["User-Authentication"];
            string timeStamp        = Request.Headers["Timestamp"];
            int    gradeRestriction = 1;

            if (security.IsAuthorised(timeStamp, apiKeyData, sessionData, gradeRestriction))
            {
                Ticket ticket;
                try
                {
                    ticket = data["Ticket"].ToObject <Ticket>();
                }
                catch
                {
                    Response.StatusCode = (int)HttpStatusCode.BadRequest;
                    return;
                }
                Payment payment = data["payment"].ToObject <Payment>();
                //is the seat already taken?
                foreach (Ticket t in TicketDb.TicketFindAll())
                {
                    if (t.FlightID == ticket.FlightID && t.SeatNumber == ticket.SeatNumber)
                    {
                        Response.StatusCode = (int)HttpStatusCode.Conflict;
                        return;
                    }
                }

                PaymentProvider paymentProvider = new PaymentProvider();
                Payment         paymentAttempt  = paymentProvider.Pay(payment.TotalAmount, payment.Valuta, payment.OrderReference);
                Transaction     newTransaction  = TicketDb.TransactionAdd(paymentAttempt.PaymentStatus.ToString(), paymentAttempt.PaymentReference);
                if (paymentAttempt.PaymentStatus == PaymentStatus.PaymentRejected || paymentAttempt.PaymentStatus == PaymentStatus.UnknownError)
                {
                    Response.StatusCode = (int)HttpStatusCode.PaymentRequired;
                    return;
                }
                try
                {
                    Ticket newTicket = TicketDb.TicketAdd(ticket.UserID, ticket.FlightID, ticket.SeatNumber, ticket.BookAt);
                    TicketDb.TicketToTransactionAdd(newTicket.ID, newTransaction.ID);
                }
                catch
                {
                    Response.StatusCode = (int)HttpStatusCode.BadRequest;
                }
            }
            else
            {
                Response.StatusCode = (int)HttpStatusCode.Unauthorized;
                return;
            }
        }
コード例 #5
0
        public IActionResult Post([FromBody] Order value)
        {
            try
            {
                if (db.CheckTicket(value.TicketID))
                {
                    return(StatusCode(500));
                }
                IPaymentProvider payment = new PaymentProvider();
                Payment          e       = payment.Pay(value.amountToPay, value.valuta, value.TicketID.ToString());
                if (e.PaymentStatus == PaymentStatus.PaymentApproved)
                {
                    db.CreateOrder(value, e);
                    MessageTemplateMaker.InfoHeader  = "Tack för ditt köp";
                    MessageTemplateMaker.PersonEmail = value.Email;
                    MessageTemplateMaker.VenueAddres = "Working on it";
                    MessageTemplateMaker.TicketID    = value.TicketID.ToString();

                    MailHandler mailSender = new MailHandler();
                    mailSender.body    = MessageTemplateMaker.template();
                    mailSender.from    = "*****@*****.**";
                    mailSender.pasword = "ch3UzNlNiiut";
                    mailSender.subject = "Ticket Shop";
                    mailSender.to      = value.Email;
                    mailSender.host    = "mx1.hostinger.se";
                    mailSender.port    = 587;



                    mailSender.SEND();
                }
                else
                {
                    return(StatusCode(500, "Ditt köp kunde inte genomföras"));
                }
            }
            catch {
                return(StatusCode(500, "det blev något fel"));
            }
            return(Ok());
        }