Esempio n. 1
0
        public void Should_Join_Table_In_First_Empty_Seat()
        {
            //private key 91xCHwaMdufE8fmxachVhU12wdTjY7nGbZeGgjx4JQSuSDNizhf

            Guid tableId = new Guid("be7514a3-e73c-4f95-ba26-c398641eea5c");

            _controller.TableRepo = new Repository.MockTableRepo();

            NBitcoin.BitcoinSecret  secret  = new NBitcoin.BitcoinSecret("91xCHwaMdufE8fmxachVhU12wdTjY7nGbZeGgjx4JQSuSDNizhf", NBitcoin.Network.TestNet);
            NBitcoin.BitcoinAddress address = secret.GetAddress();

            Models.Messages.JoinTableRequest request = new Models.Messages.JoinTableRequest()
            {
                Id             = new Guid(REQUEST_ID),
                BitcoinAddress = address.ToString(),
                TableId        = tableId,
                TimeStamp      = new DateTime(2016, 12, 12),
                PublicKey      = secret.PubKey.ToString(),
                Version        = 1
            };

            Models.Messages.JoinTableResponse response = _controller.JoinTable(request);

            Assert.IsNotNull(response);
            Assert.AreEqual(1, response.Seat);
        }
Esempio n. 2
0
        private Models.Messages.JoinTableResponse JoinTable(Models.Messages.JoinTableRequest request)
        {
            Models.Messages.JoinTableResponse response = new Models.Messages.JoinTableResponse();
            var table = this.TableRepo.Find(request.TableId);

            if (table != null && table.Peers[request.Seat] == null)
            {
                //for (Int32 i = 0; i < table.MaxPlayers; i++)
                //{
                //    if (table.Peers[i] == null)
                //    {
                //        response.Seat = i;
                //        break;
                //    }
                //}

                response.Seat = request.Seat;

                return(response);
            }
            else
            {
                throw new ArgumentException("Table id not found");
            }
        }
Esempio n. 3
0
        public Models.Messages.JoinTableResponse Post(Models.Messages.JoinTableRequest request)
        {
            if (base.Verify(request.BitcoinAddress, request.ToString(), request.Signature) == true)
            {
                Models.Messages.JoinTableResponse response = new Models.Messages.JoinTableResponse();
                Models.Contracts.Table            table    = this.TableRepo.Find(request.TableId);

                if (table != null)
                {
                    for (Int32 i = 0; i < table.MaxPlayers; i++)
                    {
                        if (table.Peers[i] == null)
                        {
                            response.Seat  = i;
                            table.Peers[i] = new Models.Peer()
                            {
                                BitcoinAddress = request.BitcoinAddress,
                                NetworkAddress = request.NetworkAddress,
                                UserAgent      = request.UserAgent
                            };

                            TableRepo.Update(table);

                            break;
                        }
                    }

                    response.Seat = request.Seat;

                    return(response);
                }
                else
                {
                    throw new ArgumentException("Table id not found");
                }
            }
            else
            {
                throw new ArgumentException("Invalid signature");
            }
        }
Esempio n. 4
0
        public void Should_Join_Table_In_Seat_2()
        {
            //private key 93GnRYsUXD4FPCiV46n8vqKvwHSZQgjnyuBvhNtqRvq3Ac26kVc

            Guid tableId = new Guid("d6d9890d-0ca2-4b5d-ae98-fa4d45eb4363");

            _controller.TableRepo = new Repository.Mocks.TableRepository

                                    Models.Messages.JoinTableRequest request = new Models.Messages.JoinTableRequest()
            {
                Id             = new Guid(REQUEST_ID),
                BitcoinAddress = "n4HzHsTzz4kku4X21yaG1rjbqtVNDBsyKZ",
                TableId        = tableId,
                TimeStamp      = new DateTime(2016, 12, 12),
                Seat           = 2,
                Version        = 1
            };

            Models.Messages.JoinTableResponse response = _controller.JoinTable(request);

            Assert.IsNotNull(response);
            Assert.AreEqual(2, response.Seat);
        }
Esempio n. 5
0
        public void Should_Join_Table_In_Seat_2()
        {
            Guid tableId = new Guid(TABLE_ID);

            _controller.TableRepo = new Repository.Mocks.TableRepository();

            Models.Messages.JoinTableRequest request = new Models.Messages.JoinTableRequest()
            {
                Id             = new Guid(REQUEST_ID),
                BitcoinAddress = BITCOIN_ADDRESS_1,
                TableId        = tableId,
                TimeStamp      = new DateTime(2016, 12, 12),
                Seat           = 2,
                Version        = 1
            };

            NBitcoin.BitcoinSecret secret = new NBitcoin.BitcoinSecret(PRIVATE_KEY, NBitcoin.Network.TestNet);
            request.Signature = secret.PrivateKey.SignMessage(request.ToString());

            Models.Messages.JoinTableResponse response = null;             //_controller.Post(request);

            Assert.IsNotNull(response);
            Assert.AreEqual(2, response.Seat);
        }