public void Test_GetDisputesForUser()
        {
            ListPaginated <DisputeDTO> result = null;

            DisputeDTO dispute = _clientDisputes.FirstOrDefault(x => x.DisputeType.HasValue && x.DisputeType.Value == DisputeType.NOT_CONTESTABLE);

            if (dispute == null)
            {
                Assert.Fail("Cannot test getting disputes for user because there's no not contestable disputes in the disputes list.");
            }

            try
            {
                string userId = Api.Disputes.GetTransactions(dispute.Id, new Pagination(1, 1), null)[0].AuthorId;

                result = Api.Disputes.GetDisputesForUser(userId, new Pagination(1, 20), null);
            }
            catch (Exception ex)
            {
                Assert.Fail(ex.Message);
            }

            Assert.IsNotNull(result);
            Assert.IsTrue(result.Count > 0);
        }
Exemplo n.º 2
0
        public async Task Test_Refund_GetRefundsForRepudiation()
        {
            try
            {
                Sort sort = new Sort();
                sort.AddField("CreationDate", SortDirection.desc);

                var _clientDisputes = await Api.Disputes.GetAll(new Pagination(1, 100), null, sort);

                DisputeDTO dispute = _clientDisputes.FirstOrDefault(x => x.InitialTransactionId != null && x.DisputeType.HasValue && x.DisputeType.Value == DisputeType.NOT_CONTESTABLE);

                var temp = await Api.Disputes.GetTransactions(dispute.Id, new Pagination(1, 1), null);

                string repudiationId = temp[0].Id;

                var pagination = new Pagination(1, 1);
                var filter     = new FilterRefunds();

                var refunds = Api.Refunds.GetRefundsForRepudiation(repudiationId, pagination, filter, sort);
            }
            catch (Exception ex)
            {
                Assert.Fail(ex.Message);
            }
        }
Exemplo n.º 3
0
        public async Task Test_GetDocumentConsultations()
        {
            DisputeDTO dispute = _clientDisputes.FirstOrDefault(x => x.Status == DisputeStatus.PENDING_CLIENT_ACTION || x.Status == DisputeStatus.REOPENED_PENDING_CLIENT_ACTION);

            if (dispute == null)
            {
                Assert.Fail("Cannot test creating dispute document page because there's no dispute with expected status in the disputes list.");
            }

            try
            {
                DisputeDocumentPostDTO documentPost = new DisputeDocumentPostDTO(DisputeDocumentType.DELIVERY_PROOF);
                var disputeDocument = await Api.Disputes.CreateDisputeDocument(documentPost, dispute.Id);

                Assembly assembly         = Assembly.GetExecutingAssembly();
                FileInfo assemblyFileInfo = new FileInfo(assembly.Location);
                FileInfo fi    = assemblyFileInfo.Directory.GetFiles("TestKycPageFile.png").Single();
                byte[]   bytes = File.ReadAllBytes(fi.FullName);
                await Api.Disputes.CreateDisputePage(dispute.Id, disputeDocument.Id, bytes);

                var result = await Api.Disputes.GetDocumentConsultations(disputeDocument.Id);

                Assert.AreEqual(1, result.Count);
                Assert.IsInstanceOf <DateTime>(result.First().ExpirationDate);
                Assert.IsInstanceOf <String>(result.First().Url);
                Assert.IsNotEmpty(result.First().Url);
            }
            catch (Exception ex)
            {
                Assert.Fail(ex.Message);
            }
        }
        public void Test_ContestDispute()
        {
            DisputeDTO notContestedDispute = _clientDisputes.FirstOrDefault(x => (x.DisputeType == DisputeType.CONTESTABLE || x.DisputeType == DisputeType.RETRIEVAL) &&
                                                                            (x.Status == DisputeStatus.PENDING_CLIENT_ACTION || x.Status == DisputeStatus.REOPENED_PENDING_CLIENT_ACTION));

            if (notContestedDispute == null)
            {
                Assert.Fail("Cannot test contesting dispute because there's no disputes that can be contested in the disputes list.");
            }

            DisputeDTO result = null;

            try
            {
                Money contestedFunds = notContestedDispute.Status == DisputeStatus.PENDING_CLIENT_ACTION ? new Money {
                    Amount = 100, Currency = CurrencyIso.EUR
                } : null;

                result = Api.Disputes.ContestDispute(contestedFunds, notContestedDispute.Id);
            }
            catch (Exception ex)
            {
                Assert.Fail(ex.Message);
            }

            Assert.IsNotNull(result);
            Assert.AreEqual(result.Id, notContestedDispute.Id);
        }
        public void Test_GetDocumentsForDispute()
        {
            DisputeDTO dispute = _clientDisputes.FirstOrDefault(x => x.Status == DisputeStatus.SUBMITTED);

            if (dispute == null)
            {
                Test_ContestDispute();
                Initialize();

                dispute = _clientDisputes.FirstOrDefault(x => x.Status == DisputeStatus.SUBMITTED);

                if (dispute == null)
                {
                    Assert.Fail("Cannot test getting dispute's documents because there's no available disputes with SUBMITTED status in the disputes list.");
                }
            }

            ListPaginated <DisputeDocumentDTO> result = null;

            try
            {
                result = Api.Disputes.GetDocumentsForDispute(dispute.Id, new Pagination(1, 1), null);
            }
            catch (Exception ex)
            {
                Assert.Fail(ex.Message);
            }

            Assert.IsNotNull(result);
        }
Exemplo n.º 6
0
        public async Task Test_GetRepudiation()
        {
            DisputeDTO dispute = _clientDisputes.FirstOrDefault(x => x.InitialTransactionId != null && x.DisputeType.HasValue && x.DisputeType.Value == DisputeType.NOT_CONTESTABLE);

            RepudiationDTO result = null;

            if (dispute == null)
            {
                Assert.Fail("Cannot test getting repudiation because there's no not contestable disputes with transaction ID in the disputes list.");
            }

            try
            {
                var temp = await Api.Disputes.GetTransactions(dispute.Id, new Pagination(1, 1), null);

                string repudiationId = temp[0].Id;

                result = await Api.Disputes.GetRepudiation(repudiationId);
            }
            catch (Exception ex)
            {
                Assert.Fail(ex.Message);
            }

            Assert.IsNotNull(result);
        }
Exemplo n.º 7
0
        /// <summary>
        /// Reads messages and if they contain data it gets set to appropriate members
        /// </summary>
        private void parseNewMessage(WCFMessage msg)
        {
            if (connected)
            {
                if (msg == null)
                {
                    return;
                }

                myDTO = msg.Data;
                switch (msg.Type)
                {
                case Messages.DTOType.lobby:
                    parseLobbyDTO(msg.Data);
                    break;

                case Messages.DTOType.message:
                    sendFeedback("parseNewMessage", msg.Data.Message);
                    break;

                case Messages.DTOType.match:
                    parseMatchDTO(msg.Data);
                    break;

                default:
                    break;
                }
            }
        }
        public void Test_Idempotency_DisputesRepudiationCreateSettlement()
        {
            string key  = DateTime.Now.Ticks.ToString();
            Sort   sort = new Sort();

            sort.AddField("CreationDate", SortDirection.desc);
            var clientDisputes = Api.Disputes.GetAll(new Pagination(1, 100), null, sort);

            if (clientDisputes == null || clientDisputes.Count == 0)
            {
                Assert.Fail("INITIALIZATION FAILURE - cannot test disputes");
            }
            DisputeDTO dispute = clientDisputes.FirstOrDefault(x =>
                                                               x.Status == DisputeStatus.CLOSED && x.DisputeType == DisputeType.NOT_CONTESTABLE);

            if (dispute == null)
            {
                Assert.Fail(
                    "Cannot test creating settlement transfer because there's no closed disputes in the disputes list.");
            }
            string repudiationId           = Api.Disputes.GetTransactions(dispute.Id, new Pagination(1, 1), null)[0].Id;
            var    repudiation             = Api.Disputes.GetRepudiation(repudiationId);
            SettlementTransferPostDTO post = new SettlementTransferPostDTO(repudiation.AuthorId,
                                                                           new Money {
                Currency = CurrencyIso.EUR, Amount = 1
            }, new Money {
                Currency = CurrencyIso.EUR, Amount = 0
            });

            Api.Disputes.CreateSettlementTransfer(key, post, repudiationId);

            var result = Api.Idempotency.Get(key);

            Assert.IsInstanceOf <SettlementDTO>(result.Resource);
        }
        public void Test_SubmitDisputeDocument()
        {
            DisputeDTO         dispute         = null;
            DisputeDocumentDTO disputeDocument = null;

            FilterDisputeDocuments filter = new FilterDisputeDocuments();

            filter.Status = DisputeDocumentStatus.CREATED;

            // search for dispute having any documents created
            foreach (DisputeDTO d in _clientDisputes.Where(x => x.Status == DisputeStatus.PENDING_CLIENT_ACTION || x.Status == DisputeStatus.REOPENED_PENDING_CLIENT_ACTION))
            {
                DisputeDocumentDTO dd = Api.Disputes.GetDocumentsForDispute(d.Id, new Pagination(1, 1), filter).FirstOrDefault();

                if (dd != null)
                {                // found
                    dispute         = d;
                    disputeDocument = dd;
                    break;
                }
            }

            if (dispute == null)
            {
                dispute = _clientDisputes.FirstOrDefault(x => x.Status == DisputeStatus.PENDING_CLIENT_ACTION || x.Status == DisputeStatus.REOPENED_PENDING_CLIENT_ACTION);

                if (dispute == null)
                {
                    Assert.Fail("Cannot test submitting dispute's documents because there's no dispute with expected status in the disputes list.");
                }

                DisputeDocumentPostDTO documentPost = new DisputeDocumentPostDTO(DisputeDocumentType.DELIVERY_PROOF);
                disputeDocument = Api.Disputes.CreateDisputeDocument(documentPost, dispute.Id);
            }

            DisputeDocumentDTO result = null;

            try
            {
                if (disputeDocument == null)
                {
                    Assert.Fail("Cannot test submitting dispute's documents because there's no dispute document that can be updated.");
                }

                DisputeDocumentPutDTO disputeDocumentPut = new DisputeDocumentPutDTO
                {
                    Status = DisputeDocumentStatus.VALIDATION_ASKED
                };

                result = Api.Disputes.SubmitDisputeDocument(disputeDocumentPut, dispute.Id, disputeDocument.Id);
            }
            catch (Exception ex)
            {
                Assert.Fail(ex.Message);
            }

            Assert.IsNotNull(result);
            Assert.IsTrue(disputeDocument.Type == result.Type);
            Assert.IsTrue(result.Status == DisputeDocumentStatus.VALIDATION_ASKED);
        }
        public void Test_CreateSettlementTransfer()
        {
            DisputeDTO dispute = _clientDisputes.FirstOrDefault(x => x.Status == DisputeStatus.CLOSED && x.DisputeType == DisputeType.NOT_CONTESTABLE);

            RepudiationDTO repudiation = null;
            SettlementDTO  result      = null;

            if (dispute == null)
            {
                Assert.Fail("Cannot test creating settlement transfer because there's no closed disputes in the disputes list.");
            }

            try
            {
                string repudiationId = Api.Disputes.GetTransactions(dispute.Id, new Pagination(1, 1), null)[0].Id;

                repudiation = Api.Disputes.GetRepudiation(repudiationId);

                SettlementTransferPostDTO post = new SettlementTransferPostDTO(repudiation.AuthorId, new Money {
                    Currency = CurrencyIso.EUR, Amount = 1
                }, new Money {
                    Currency = CurrencyIso.EUR, Amount = 0
                });

                result = Api.Disputes.CreateSettlementTransfer(post, repudiationId);
            }
            catch (Exception ex)
            {
                Assert.Fail(ex.Message);
            }

            Assert.IsNotNull(result);
        }
Exemplo n.º 11
0
        public async Task Test_GetDisputesForWallet()
        {
            DisputeDTO dispute = _clientDisputes.FirstOrDefault(x => x.InitialTransactionId != null);

            if (dispute == null)
            {
                Assert.Fail("Cannot test getting disputes for wallet because there's no disputes with transaction ID in the disputes list.");
            }

            ListPaginated <DisputeDTO> result = null;

            try
            {
                var temp = await Api.PayIns.Get(dispute.InitialTransactionId);

                string walletId = temp.CreditedWalletId;

                result = await Api.Disputes.GetDisputesForWallet(walletId, new Pagination(1, 10), null);
            }
            catch (Exception ex)
            {
                Assert.Fail(ex.Message);
            }

            Assert.IsNotNull(result);
        }
        public void Test_GetDocument()
        {
            DisputeDTO dispute = _clientDisputes.FirstOrDefault(x => x.Status == DisputeStatus.PENDING_CLIENT_ACTION || x.Status == DisputeStatus.REOPENED_PENDING_CLIENT_ACTION);

            if (dispute == null)
            {
                Assert.Fail("Cannot test getting dispute's document because there's no dispute with expected status in the disputes list.");
            }

            DisputeDocumentDTO document = null;
            DisputeDocumentDTO result   = null;

            try
            {
                DisputeDocumentPostDTO documentPost = new DisputeDocumentPostDTO(DisputeDocumentType.OTHER);
                document = Api.Disputes.CreateDisputeDocument(documentPost, dispute.Id);

                result = Api.Disputes.GetDocument(document.Id);
            }
            catch (Exception ex)
            {
                Assert.Fail(ex.Message);
            }

            Assert.IsNotNull(result);
            Assert.AreEqual(result.CreationDate, document.CreationDate);
            Assert.AreEqual(result.Id, document.Id);
            Assert.AreEqual(result.RefusedReasonMessage, document.RefusedReasonMessage);
            Assert.AreEqual(result.RefusedReasonType, document.RefusedReasonType);
            Assert.AreEqual(result.Status, document.Status);
            Assert.AreEqual(result.Tag, document.Tag);
            Assert.AreEqual(result.Type, document.Type);
            Assert.AreEqual(result.DisputeId, document.DisputeId);
        }
        public void Test_CreateDisputePage()
        {
            DisputeDTO dispute = _clientDisputes.FirstOrDefault(x => x.Status == DisputeStatus.PENDING_CLIENT_ACTION || x.Status == DisputeStatus.REOPENED_PENDING_CLIENT_ACTION);

            if (dispute == null)
            {
                Assert.Fail("Cannot test creating dispute document page because there's no dispute with expected status in the disputes list.");
            }

            DisputeDocumentDTO result = null;

            try
            {
                DisputeDocumentPostDTO documentPost = new DisputeDocumentPostDTO(DisputeDocumentType.DELIVERY_PROOF);
                result = Api.Disputes.CreateDisputeDocument(documentPost, dispute.Id);

                Api.Disputes.CreateDisputePage(dispute.Id, result.Id, "TestKycPageFile.png");
            }
            catch (Exception ex)
            {
                Assert.Fail(ex.Message);
            }

            Assert.IsNotNull(result);
            Assert.AreEqual(result.Type, DisputeDocumentType.DELIVERY_PROOF);
        }
Exemplo n.º 14
0
        public DisputeDTO getMatchDTO(Match m)
        {
            DisputeDTO DTO = new DisputeDTO()
            {
                Match = m, Message = Messages.GameMessages.UpdateMatch
            };

            return(DTO);
        }
Exemplo n.º 15
0
        public DisputeDTO getLobbyDTO()
        {
            DisputeDTO DTO = new DisputeDTO()
            {
                Matches = this.Matches, Players = this.players
            };

            return(DTO);
        }
Exemplo n.º 16
0
        public async Task Test_GetSettlementTransfer()
        {
            DisputeDTO dispute = _clientDisputes.FirstOrDefault(x => x.Status == DisputeStatus.CLOSED && x.DisputeType.HasValue && x.DisputeType.Value == DisputeType.NOT_CONTESTABLE);

            RepudiationDTO repudiation = null;
            SettlementDTO  transfer    = null;

            if (dispute == null)
            {
                Assert.Fail("Cannot test getting settlement transfer because there's no closed and not contestable disputes in the disputes list.");
            }

            try
            {
                var temp = await Api.Disputes.GetTransactions(dispute.Id, new Pagination(1, 1), null);

                string repudiationId = temp[0].Id;

                repudiation = await Api.Disputes.GetRepudiation(repudiationId);

                SettlementTransferPostDTO post = new SettlementTransferPostDTO(repudiation.AuthorId, new Money {
                    Currency = CurrencyIso.EUR, Amount = 1
                }, new Money {
                    Currency = CurrencyIso.EUR, Amount = 0
                });

                transfer = await Api.Disputes.CreateSettlementTransfer(post, repudiationId);
            }
            catch (Exception ex)
            {
                Assert.Fail(ex.Message);
            }

            Assert.IsNotNull(transfer);


            SettlementDTO result = null;

            try
            {
                result = await Api.Disputes.GetSettlementTransfer(transfer.Id);
            }
            catch (Exception ex)
            {
                Assert.Fail(ex.Message);
            }

            Assert.IsNotNull(result);
            Assert.IsInstanceOf <SettlementDTO>(result);
            Assert.IsNotNull(result.RepudiationId);
            Assert.AreEqual(result.RepudiationId, repudiation.Id);
        }
        public void Test_GetDispute()
        {
            DisputeDTO dispute = null;

            try
            {
                dispute = Api.Disputes.Get(_clientDisputes[0].Id);
            }
            catch (Exception ex)
            {
                Assert.Fail(ex.Message);
            }

            Assert.IsNotNull(dispute);
            Assert.AreEqual(dispute.Id, _clientDisputes[0].Id);
        }
        public void Test_SaveTag()
        {
            DisputeDTO result = null;

            string newTag = "New tag: " + DateTime.UtcNow.Ticks.ToString();

            try
            {
                result = Api.Disputes.UpdateTag(newTag, _clientDisputes[0].Id);
            }
            catch (Exception ex)
            {
                Assert.Fail(ex.Message);
            }

            Assert.IsNotNull(result);
            Assert.AreEqual(result.Tag, newTag);
        }
Exemplo n.º 19
0
        /// <summary>
        /// This method is used to get messages from the Model layer (GameDispute), and pass them on to the players.
        ///
        /// </summary>
        /// <param name="msg"></param>
        /// <param name="player"></param>
        /// <param name="data"></param>
        void IGameObserver.update(DataPlayer player, Messages.GameMessages msg, List <object> data)
        {
            DisputeDTO dto = null;

            switch (msg)
            {
            case Messages.GameMessages.GetSOM:
                dto = new DisputeDTO()
                {
                    SomRequest = (SoMRequest)data[0], Message = Messages.GameMessages.GetSOM
                };
                goto case Messages.GameMessages.none;

            case Messages.GameMessages.ArgumentDone:
                break;

            case Messages.GameMessages.GameOver:
                dto = new DisputeDTO()
                {
                    Message = Messages.GameMessages.GameOver
                };
                goto case Messages.GameMessages.none;

            case Messages.GameMessages.NotPlayerTurn:
                dto = new DisputeDTO()
                {
                    Message = Messages.GameMessages.NotPlayerTurn
                };
                goto case Messages.GameMessages.none;

            case Messages.GameMessages.none:
                this.MyMessages[player.PlayerName].Add(new WCFMessage()
                {
                    Player = player,
                    Type   = Messages.DTOType.match,
                    Data   = dto
                });
                break;

            default:
                break;
            }
        }
        public void Test_CloseDispute()
        {
            DisputeDTO dispute = _clientDisputes.FirstOrDefault(x => x.Status == DisputeStatus.PENDING_CLIENT_ACTION || x.Status == DisputeStatus.REOPENED_PENDING_CLIENT_ACTION);

            if (dispute == null)
            {
                Assert.Fail("Cannot test closing dispute because there's no available disputes with expected status in the disputes list.");
            }

            DisputeDTO result = null;

            try
            {
                result = Api.Disputes.CloseDispute(dispute.Id);
            }
            catch (Exception ex)
            {
                Assert.Fail(ex.Message);
            }

            Assert.IsNotNull(result);
        }
Exemplo n.º 21
0
        /// <summary>
        /// Decision Maker when game is playing.Gets messages from server and decides what to do with them
        /// </summary>
        /// <param name="disputeDTO"></param>
        private void parseMatchDTO(DisputeDTO disputeDTO)
        {
            Messages.GameMessages dtoMessage = disputeDTO.Message;
            serverMessage = dtoMessage;
            switch (dtoMessage)
            {
            case Messages.GameMessages.StartingMatch:
                this.inMatch = disputeDTO.Match;
                viewMessage  = Messages.LobbyViewMessage.StartGame;
                break;

            case Messages.GameMessages.ArgumentDone:
                this.inMatch = disputeDTO.Match;
                break;

            case Messages.GameMessages.GetSOM:
                serverMessage = dtoMessage;    //this was already done above but just emphasize
                myDTO         = disputeDTO;
                break;

            case Messages.GameMessages.NotPlayerTurn:
                sendFeedback("parseMatchDTO", dtoMessage);
                break;

            case Messages.GameMessages.UpdateMatch:
                this.inMatch = disputeDTO.Match;
                break;

            case Messages.GameMessages.stillAlive:
                this.inMatch = disputeDTO.Match;
                break;

            case Messages.GameMessages.GameOver:

                serverMessage = dtoMessage;    //this was already done above but just emphasize
                break;
            }
        }
        public void Test_GetTransactions()
        {
            DisputeDTO dispute = _clientDisputes.FirstOrDefault(x => x.DisputeType.HasValue && x.DisputeType.Value == DisputeType.NOT_CONTESTABLE);

            if (dispute == null)
            {
                Assert.Fail("Cannot test getting transactions for dispute there's no not contestable disputes in the disputes list.");
            }

            ListPaginated <TransactionDTO> result = null;

            try
            {
                result = Api.Disputes.GetTransactions(dispute.Id, new Pagination(1, 10), null);
            }
            catch (Exception ex)
            {
                Assert.Fail(ex.Message);
            }

            Assert.IsNotNull(result);
            Assert.IsTrue(result.Count > 0);
        }
        public void Test_ResubmitDispute()
        {
            DisputeDTO dispute = _clientDisputes.FirstOrDefault(x => x.Status == DisputeStatus.REOPENED_PENDING_CLIENT_ACTION);

            DisputeDTO result = null;

            if (dispute == null)
            {
                Assert.Fail("Cannot test resubmitting dispute because there's no re-opened disputes in the disputes list.");
            }

            try
            {
                result = Api.Disputes.ResubmitDispute(dispute.Id);
            }
            catch (Exception ex)
            {
                Assert.Fail(ex.Message);
            }

            Assert.IsNotNull(result);
            Assert.IsTrue(result.Status == DisputeStatus.SUBMITTED);
        }
Exemplo n.º 24
0
 /// <summary>
 /// Gets messages from server when in lobby. It basically just sets Matches data.
 /// </summary>
 /// <param name="dto"></param>
 void parseLobbyDTO(DisputeDTO dto)
 {
     this.matches = dto.Matches;
     this.Players = dto.Players;
     this.player  = this.Players.Find(n => n.PlayerName.Equals(player.PlayerName));
 }