aboutsummaryrefslogtreecommitdiff
path: root/src/DevHive.Tests
diff options
context:
space:
mode:
authorSyndamia <kamen.d.mladenov@protonmail.com>2021-02-04 21:44:39 +0200
committerSyndamia <kamen.d.mladenov@protonmail.com>2021-02-04 21:44:39 +0200
commitbba686199ec97d83f9073934f6877e7bae6bd2cc (patch)
tree18d6cef1022f7cdbe36afe8011c14f54a8ff603d /src/DevHive.Tests
parent5ece5a07e8bb693e4f80f8ced977c4cfa8f770ce (diff)
downloadDevHive-bba686199ec97d83f9073934f6877e7bae6bd2cc.tar
DevHive-bba686199ec97d83f9073934f6877e7bae6bd2cc.tar.gz
DevHive-bba686199ec97d83f9073934f6877e7bae6bd2cc.zip
Added UserController tests
Diffstat (limited to 'src/DevHive.Tests')
-rw-r--r--src/DevHive.Tests/DevHive.Web.Tests/UserController.Tests.cs257
1 files changed, 257 insertions, 0 deletions
diff --git a/src/DevHive.Tests/DevHive.Web.Tests/UserController.Tests.cs b/src/DevHive.Tests/DevHive.Web.Tests/UserController.Tests.cs
new file mode 100644
index 0000000..c1431c8
--- /dev/null
+++ b/src/DevHive.Tests/DevHive.Web.Tests/UserController.Tests.cs
@@ -0,0 +1,257 @@
+using System;
+using System.Threading.Tasks;
+using AutoMapper;
+using DevHive.Common.Models.Identity;
+using DevHive.Services.Interfaces;
+using DevHive.Services.Models.Identity.User;
+using DevHive.Web.Controllers;
+using DevHive.Web.Models.Identity.User;
+using Microsoft.AspNetCore.Mvc;
+using Moq;
+using NUnit.Framework;
+
+namespace DevHive.Web.Tests
+{
+ [TestFixture]
+ public class UserControllerTests
+ {
+ const string USERNAME = "Gosho Trapov";
+ private Mock<IUserService> UserServiceMock { get; set; }
+ private Mock<IMapper> MapperMock { get; set; }
+ private UserController UserController { get; set; }
+
+ [SetUp]
+ public void SetUp()
+ {
+ this.UserServiceMock = new Mock<IUserService>();
+ this.MapperMock = new Mock<IMapper>();
+ this.UserController = new UserController(this.UserServiceMock.Object, this.MapperMock.Object);
+ }
+
+ #region Create
+ [Test]
+ public void LoginUser_ReturnsOkObjectResult_WhenUserIsSuccessfullyLoggedIn()
+ {
+ Guid id = Guid.NewGuid();
+ LoginWebModel loginWebModel = new LoginWebModel
+ {
+ UserName = USERNAME
+ };
+ LoginServiceModel loginServiceModel = new LoginServiceModel
+ {
+ UserName = USERNAME
+ };
+ string token = "goshotrapov";
+ TokenModel tokenModel = new TokenModel(token);
+ TokenWebModel tokenWebModel = new TokenWebModel(token);
+
+ this.MapperMock.Setup(p => p.Map<LoginServiceModel>(It.IsAny<LoginWebModel>())).Returns(loginServiceModel);
+ this.MapperMock.Setup(p => p.Map<TokenWebModel>(It.IsAny<TokenModel>())).Returns(tokenWebModel);
+ this.UserServiceMock.Setup(p => p.LoginUser(It.IsAny<LoginServiceModel>())).Returns(Task.FromResult(tokenModel));
+
+ IActionResult result = this.UserController.Login(loginWebModel).Result;
+
+ Assert.IsInstanceOf<OkObjectResult>(result);
+
+ var resultToken = ((result as OkObjectResult).Value as TokenWebModel).Token;
+
+ Assert.AreEqual(token, resultToken);
+ }
+
+ [Test]
+ public void RegisterUser_ReturnsOkObjectResult_WhenUserIsSuccessfullyRegistered()
+ {
+ Guid id = Guid.NewGuid();
+ RegisterWebModel registerWebModel = new RegisterWebModel
+ {
+ UserName = USERNAME
+ };
+ RegisterServiceModel registerServiceModel = new RegisterServiceModel
+ {
+ UserName = USERNAME
+ };
+ string token = "goshotrapov";
+ TokenModel tokenModel = new TokenModel(token);
+ TokenWebModel tokenWebModel = new TokenWebModel(token);
+
+ this.MapperMock.Setup(p => p.Map<RegisterServiceModel>(It.IsAny<RegisterWebModel>())).Returns(registerServiceModel);
+ this.MapperMock.Setup(p => p.Map<TokenWebModel>(It.IsAny<TokenModel>())).Returns(tokenWebModel);
+ this.UserServiceMock.Setup(p => p.RegisterUser(It.IsAny<RegisterServiceModel>())).Returns(Task.FromResult(tokenModel));
+
+ IActionResult result = this.UserController.Register(registerWebModel).Result;
+
+ Assert.IsInstanceOf<CreatedResult>(result);
+
+ CreatedResult createdResult = result as CreatedResult;
+ TokenWebModel resultModel = (createdResult.Value as TokenWebModel);
+
+ Assert.AreEqual(token, resultModel.Token);
+ }
+ #endregion
+
+ #region Read
+ [Test]
+ public void GetById_ReturnsTheUser_WhenItExists()
+ {
+ Guid id = Guid.NewGuid();
+
+ UserServiceModel userServiceModel = new UserServiceModel
+ {
+ UserName = USERNAME
+ };
+ UserWebModel userWebModel = new UserWebModel
+ {
+ UserName = USERNAME
+ };
+
+ this.UserServiceMock.Setup(p => p.GetUserById(It.IsAny<Guid>())).Returns(Task.FromResult(userServiceModel));
+ this.UserServiceMock.Setup(p => p.ValidJWT(It.IsAny<Guid>(), It.IsAny<string>())).Returns(Task.FromResult(true));
+ this.MapperMock.Setup(p => p.Map<UserWebModel>(It.IsAny<UserServiceModel>())).Returns(userWebModel);
+
+ IActionResult result = this.UserController.GetById(id, null).Result;
+
+ Assert.IsInstanceOf<OkObjectResult>(result);
+
+ OkObjectResult okObjectResult = result as OkObjectResult;
+ UserWebModel resultModel = okObjectResult.Value as Models.Identity.User.UserWebModel;
+
+ Assert.AreEqual(USERNAME, resultModel.UserName);
+ }
+
+ [Test]
+ public void GetById_ReturnsUnauthorizedResult_WhenUserIsNotAuthorized()
+ {
+ Guid id = Guid.NewGuid();
+ UserWebModel userWebModel = new UserWebModel
+ {
+ UserName = USERNAME
+ };
+
+ this.UserServiceMock.Setup(p => p.ValidJWT(It.IsAny<Guid>(), It.IsAny<string>())).Returns(Task.FromResult(false));
+
+ IActionResult result = this.UserController.GetById(Guid.NewGuid(), null).Result;
+
+ Assert.IsInstanceOf<UnauthorizedResult>(result);
+ }
+
+ [Test]
+ public void GetUser_ReturnsTheUser_WhenItExists()
+ {
+ Guid id = Guid.NewGuid();
+ UserWebModel userWebModel = new UserWebModel
+ {
+ UserName = USERNAME
+ };
+ UserServiceModel userServiceModel = new UserServiceModel
+ {
+ UserName = USERNAME
+ };
+
+ this.UserServiceMock.Setup(p => p.GetUserByUsername(It.IsAny<string>())).Returns(Task.FromResult(userServiceModel));
+ this.MapperMock.Setup(p => p.Map<UserWebModel>(It.IsAny<UserServiceModel>())).Returns(userWebModel);
+
+ IActionResult result = this.UserController.GetUser(null).Result;
+
+ Assert.IsInstanceOf<OkObjectResult>(result);
+
+ OkObjectResult okObjectResult = result as OkObjectResult;
+ UserWebModel resultModel = okObjectResult.Value as Models.Identity.User.UserWebModel;
+
+ Assert.AreEqual(USERNAME, resultModel.UserName);
+ }
+ #endregion
+
+ #region Update
+ [Test]
+ public void Update_ShouldReturnOkResult_WhenUserIsUpdatedSuccessfully()
+ {
+ Guid id = Guid.NewGuid();
+ UpdateUserWebModel updateUserWebModel = new UpdateUserWebModel
+ {
+ UserName = USERNAME
+ };
+ UpdateUserServiceModel updateUserServiceModel = new UpdateUserServiceModel
+ {
+ UserName = USERNAME
+ };
+ UserServiceModel userServiceModel = new UserServiceModel
+ {
+ UserName = USERNAME
+ };
+
+ this.UserServiceMock.Setup(p => p.UpdateUser(It.IsAny<UpdateUserServiceModel>())).Returns(Task.FromResult(userServiceModel));
+ this.UserServiceMock.Setup(p => p.ValidJWT(It.IsAny<Guid>(), It.IsAny<string>())).Returns(Task.FromResult(true));
+ this.MapperMock.Setup(p => p.Map<UpdateUserServiceModel>(It.IsAny<UpdateUserWebModel>())).Returns(updateUserServiceModel);
+
+ IActionResult result = this.UserController.Update(id, updateUserWebModel, null).Result;
+
+ Assert.IsInstanceOf<AcceptedResult>(result);
+ }
+
+ [Test]
+ public void UpdateProfilePicture_ShouldReturnOkObjectResult_WhenProfilePictureIsUpdatedSuccessfully()
+ {
+ string profilePictureURL = "goshotrapov";
+ UpdateProfilePictureWebModel updateProfilePictureWebModel = new UpdateProfilePictureWebModel();
+ UpdateProfilePictureServiceModel updateProfilePictureServiceModel = new UpdateProfilePictureServiceModel();
+ ProfilePictureServiceModel profilePictureServiceModel = new ProfilePictureServiceModel
+ {
+ ProfilePictureURL = profilePictureURL
+ };
+ ProfilePictureWebModel profilePictureWebModel = new ProfilePictureWebModel
+ {
+ ProfilePictureURL = profilePictureURL
+ };
+
+ this.UserServiceMock.Setup(p => p.ValidJWT(It.IsAny<Guid>(), It.IsAny<string>())).Returns(Task.FromResult(true));
+ this.MapperMock.Setup(p => p.Map<UpdateProfilePictureServiceModel>(It.IsAny<UpdateProfilePictureWebModel>())).Returns(updateProfilePictureServiceModel);
+ this.UserServiceMock.Setup(p => p.UpdateProfilePicture(It.IsAny<UpdateProfilePictureServiceModel>())).Returns(Task.FromResult(profilePictureServiceModel));
+ this.MapperMock.Setup(p => p.Map<ProfilePictureWebModel>(It.IsAny<ProfilePictureServiceModel>())).Returns(profilePictureWebModel);
+
+
+ IActionResult result = this.UserController.UpdateProfilePicture(Guid.Empty, updateProfilePictureWebModel, null).Result;
+
+ Assert.IsInstanceOf<AcceptedResult>(result);
+
+ AcceptedResult acceptedResult = result as AcceptedResult;
+ ProfilePictureWebModel resultModel = acceptedResult.Value as Models.Identity.User.ProfilePictureWebModel;
+
+ Assert.AreEqual(profilePictureURL, resultModel.ProfilePictureURL);
+ }
+ #endregion
+
+ #region Delete
+ [Test]
+ public void Delete_ReturnsOkResult_WhenUserIsDeletedSuccessfully()
+ {
+ Guid id = Guid.NewGuid();
+
+ this.UserServiceMock.Setup(p => p.ValidJWT(It.IsAny<Guid>(), It.IsAny<string>())).Returns(Task.FromResult(true));
+ this.UserServiceMock.Setup(p => p.DeleteUser(It.IsAny<Guid>())).Returns(Task.FromResult(true));
+
+ IActionResult result = this.UserController.Delete(id, null).Result;
+
+ Assert.IsInstanceOf<OkResult>(result);
+ }
+
+ [Test]
+ public void Delete_ReturnsBadRequestObjectResult_WhenUserIsNotDeletedSuccessfully()
+ {
+ string message = "Could not delete User";
+ Guid id = Guid.NewGuid();
+
+ this.UserServiceMock.Setup(p => p.ValidJWT(It.IsAny<Guid>(), It.IsAny<string>())).Returns(Task.FromResult(true));
+ this.UserServiceMock.Setup(p => p.DeleteUser(It.IsAny<Guid>())).Returns(Task.FromResult(false));
+
+ IActionResult result = this.UserController.Delete(id, null).Result;
+
+ Assert.IsInstanceOf<BadRequestObjectResult>(result);
+
+ BadRequestObjectResult badRequestObjectResult = result as BadRequestObjectResult;
+ string resultModel = badRequestObjectResult.Value.ToString();
+
+ Assert.AreEqual(message, resultModel);
+ }
+ #endregion
+ }
+}