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); }
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); }
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); } }
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; } }
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()); }