Пример #1
0
        public async Task <IActionResult> RestartGame([FromBody] P2PGameKeyDto dto)
        {
            if (string.IsNullOrWhiteSpace(dto.Code))
            {
                return(BadRequest());
            }

            if (string.IsNullOrWhiteSpace(dto.ConnectionId))
            {
                return(BadRequest());
            }

            PeerToPeerSessionState session = await _p2pSvc.FindActiveSessionAsync(dto.Code, dto.ConnectionId);

            if (session == null)
            {
                return(BadRequest());
            }

            //only host can restart game for now
            if (dto.ConnectionId != session.HostConnectionId)
            {
                return(BadRequest());
            }

            session = await _p2pSvc.RestartGameAsync(session);

            await _gameHubContext.Clients.Client(session.FriendConnectionId).SendAsync("RestartGame");

            return(Ok(new { }));
        }
        public async Task JoinSessionTest_Ok()
        {
            P2PGameKeyDto dto = new P2PGameKeyDto()
            {
                Code = "12345", ConnectionId = "123"
            };

            var p2pSvc = new Mock <IPeerToPeerGameService>();

            p2pSvc.Setup(x => x.JoinSessionAsync(It.IsAny <string>(), It.IsAny <string>()))
            .ReturnsAsync(new PeerToPeerSessionState()
            {
                Code = "12345", HostConnectionId = "c1", FriendConnectionId = "c2"
            });

            var controller = new PeerToPeerGameController(p2pSvc.Object, _mapper, _signalRHub.Object, _logger.Object);

            var output = await controller.JoinSession(dto);

            p2pSvc.Verify(p => p.JoinSessionAsync(It.IsAny <string>(), It.IsAny <string>()), Times.Once);

            _signalRHub.VerifyGet(p => p.Clients, Times.Once);

            Assert.AreEqual(output.GetType(), typeof(OkObjectResult));
        }
        public async Task StartNewGame_BadRequest_3()
        {
            P2PGameKeyDto dto = new P2PGameKeyDto();

            var p2pSvc = new Mock <IPeerToPeerGameService>();

            var controller = new PeerToPeerGameController(p2pSvc.Object, _mapper, _signalRHub.Object, _logger.Object);

            var output = await controller.StartNewGame(new P2PNewGametDto { Code = "12345", ConnectionId = "c1", Ships = null });

            Assert.AreEqual(output.GetType(), typeof(BadRequestResult));
        }
        public async Task FireCannonProcessResult_BadRequest_2()
        {
            P2PGameKeyDto dto = new P2PGameKeyDto();

            var p2pSvc = new Mock <IPeerToPeerGameService>();

            var controller = new PeerToPeerGameController(p2pSvc.Object, _mapper, _signalRHub.Object, _logger.Object);

            var output = await controller.FireCannonProcessResult(new P2PFireCannonCallbackDto { Code = "12345", ConnectionId = null });

            _signalRHub.VerifyGet(p => p.Clients, Times.Never);

            Assert.AreEqual(output.GetType(), typeof(BadRequestResult));
        }
        public async Task StartNewGame_BadRequest_4()
        {
            P2PGameKeyDto dto = new P2PGameKeyDto();

            var p2pSvc = new Mock <IPeerToPeerGameService>();

            p2pSvc.Setup(x => x.AddPeerToSession(It.IsAny <string>(), It.IsAny <string>(), It.IsAny <IEnumerable <ShipInfo> >()))
            .ReturnsAsync((PeerToPeerSessionState)null);

            var controller = new PeerToPeerGameController(p2pSvc.Object, _mapper, _signalRHub.Object, _logger.Object);

            var output = await controller.StartNewGame(new P2PNewGametDto { Code = "12345", ConnectionId = "c1", Ships = new ClientShipDto[10] });

            Assert.AreEqual(output.GetType(), typeof(BadRequestResult));
        }
        public async Task FireCannonProcessResult_BadRequest_3()
        {
            P2PGameKeyDto dto = new P2PGameKeyDto();

            var p2pSvc = new Mock <IPeerToPeerGameService>();

            p2pSvc.Setup(x => x.AddPeerToSession(It.IsAny <string>(), It.IsAny <string>(), It.IsAny <IEnumerable <ShipInfo> >()))
            .ReturnsAsync((PeerToPeerSessionState)null);

            var controller = new PeerToPeerGameController(p2pSvc.Object, _mapper, _signalRHub.Object, _logger.Object);

            var output = await controller.FireCannonProcessResult(new P2PFireCannonCallbackDto { Code = "12345", ConnectionId = "c1" });

            _signalRHub.VerifyGet(p => p.Clients, Times.Never);

            Assert.AreEqual(output.GetType(), typeof(BadRequestResult));
        }
Пример #7
0
        public async Task <IActionResult> JoinSession([FromBody] P2PGameKeyDto dto)
        {
            if (string.IsNullOrWhiteSpace(dto.ConnectionId))
            {
                return(BadRequest());
            }

            PeerToPeerSessionState g = await _p2pSvc.JoinSessionAsync(dto.Code, dto.ConnectionId);

            if (g == null)
            {
                return(BadRequest());
            }

            if (dto.ConnectionId == g.HostConnectionId)
            {
                return(BadRequest());
            }

            await _gameHubContext.Clients.Client(g.HostConnectionId).SendAsync("FriendConnected");

            return(Ok(new { }));
        }