public WebHookReceberPagamentoSteps(
     ScenarioContext context,
     IntegrationTestsFixture <Startup> testsFixture)
 {
     _context      = context;
     _testsFixture = testsFixture;
 }
Beispiel #2
0
        public async Task VolunteersController_CantDelete_RemoveVolunteerAssign(UserRoleEnum role)
        {
            // Arrange
            IntegrationTestsFixture.SetUserContext(new User {
                Role = role
            });
            var dream = _fixture.DreamBuilder().WithNewCategory().Create();
            var user  = _fixture.VolunteerBuilder().Create();

            await IntegrationTestsFixture.DatabaseContext.Dreams.AddAsync(dream);

            await IntegrationTestsFixture.DatabaseContext.Users.AddAsync(user);

            await IntegrationTestsFixture.DatabaseContext.AssignedDreams.AddAsync(new AssignedDreams { Dream = dream, Volunteer = user });

            await IntegrationTestsFixture.DatabaseContext.SaveChangesAsync();

            // Act
            var response = await Client.DeleteAsync(CreateDeleteUrl(user.UserId, dream.DreamId));

            var existingAssign = await IntegrationTestsFixture.DatabaseContext.AssignedDreams.FirstOrDefaultAsync();

            // Assert
            response.IsSuccessStatusCode.Should().BeFalse();
            existingAssign.Should().NotBeNull();
        }
Beispiel #3
0
        public ProdutoIntegrationTests(IntegrationTestsFixture <StartupTests> testsFixture, ProdutoTestsFixture produtoTestsFixture)
        {
            _testsFixture        = testsFixture;
            _produtoTestsFixture = produtoTestsFixture;

            _testsFixture.Client.AtribuirToken(_testsFixture.UsuarioToken);
        }
        public async Task UserControllerUpdate_UpdateUser_IfNotNULLValue(string firstName, string lastName, string email, string brand, string phoneNumber)
        {
            var user = new User {
                FirstName = "FirstName", LastName = "LastName", Brand = "Brand", Email = "Email", PhoneNumber = "PhoneNumber", Role = UserRoleEnum.Volunteer
            };

            await IntegrationTestsFixture.DatabaseContext.Users.AddAsync(user);

            await IntegrationTestsFixture.DatabaseContext.SaveChangesAsync();

            IntegrationTestsFixture.SetUserContext(user);

            var data = new { userId = user.UserId, firstName, lastName, email, brand, phoneNumber }.AsJsonContent();

            // Act
            var response = await Client.PatchAsync("/api/user", data);

            response.EnsureSuccessStatusCode();
            var myData = await Client.GetUsers();

            Assert.Single(myData.Users);
            Assert.Equal(user.UserId, myData.Users.First().UserId);
            Assert.Equal(firstName ?? user.FirstName, myData.Users.First().FirstName);
            Assert.Equal(lastName ?? user.LastName, myData.Users.First().LastName);
            Assert.Equal(email ?? user.Email, myData.Users.First().Email);
            Assert.Equal(brand ?? user.Brand, myData.Users.First().Brand);
            Assert.Equal(phoneNumber ?? user.PhoneNumber, myData.Users.First().PhoneNumber);
        }
Beispiel #5
0
        public async Task Coordinator_CanSearch_AllVolunteers()
        {
            // Arrange
            IntegrationTestsFixture.SetUserCoordinatorContext();

            IntegrationTestsFixture.DatabaseContext.Users
            .AddRange(Enumerable.Range(0, 30)
                      .Select(i => new User()
            {
                FirstName   = $"property_{i}",
                LastName    = $"property_{i}",
                Email       = $"property_{i}",
                Brand       = $"property_{i}",
                PhoneNumber = $"property_{i}",
                Role        = i < 10 ? UserRoleEnum.Volunteer : i < 20 ? UserRoleEnum.Coordinator : UserRoleEnum.Admin
            }));
            await IntegrationTestsFixture.DatabaseContext.SaveChangesAsync();

            // Act
            var response = await Client.GetUsers();

            // Assert
            Assert.NotEmpty(response.Users);
            Assert.Equal(10, response.Users.Count);
        }
        public async Task UserControllerUpdate_UpdateUser_AndCanQuery(string firstName, string lastName, string email, string brand, string phoneNumber)
        {
            var user = _fixture.VolunteerBuilder().Create();

            await IntegrationTestsFixture.DatabaseContext.Users.AddAsync(user);

            await IntegrationTestsFixture.DatabaseContext.SaveChangesAsync();

            IntegrationTestsFixture.SetUserContext(user);

            var data = new { userId = user.UserId, firstName, lastName, email, brand, phoneNumber }.AsJsonContent();

            // Act
            var response = await Client.PatchAsync("/api/user", data);

            response.EnsureSuccessStatusCode();
            var myData = await Client.GetUsers();

            Assert.Single(myData.Users);
            Assert.Equal(user.UserId, myData.Users.First().UserId);
            Assert.Equal(firstName, myData.Users.First().FirstName);
            Assert.Equal(lastName, myData.Users.First().LastName);
            Assert.Equal(email, myData.Users.First().Email);
            Assert.Equal(brand, myData.Users.First().Brand);
            Assert.Equal(phoneNumber, myData.Users.First().PhoneNumber);
        }
 public static Builder CreatePackage(this IntegrationTestsFixture fixture, string projectId, int componentId)
 {
     return(new Builder(
                fixture: fixture,
                projectId: projectId,
                componentId: componentId
                ));
 }
 public SqlServerGroupMigratorServiceTests(
     IntegrationTestsFixture fixture,
     SqlServerIntegrationTestsFixture sqlFixture) : base(
         fixture,
         StorageProviders.SqlServer,
         sqlFixture.ConnectionStrings)
 {
 }
Beispiel #9
0
        public async Task DreamersController_PUT_UpdateDreamer()
        {
            //Arrange
            var category  = _fixture.DreamCategoryBuilder(10).Create();
            var category2 = _fixture.DreamCategoryBuilder(15).Create();
            await IntegrationTestsFixture.DatabaseContext.DreamCategories.AddAsync(category);

            await IntegrationTestsFixture.DatabaseContext.DreamCategories.AddAsync(category2);

            await IntegrationTestsFixture.DatabaseContext.SaveChangesAsync();

            var dream = new Dream
            {
                DisplayName     = "T",
                Age             = 2,
                DreamUrl        = "https://mam-marzenie.pl/marzenie/1",
                Tags            = "tag1",
                DreamCategoryId = category.DreamCategoryId
            };
            await IntegrationTestsFixture.DatabaseContext.Dreams.AddAsync(dream);

            await IntegrationTestsFixture.DatabaseContext.SaveChangesAsync();

            IntegrationTestsFixture.SetUserContext(new User {
                Role = UserRoleEnum.Coordinator
            });
            var request = new UpdateDreamRequest
            {
                DreamId     = dream.DreamId,
                DisplayName = "Test",
                Age         = 3,
                DreamUrl    = "https://mam-marzenie.pl/marzenie/2",
                Tags        = "tag1, tag2",
                CategoryId  = category2.DreamCategoryId
            };

            //Act
            var _ = await Client.PutAsync("/api/dreams", request.WithJsonContent().json).AsResponse <UpdateDreamResponse>();

            IntegrationTestsFixture.SetUserContext(new User {
                Role = UserRoleEnum.Admin
            });
            var queryResponse = await Client.GetDreams();


            queryResponse.Should().NotBeNull();
            queryResponse.Dreams.Count.Should().Be(1);
            queryResponse.Dreams.Should().SatisfyRespectively(x =>
            {
                x.DreamId.Should().Be(dream.DreamId);
                x.DisplayName.Should().Be(request.DisplayName);
                x.Age.Should().Be(request.Age);
                x.DreamUrl.Should().Be(request.DreamUrl);
                x.Tags.Should().Be(request.Tags);
                x.DreamCategory.Should().NotBeNull();
                x.DreamCategory.DreamCategoryId.Should().Be(request.CategoryId);
            });
        }
Beispiel #10
0
        public async Task DreamController_UpdateDream_AssignVolounteersAndImages(int volounteerCount)
        {
            var stepCount    = 12;
            var category     = _fixture.DreamCategoryBuilder(stepCount).Create();
            var image        = _fixture.ImageBuilder().Create();
            var volonteers   = _fixture.VolunteerBuilder().CreateMany(10);
            var dreamBuilder = _fixture
                               .DreamBuilder()
                               .WithCategory(category);

            dreamBuilder.WithImage();

            var dream = dreamBuilder.Create();

            await IntegrationTestsFixture.DatabaseContext.Dreams.AddAsync(dream);

            await IntegrationTestsFixture.DatabaseContext.Users.AddRangeAsync(volonteers);

            await IntegrationTestsFixture.DatabaseContext.DreamCategories.AddAsync(category);

            await IntegrationTestsFixture.DatabaseContext.Images.AddAsync(image);

            await IntegrationTestsFixture.DatabaseContext.SaveChangesAsync();

            IntegrationTestsFixture.SetUserContext(new User {
                Role = UserRoleEnum.Admin
            });


            var random  = new Random();
            var request = _fixture
                          .Build <UpdateDreamRequest>()
                          .With(d => d.DreamId, dream.DreamId)
                          .With(d => d.Age, random.Next(1, 119))
                          .With(d => d.CategoryId, category.DreamCategoryId)
                          .With(d => d.DreamImageId, image.ImageId)
                          .Without(d => d.SponsorIds)
                          .With(d => d.VolunteerIds, () => volonteers.OrderBy(v => random.Next()).Take(volounteerCount).Select(v => v.UserId).ToArray())
                          .Create();

            // Act
            await Client.PutAsync($"/api/dreams", request.AsJsonContent()).AsResponse <UpdateDreamResponse>();

            var graphResponse = await Client.GetDreams(dreamId : dream.DreamId);

            var users = await Client.GetUsers(dream.DreamId);

            // Assert
            var apiDream = graphResponse.Dreams.Single();

            apiDream.DreamId.Should().Be(dream.DreamId);

            apiDream.DreamImageUrl.Should().Contain(image.ImageId.ToString());
            apiDream.DreamImageUrl.Should().Be($"/api/images/{image.ImageId}.png");

            users.Users.Count.Should().Be(volounteerCount);
        }
Beispiel #11
0
            public Builder(IntegrationTestsFixture fixture)
            {
                _fixture = fixture;

                _request = new CreateProjectRequest
                {
                    ProjectId        = $"project-{Guid.NewGuid()}",
                    EnvironmentNames = new[] { "dev", "test", "prod" },
                    ComponentNames   = new[] { "frontend", "backend", "other-service" }
                };
            }
Beispiel #12
0
            public Builder(IntegrationTestsFixture fixture, string projectId, int componentId)
            {
                _fixture     = fixture;
                _projectId   = projectId;
                _componentId = componentId;

                _request = new CreatePackageRequest
                {
                    Description     = $"package {Guid.NewGuid()}",
                    VariableUpdates = null
                };
            }
Beispiel #13
0
            public Builder(IntegrationTestsFixture fixture, string projectId, int componentId)
            {
                _fixture = fixture;

                _request = new CreatePackageRequest
                {
                    ProjectId       = projectId,
                    ComponentId     = componentId,
                    Description     = $"package {Guid.NewGuid()}",
                    ZipFile         = TestProcessZipArchives.TestProcess,
                    VariableUpdates = null
                };
            }
Beispiel #14
0
        public async Task DreamersController_POST_CreateDreamer()
        {
            // Arrange
            var count      = 20;
            var stepCount  = 12;
            var category   = _fixture.DreamCategoryBuilder(stepCount).Create();
            var images     = _fixture.ImageBuilder().CreateMany(count);
            var volonteers = _fixture.VolunteerBuilder().CreateMany(10);

            await IntegrationTestsFixture.DatabaseContext.Users.AddRangeAsync(volonteers);

            await IntegrationTestsFixture.DatabaseContext.DreamCategories.AddAsync(category);

            await IntegrationTestsFixture.DatabaseContext.Images.AddRangeAsync(images);

            await IntegrationTestsFixture.DatabaseContext.SaveChangesAsync();

            var imageIds = images.Select(i => i.ImageId).ToArray();

            IntegrationTestsFixture.SetUserContext(new User {
                Role = UserRoleEnum.Admin
            });


            var index    = 0;
            var random   = new Random();
            var requests = _fixture
                           .Build <AddDreamRequest>()
                           .With(d => d.Age, random.Next(1, 119))
                           .With(d => d.CategoryId, category.DreamCategoryId)
                           .With(d => d.DreamImageId, () => imageIds.ElementAt(index++))
                           .Without(d => d.SponsorIds)
                           .With(d => d.VolunteerIds, () => volonteers.OrderBy(v => new Random().Next()).Take(5).Select(v => v.UserId).ToArray())
                           .CreateMany(count)
                           .Select(dreamer => dreamer.WithJsonContent().json);

            // Act
            var responses = await Task.WhenAll(requests.Select(r => Client.PostAsync($"/api/dreams", r)));

            var graphResponse = await Client.GetDreams();

            // Assert
            foreach (var response in responses)
            {
                response.EnsureSuccessStatusCode(); // Status Code 200-299
                Assert.Equal("application/json; charset=utf-8",
                             response.Content.Headers.ContentType.ToString());
            }

            Assert.Equal(count, graphResponse.Dreams.Count);
        }
Beispiel #15
0
        public async Task CategoriesController_AddCategoryAction_CoordinatorAndAdminCanTrigger(UserRoleEnum role, bool isPermited)
        {
            // Arrange
            IntegrationTestsFixture.SetUserContext(new User {
                Role = role
            });
            var categoryName = _fixture.Create <string>();

            // Act

            var response = await Client.PostAsync(ActionUrl, new { categoryName, defaultSteps = new[] { new { stepDescription = "test" } } }.WithJsonContent().json);

            // Assert
            response.IsSuccessStatusCode.Should().Be(isPermited);
        }
Beispiel #16
0
        public async Task VolunteersController_Delete_FailIfNoAssign()
        {
            // Arrange
            IntegrationTestsFixture.SetUserCoordinatorContext();
            var userId  = _fixture.Create <long>();
            var dreamId = _fixture.Create <long>();
            // Act
            var response = await Client.DeleteAsync(CreateDeleteUrl(userId, dreamId));

            var responseObject = await response.GetResponse <ValidationProblemDetails>();

            // Assert
            response.IsSuccessStatusCode.Should().BeFalse();
            responseObject.Errors.Should().NotBeEmpty();
        }
        public async Task admin_cannot_change_role_of_another_admin(UserRoleEnum toRole)
        {
            IntegrationTestsFixture.SetUserAdminContext();
            var admin = _fixture.AdminBuilder().Create();

            await IntegrationTestsFixture.DatabaseContext.Users.AddAsync(admin);

            await IntegrationTestsFixture.DatabaseContext.SaveChangesAsync();

            var response = await ChangeRole(new { userId = admin.UserId, role = (int)toRole });

            _testOutputHelper.WriteLine(await response.Content.ReadAsStringAsync());;
            response.IsSuccessStatusCode.Should().BeFalse();
            response.StatusCode.Should().Be(HttpStatusCode.BadRequest);
        }
Beispiel #18
0
        public async Task CategoriesController_GetCategories()
        {
            // Act
            var categories = _fixture.DreamCategoryBuilder().CreateMany(10);
            await IntegrationTestsFixture.DatabaseContext.DreamCategories.AddRangeAsync(categories);

            await IntegrationTestsFixture.DatabaseContext.SaveChangesAsync();

            IntegrationTestsFixture.SetUserContext(new User {
                Role = UserRoleEnum.Volunteer
            });
            var response = await Client.GetAsync(ActionUrl).AsResponse <GetCategoriesResponse>();

            // Arrange
            response.Categories.Should().HaveCount(10);
        }
Beispiel #19
0
        public async Task VolunteerDreamAssign_CantCreateAssign()
        {
            // Arrange
            IntegrationTestsFixture.SetUserCoordinatorContext();
            var json = JsonConvert.SerializeObject(new { DreamerId = 1, VolunteerId = 1 });
            var data = new StringContent(json, Encoding.UTF8, "application/json");

            // Act
            var response = await Client.PostAsync(ApiUrlPath, data);

            var responseObject = await response.GetResponse <ValidationProblemDetails>();

            // Assert
            Assert.False(response.IsSuccessStatusCode);
            Assert.Equal(2, responseObject.Errors.Keys.Count);
        }
        public async Task UserControllerGet_Works(int userCount, int?page, int expectedCount)
        {
            // Arrange
            var users = _fixture.VolunteerBuilder().CreateMany(userCount);

            await IntegrationTestsFixture.DatabaseContext.Users.AddRangeAsync(users);

            await IntegrationTestsFixture.DatabaseContext.SaveChangesAsync();

            IntegrationTestsFixture.SetUserAdminContext();

            // Act
            var response = await Client.GetAsync($"/api/user?page={page - 1}").AsResponse <GetUsersResponse>();

            // Assert
            response.Users.Should().HaveCount(expectedCount);
        }
Beispiel #21
0
        public async Task DreamerScontroller_GET_ByDreamId()
        {
            // Arrange
            var dreams = _fixture.DreamBuilder().WithNewCategory().CreateMany(10).ToList();
            await IntegrationTestsFixture.DatabaseContext.Dreams.AddRangeAsync(dreams);

            await IntegrationTestsFixture.DatabaseContext.SaveChangesAsync();

            IntegrationTestsFixture.SetUserAdminContext();
            // Act
            var responses = await Task.WhenAll(dreams.Select(d => Client.GetAsync($"/api/dreams/details?dreamId={d.DreamId}").AsResponse <GetDreamResponse>()));

            // Assert
            foreach (var response in responses)
            {
                response.DisplayName.Should().NotBeNullOrEmpty();
            }
        }
        public async Task UserControllerDelete_CantDelete_Self()
        {
            // Arrange

            var user = _fixture.AdminBuilder().Create();

            await IntegrationTestsFixture.DatabaseContext.Users.AddAsync(user);

            await IntegrationTestsFixture.DatabaseContext.SaveChangesAsync();

            IntegrationTestsFixture.SetUserContext(user);

            // Act
            var response = await DeleteUserAction(user.UserId);

            // Assert
            Assert.Equal(HttpStatusCode.BadRequest, response.StatusCode);
        }
Beispiel #23
0
        public async Task InvitationsController_GetInvitations_OnlyPending()
        {
            // Arrange
            IntegrationTestsFixture.SetUserCoordinatorContext();
            var invitations         = _fixture.UseInvitation().WithStatus(CrossCutting.Enums.InvitationStateEnum.Pending).CreateMany(20);
            var invitationsAccepted = _fixture.UseInvitation().WithStatus(CrossCutting.Enums.InvitationStateEnum.Accepted).CreateMany(10);
            await IntegrationTestsFixture.DatabaseContext.Invitations.AddRangeAsync(invitations);

            await IntegrationTestsFixture.DatabaseContext.Invitations.AddRangeAsync(invitationsAccepted);

            await IntegrationTestsFixture.DatabaseContext.SaveChangesAsync();

            // Act
            var result = await Client.GetAsync("/api/invitations").AsResponse <GetInvitationsResponse>();

            // Assert
            result.Invitations.Should().HaveCount(20);
        }
        public async Task UserControllerDelete_IsForbidden_IfNotAdmin(UserRoleEnum role)
        {
            // Arrange
            IntegrationTestsFixture.SetUserContext(new User {
                UserId = 10, Role = role
            });

            var user = _fixture.VolunteerBuilder().Create();

            await IntegrationTestsFixture.DatabaseContext.Users.AddAsync(user);

            await IntegrationTestsFixture.DatabaseContext.SaveChangesAsync();

            // Act
            var response = await DeleteUserAction(user.UserId);

            // Assert
            Assert.Equal(HttpStatusCode.Forbidden, response.StatusCode);
        }
Beispiel #25
0
        public async Task Volunteer_CanFilterVolounteers_AssignedToHisDreams(int dreamUsersCount, int otherUsersCount)
        {
            // Arrange
            var volunteerUsers       = _fixture.VolunteerBuilder().CreateMany(dreamUsersCount);
            var otherDreamVolunteers = _fixture.VolunteerBuilder().CreateMany(otherUsersCount);
            var dreams = _fixture.DreamBuilder().WithNewCategory().CreateMany(2).ToList();

            await IntegrationTestsFixture.DatabaseContext.Dreams
            .AddRangeAsync(dreams);

            await IntegrationTestsFixture.DatabaseContext.Users
            .AddRangeAsync(volunteerUsers);

            await IntegrationTestsFixture.DatabaseContext.Users
            .AddRangeAsync(otherDreamVolunteers);

            await IntegrationTestsFixture.DatabaseContext.AssignedDreams.AddRangeAsync(volunteerUsers.Select(u => new AssignedDreams {
                Volunteer = u, Dream = dreams.First()
            }));

            await IntegrationTestsFixture.DatabaseContext.AssignedDreams.AddRangeAsync(otherDreamVolunteers.Select(u => new AssignedDreams {
                Volunteer = u, Dream = dreams.Last()
            }));

            await IntegrationTestsFixture.DatabaseContext.AssignedDreams.AddAsync(new AssignedDreams { Volunteer = volunteerUsers.First(), Dream = dreams.Last() });

            await IntegrationTestsFixture.DatabaseContext.SaveChangesAsync();

            IntegrationTestsFixture.SetUserContext(volunteerUsers.First());

            // Act
            var response1 = await Client.GetUsers(dreams.First().DreamId);

            var response2 = await Client.GetUsers(dreams.Last().DreamId);

            var response3 = await Client.GetUsers();

            //Assert
            response1.Users.Should().HaveCount(dreamUsersCount);
            response2.Users.Should().HaveCount(otherUsersCount + 1);
            response3.Users.Should().HaveCount(dreamUsersCount + otherUsersCount);
        }
        public async Task UserControllerDelete_OnlyAdmin_CanAccess()
        {
            // Arrange
            IntegrationTestsFixture.SetUserAdminContext();

            var user = _fixture.VolunteerBuilder().Create();

            await IntegrationTestsFixture.DatabaseContext.Users.AddAsync(user);

            await IntegrationTestsFixture.DatabaseContext.SaveChangesAsync();

            // Act
            var response = await DeleteUserAction(user.UserId);

            // Assert
            response.EnsureSuccessStatusCode();
            var userExists = IntegrationTestsFixture.DatabaseContext.Users.FirstOrDefault(u => u.UserId == user.UserId);

            Assert.Null(userExists);
        }
        public async Task only_admin_can_change_role(UserRoleEnum role)
        {
            var contextUser = _fixture.UserBuilder().With(x => x.Role, role)
                              .Create();

            IntegrationTestsFixture.SetUserContext(contextUser);

            var user = _fixture.UserBuilder()
                       .With(x => x.Role, UserRoleEnum.Volunteer)
                       .Create();

            await IntegrationTestsFixture.DatabaseContext.Users.AddAsync(user);

            await IntegrationTestsFixture.DatabaseContext.SaveChangesAsync();

            var response = await ChangeRole(new { userId = user.UserId, role = (int)UserRoleEnum.Admin });

            _testOutputHelper.WriteLine(await response.Content.ReadAsStringAsync());;
            response.IsSuccessStatusCode.Should().BeFalse();
        }
Beispiel #28
0
        public async Task VolunteerDreamAssign_CanCreateAssign()
        {
            // Arrange
            IntegrationTestsFixture.SetUserCoordinatorContext();
            var dream = _fixture.DreamBuilder().WithNewCategory().Create();
            var user  = _fixture.VolunteerBuilder().Create();

            await IntegrationTestsFixture.DatabaseContext.Dreams.AddAsync(dream);

            await IntegrationTestsFixture.DatabaseContext.Users.AddAsync(user);

            await IntegrationTestsFixture.DatabaseContext.SaveChangesAsync();

            var data = new { dream.DreamId, VolunteerId = user.UserId }.WithJsonContent();

            // Act
            var response = await Client.PostAsync(ApiUrlPath, data.json);

            // Assert
            response.EnsureSuccessStatusCode();
        }
        public async Task UserControllerUpdate_Works()
        {
            // Arrange
            var user = new User {
                FirstName = "FirstName", LastName = "LastName", Brand = "Brand", Email = "Email", PhoneNumber = "PhoneNumber", Role = UserRoleEnum.Volunteer
            };

            await IntegrationTestsFixture.DatabaseContext.Users.AddAsync(user);

            await IntegrationTestsFixture.DatabaseContext.SaveChangesAsync();

            IntegrationTestsFixture.SetUserContext(user);

            var data = new { userId = user.UserId, firstName = "new name", emailAddress = "*****@*****.**" }.AsJsonContent();

            // Act
            var response = await Client.PatchAsync("/api/user", data);

            // Assert
            response.EnsureSuccessStatusCode();
        }
        public async Task admin_can_change_user_role_from_to(UserRoleEnum from, UserRoleEnum to)
        {
            IntegrationTestsFixture.SetUserAdminContext();

            var user = _fixture.UserBuilder()
                       .With(x => x.Role, from)
                       .Create();

            await IntegrationTestsFixture.DatabaseContext.Users.AddAsync(user);

            await IntegrationTestsFixture.DatabaseContext.SaveChangesAsync();

            var response = await ChangeRole(new { userId = user.UserId, role = (int)to });

            _testOutputHelper.WriteLine(await response.Content.ReadAsStringAsync());;
            response.EnsureSuccessStatusCode();

            var inDb = await IntegrationTestsFixture.DatabaseContext.Users.AsNoTracking().SingleAsync(x => x.UserId == user.UserId);

            inDb.Role.Should().Be(to);
        }