Пример #1
0
        public async Task Test_Can_Get_Name_From_Character_Id([Range(1, 20)] int count)
        {
            //arrange
            IServiceProvider    serviceProvider = BuildServiceProvider <CharacterController>("Test", 1);
            CharacterController controller      = serviceProvider.GetService <CharacterController>();

            List <string> names = await AddTestValuesToRepository(count, serviceProvider, 2);

            List <string> resultQueryNames = new List <string>(count);

            //assert
            for (int i = 1; i < count + 1; i++)
            {
                NameQueryResponse nameQueryResponse = ControllerTestsHelpers.GetActionResultObject <NameQueryResponse>(await controller.NameQuery(i));
                Assert.True(nameQueryResponse.isSuccessful);
                Assert.NotNull(nameQueryResponse.EntityName);
                resultQueryNames.Add(nameQueryResponse.EntityName);
            }

            //Check that each inserted name is available in the total query results
            foreach (string s in names)
            {
                Assert.True(resultQueryNames.Contains(s));
            }
        }
        public static async Task Test_Controller_Produces_AlreadyHasActiveSession_When_Session_Has()
        {
            //arrange
            IServiceProvider            serviceProvider = ControllerTestsHelpers.BuildServiceProvider <CharacterSessionController>("Test", 1);
            CharacterSessionController  controller      = serviceProvider.GetService <CharacterSessionController>();
            ICharacterRepository        characterRepo   = serviceProvider.GetService <ICharacterRepository>();
            ICharacterSessionRepository sessionRepo     = serviceProvider.GetService <ICharacterSessionRepository>();

            await characterRepo.TryCreateAsync(new CharacterEntryModel(1, "Testing"));

            await sessionRepo.TryCreateAsync(new CharacterSessionModel(1, 0));

            //We can't create the claimed session through this interface because it's a stored procedure.
            //Raw SQL can't execute. So we must interact directly with the DbSet
            //await sessionRepo.TryClaimUnclaimedSession(1, 1);
            CharacterDatabaseContext context = serviceProvider.GetService <CharacterDatabaseContext>();
            await context.ClaimedSession.AddAsync(new ClaimedSessionsModel(1));

            await context.SaveChangesAsync();

            //act
            CharacterSessionEnterResponse response = await controller.EnterSession(1);

            //assert
            Assert.False(response.isSuccessful, $"Characters that already have ");
            Assert.AreEqual(CharacterSessionEnterResponseCode.AccountAlreadyHasCharacterSession, response.ResultCode);
        }
        public static async Task Test_Controller_Produces_InvalidId_When_Empty()
        {
            //arrange
            IServiceProvider           serviceProvider = ControllerTestsHelpers.BuildServiceProvider <CharacterSessionController>("Test", 1);
            CharacterSessionController controller      = serviceProvider.GetService <CharacterSessionController>();

            //act
            CharacterSessionEnterResponse response = await controller.EnterSession(5);

            //assert
            Assert.False(response.isSuccessful);
            Assert.AreEqual(CharacterSessionEnterResponseCode.InvalidCharacterIdError, response.ResultCode);
        }
Пример #4
0
        public async Task Test_Can_Create_Character(string name)
        {
            //arrange
            IServiceProvider    serviceProvider = BuildServiceProvider <CharacterController>("Test", 1);
            CharacterController controller      = serviceProvider.GetService <CharacterController>();

            //act
            CharacterCreationResponse result = ControllerTestsHelpers.GetActionResultObject <CharacterCreationResponse>(await controller.CreateCharacter(name));

            //assert
            Assert.True(result.isSuccessful);
            Assert.True(result.ResultCode == CharacterCreationResponseCode.Success);
        }
Пример #5
0
        public async Task Test_Cannot_Create_Character_With_Duplicate_Name(string name)
        {
            //arrange
            IServiceProvider    serviceProvider = BuildServiceProvider <CharacterController>("Test", 1);
            CharacterController controller      = serviceProvider.GetService <CharacterController>();

            //act
            await controller.CreateCharacter(name);

            CharacterCreationResponse result = ControllerTestsHelpers.GetActionResultObject <CharacterCreationResponse>(await controller.CreateCharacter(name));

            //assert
            Assert.False(result.isSuccessful);
            Assert.AreEqual(CharacterCreationResponseCode.NameUnavailableError, result.ResultCode);
        }
Пример #6
0
        public async Task Test_Validate_Character_Name_Passes_On_AlreadyExisting_Character_If_The_Names_Are_Different(string name)
        {
            //arrange
            IServiceProvider    serviceProvider = BuildServiceProvider <CharacterController>("Test", 1);
            CharacterController controller      = serviceProvider.GetService <CharacterController>();

            //act
            await serviceProvider.GetService <ICharacterRepository>().TryCreateAsync(new CharacterEntryModel(1, $"{name}Z"));

            CharacterNameValidationResponse result = ControllerTestsHelpers.GetActionResultObject <CharacterNameValidationResponse>(await controller.ValidateCharacterName(name));

            //assert
            Assert.True(result.isSuccessful);
            Assert.True(result.ResultCode == CharacterNameValidationResponseCode.Success);
        }
Пример #7
0
        public async Task Test_Validate_Character_Name_Fails_On_AlreadyExisting_Character(string name)
        {
            //arrange
            IServiceProvider    serviceProvider = BuildServiceProvider <CharacterController>("Test", 1);
            CharacterController controller      = serviceProvider.GetService <CharacterController>();

            //act
            await serviceProvider.GetService <ICharacterRepository>().TryCreateAsync(new CharacterEntryModel(1, name));

            CharacterNameValidationResponse result = ControllerTestsHelpers.GetActionResultObject <CharacterNameValidationResponse>(await controller.ValidateCharacterName(name));

            //assert
            Assert.False(result.isSuccessful, $"Response for name validation should be false when the name is taken.");
            Assert.True(result.ResultCode == CharacterNameValidationResponseCode.NameIsUnavailable);
        }
Пример #8
0
        public async Task Test_Can_Not_NameQuery_Unknown_Ids(int keyToCheck)
        {
            //arrange
            IServiceProvider    serviceProvider = BuildServiceProvider <CharacterController>("Test", 1);
            CharacterController controller      = serviceProvider.GetService <CharacterController>();
            List <string>       names           = await AddTestValuesToRepository(20, serviceProvider, 2);

            //act
            NameQueryResponse result = ControllerTestsHelpers.GetActionResultObject <NameQueryResponse>(await controller.NameQuery(keyToCheck));

            //assert
            Assert.False(result.isSuccessful);
            Assert.True(result.ResultCode == NameQueryResponseCode.UnknownIdError);
            Assert.True(String.IsNullOrWhiteSpace(result.EntityName));
        }
        public static async Task Test_Controller_Creates_UnclaimedSession_On_OnEnterSession(int accountId)
        {
            //arrange
            IServiceProvider           serviceProvider = ControllerTestsHelpers.BuildServiceProvider <CharacterSessionController>("Test", accountId);
            CharacterSessionController controller      = serviceProvider.GetService <CharacterSessionController>();
            ICharacterRepository       characterRepo   = serviceProvider.GetService <ICharacterRepository>();

            await characterRepo.TryCreateAsync(new CharacterEntryModel(accountId, "Testing"));

            //act: We also test that we can do it multiple times
            CharacterSessionEnterResponse response = await controller.EnterSession(1);

            //assert
            Assert.True(response.isSuccessful);
            Assert.AreEqual(CharacterSessionEnterResponseCode.Success, response.ResultCode);
        }
        public static async Task Test_Controller_Produces_InvalidId_When_Wrong_AccountId()
        {
            //arrange
            IServiceProvider            serviceProvider = ControllerTestsHelpers.BuildServiceProvider <CharacterSessionController>("Test", 2);
            CharacterSessionController  controller      = serviceProvider.GetService <CharacterSessionController>();
            ICharacterRepository        characterRepo   = serviceProvider.GetService <ICharacterRepository>();
            ICharacterSessionRepository sessionRepo     = serviceProvider.GetService <ICharacterSessionRepository>();

            await characterRepo.TryCreateAsync(new CharacterEntryModel(1, "Testing"));

            await sessionRepo.TryCreateAsync(new CharacterSessionModel(1, 0));

            //act
            CharacterSessionEnterResponse response = await controller.EnterSession(1);

            //assert
            Assert.False(response.isSuccessful, $"Characters should not be able to create sessions when the accountid doesn't match.");
            Assert.AreEqual(response.ResultCode, CharacterSessionEnterResponseCode.InvalidCharacterIdError);
        }
        public static async Task Test_Controller_Produces_SessionGranted_With_Zone_Id_If_UnclaimedSession_Exists(int accountId, int zoneid)
        {
            //arrange
            IServiceProvider            serviceProvider = ControllerTestsHelpers.BuildServiceProvider <CharacterSessionController>("Test", accountId);
            CharacterSessionController  controller      = serviceProvider.GetService <CharacterSessionController>();
            ICharacterRepository        characterRepo   = serviceProvider.GetService <ICharacterRepository>();
            ICharacterSessionRepository sessionRepo     = serviceProvider.GetService <ICharacterSessionRepository>();

            await characterRepo.TryCreateAsync(new CharacterEntryModel(accountId, "Testing"));

            await sessionRepo.TryCreateAsync(new CharacterSessionModel(1, zoneid));

            //act
            CharacterSessionEnterResponse response = await controller.EnterSession(1);

            //assert
            Assert.True(response.isSuccessful, $"Created sessions should be granted if no active account session or character session is claimed.");
            Assert.AreEqual(CharacterSessionEnterResponseCode.Success, response.ResultCode);
            Assert.AreEqual(zoneid, response.ZoneId, $"Provided zone id was not the same as the session.");
        }