示例#1
0
        public async Task Register_ShouldReturnCreatedAtAction()
        {
            // Arrange
            var url = "/api/users/register";

            using var scope = this._factory.Services.CreateScope();
            var dbContext   = scope.ServiceProvider.GetRequiredService <IntegratedCourseSystemContext>();
            var baseAddress = _factory.Server.BaseAddress;
            var newUser     = new DataBase.Models.User()
            {
                Email    = "*****@*****.**",
                Password = "******",
                Role     = DataBase.Models.UserRole.Student,
            };
            var jsonStudent = JsonConvert.SerializeObject(newUser);
            var request     = new HttpRequestMessage()
            {
                Method     = HttpMethod.Post,
                RequestUri = new Uri(baseAddress, url),
                Content    = new StringContent(jsonStudent, Encoding.UTF8, "application/json"),
            };
            // Act
            var response = httpClient.SendAsync(request).Result;
            var content  = await response.Content.ReadAsStringAsync();

            // Assert
            response.EnsureSuccessStatusCode();
        }
示例#2
0
        public void Logout_LoggedInUser_ShouldReturnCreatedWithEmpty()
        {
            // Arrange: register and login
            using var scope = this._factory.Services.CreateScope();
            var dbContext   = scope.ServiceProvider.GetRequiredService <IntegratedCourseSystemContext>();
            var baseAddress = _factory.Server.BaseAddress;
            // Register a user
            var newUser = new DataBase.Models.User()
            {
                Email    = "*****@*****.**",
                Password = Convert.ToBase64String(Encoding.UTF8.GetBytes("5")),
                Role     = DataBase.Models.UserRole.Student
            };
            var jsonStudent     = JsonConvert.SerializeObject(newUser);
            var studentString   = new StringContent(jsonStudent, Encoding.UTF8, "application/json");
            var registerRequest = new HttpRequestMessage()
            {
                Method     = HttpMethod.Post,
                RequestUri = new Uri(baseAddress, "/api/users/register"),
                Content    = studentString,
            };
            var registerResponse = httpClient.SendAsync(registerRequest).Result;

            registerResponse.EnsureSuccessStatusCode();
            // Log in
            var url          = "/api/users/login";
            var logInRequest = new HttpRequestMessage()
            {
                Method     = HttpMethod.Post,
                RequestUri = new Uri(baseAddress, url),
                Content    = studentString,
            };
            var logInResponse = httpClient.SendAsync(logInRequest).Result;

            logInResponse.EnsureSuccessStatusCode();
            url = "/api/users/logout";
            var logOutRequest = new HttpRequestMessage()
            {
                Method     = HttpMethod.Post,
                RequestUri = new Uri(baseAddress, url),
            };
            // Act: Log out
            var logOutResponse = httpClient.SendAsync(logOutRequest).Result;

            logOutResponse.EnsureSuccessStatusCode();
            // Try to get user info (accessible only to users that are logged in)
            var userInfoRequest = new HttpRequestMessage()
            {
                Method     = HttpMethod.Post,
                RequestUri = new Uri(baseAddress, "/api/users/logged_in"),
            };
            // Assert
            var userInfoResponseAfterLoggedOut = httpClient.SendAsync(userInfoRequest).Result;

            Assert.Equal("", userInfoResponseAfterLoggedOut.Content.ReadAsStringAsync().Result);
        }