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"); } }
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.Mocks.TableRepository(); 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 = null; // = _controller.Join(request); Assert.IsNotNull(response); Assert.AreEqual(1, response.Seat); }
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"); } }
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); }
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); }