示例#1
0
        public async Task Session_Insert_Find()
        {
            // Arrange
            var insertSessionJsonDto = new InsertSessionJsonDto()
            {
                ProducerId = "1111",
                RequestId  = "2222",
                SessionId  = 3333,
                Timestamp  = 444444444444
            };

            // Act
            await _jsonApiController.Insert(insertSessionJsonDto);

            // Assert
            var findSessionJsonDto = new FindSessionJsonDto()
            {
                RequestId = insertSessionJsonDto.RequestId,
                SessionId = insertSessionJsonDto.SessionId
            };

            var findActionResult = await _jsonApiController.Find(findSessionJsonDto);

            var userSession = (UserSession)((OkObjectResult)findActionResult).Value;

            Assert.Equal(insertSessionJsonDto.ProducerId, userSession.Player.ToString());
            Assert.Equal(insertSessionJsonDto.RequestId, userSession.RequestId);
            Assert.Equal(insertSessionJsonDto.SessionId, userSession.SessionId);
            Assert.Equal(insertSessionJsonDto.Timestamp, userSession.Timestamp);

            // Asserts for StatisticsApiController

            var getSessionsActionResult = (await _statisticsApiController.GetSessions(insertSessionJsonDto.ProducerId)).Result;
            var sessions = (List <long>)((OkObjectResult)getSessionsActionResult).Value;

            Assert.Single(sessions);
            Assert.Equal(insertSessionJsonDto.SessionId, sessions[0]);
        }
示例#2
0
        public async Task <ActionResult> Insert(InsertSessionJsonDto sessionCommand)
        {
            var userSession = new UserSession()
            {
                RequestId = sessionCommand.RequestId,
                Player    = int.Parse(sessionCommand.ProducerId),
                SessionId = sessionCommand.SessionId,
                Timestamp = sessionCommand.Timestamp
            };

            (_, var isNew) = await _sessionService.CreateSession(userSession, _sessionConfiguration.TTL);

            if (!isNew)
            {
                return(Ok(new JsonApiError()
                {
                    ErrorCode = ErrorCodeEnum.SessionAlreadyExists
                }));
            }

            await _statisticsService.LogSessionPerUser(sessionCommand.ProducerId, sessionCommand.SessionId, DateTimeOffset.Now.ToUnixTimeSeconds() + _sessionConfiguration.TTL);

            return(Ok());
        }