diff options
Diffstat (limited to 'src/Web')
21 files changed, 1004 insertions, 272 deletions
diff --git a/src/Web/DevHive.Web.Models/Rating/UpdateRatingWebModel.cs b/src/Web/DevHive.Web.Models/Rating/UpdateRatingWebModel.cs index 425c3e1..176c099 100644 --- a/src/Web/DevHive.Web.Models/Rating/UpdateRatingWebModel.cs +++ b/src/Web/DevHive.Web.Models/Rating/UpdateRatingWebModel.cs @@ -8,10 +8,6 @@ namespace DevHive.Web.Models.Rating { public class UpdateRatingWebModel { - public Guid Id { get; set; } - - public Guid PostId { get; set; } - public bool IsLike { get; set; } } } diff --git a/src/Web/DevHive.Web.Tests/CommentController.Tests.cs b/src/Web/DevHive.Web.Tests/CommentController.Tests.cs index d5ba5a3..830677e 100644 --- a/src/Web/DevHive.Web.Tests/CommentController.Tests.cs +++ b/src/Web/DevHive.Web.Tests/CommentController.Tests.cs @@ -1,7 +1,7 @@ using System; using System.Linq; -using System.Threading.Tasks; using AutoMapper; +using DevHive.Common.Jwt.Interfaces; using DevHive.Services.Interfaces; using DevHive.Services.Models.Comment; using DevHive.Web.Controllers; @@ -12,21 +12,23 @@ using NUnit.Framework; namespace DevHive.Web.Tests { - [TestFixture] + [TestFixture] public class CommentControllerTests { const string MESSAGE = "Gosho Trapov"; - private Mock<ICommentService> CommentServiceMock { get; set; } - private Mock<IMapper> MapperMock { get; set; } - private CommentController CommentController { get; set; } + private Mock<ICommentService> _commentServiceMock; + private Mock<IMapper> _mapperMock; + private Mock<IJwtService> _jwtServiceMock; + private CommentController _commentController; #region Setup [SetUp] public void SetUp() { - this.CommentServiceMock = new(); - this.MapperMock = new(); - this.CommentController = new(this.CommentServiceMock.Object, this.MapperMock.Object); + this._commentServiceMock = new Mock<ICommentService>(); + this._mapperMock = new Mock<IMapper>(); + this._jwtServiceMock = new Mock<IJwtService>(); + this._commentController = new CommentController(this._commentServiceMock.Object, this._mapperMock.Object, this._jwtServiceMock.Object); } #endregion @@ -44,11 +46,20 @@ namespace DevHive.Web.Tests Message = MESSAGE }; - this.MapperMock.Setup(p => p.Map<CreateCommentServiceModel>(It.IsAny<CreateCommentWebModel>())).Returns(createCommentServiceModel); - this.CommentServiceMock.Setup(p => p.AddComment(It.IsAny<CreateCommentServiceModel>())).Returns(Task.FromResult(id)); - this.CommentServiceMock.Setup(p => p.ValidateJwtForCreating(It.IsAny<Guid>(), It.IsAny<string>())).Returns(Task.FromResult(true)); - - IActionResult result = this.CommentController.AddComment(Guid.NewGuid(), createCommentWebModel, null).Result; + this._mapperMock + .Setup(p => p.Map<CreateCommentServiceModel>(It.IsAny<CreateCommentWebModel>())) + .Returns(createCommentServiceModel); + this._commentServiceMock + .Setup(p => p.AddComment(It.IsAny<CreateCommentServiceModel>())) + .ReturnsAsync(id); + this._jwtServiceMock + .Setup(p => p.ValidateToken(It.IsAny<Guid>(), It.IsAny<string>())) + .Returns(true); + this._commentServiceMock + .Setup(p => p.ValidateJwtForCreating(It.IsAny<Guid>(), It.IsAny<string>())) + .ReturnsAsync(true); + + IActionResult result = this._commentController.AddComment(Guid.NewGuid(), createCommentWebModel, null).Result; Assert.IsInstanceOf<OkObjectResult>(result); @@ -77,11 +88,20 @@ namespace DevHive.Web.Tests string errorMessage = $"Could not create comment!"; - this.MapperMock.Setup(p => p.Map<CreateCommentServiceModel>(It.IsAny<CreateCommentWebModel>())).Returns(createCommentServiceModel); - this.CommentServiceMock.Setup(p => p.AddComment(It.IsAny<CreateCommentServiceModel>())).Returns(Task.FromResult(Guid.Empty)); - this.CommentServiceMock.Setup(p => p.ValidateJwtForCreating(It.IsAny<Guid>(), It.IsAny<string>())).Returns(Task.FromResult(true)); + this._mapperMock + .Setup(p => p.Map<CreateCommentServiceModel>(It.IsAny<CreateCommentWebModel>())) + .Returns(createCommentServiceModel); + this._commentServiceMock + .Setup(p => p.AddComment(It.IsAny<CreateCommentServiceModel>())) + .ReturnsAsync(Guid.Empty); + this._jwtServiceMock + .Setup(p => p.ValidateToken(It.IsAny<Guid>(), It.IsAny<string>())) + .Returns(true); + this._commentServiceMock + .Setup(p => p.ValidateJwtForCreating(It.IsAny<Guid>(), It.IsAny<string>())) + .ReturnsAsync(true); - IActionResult result = this.CommentController.AddComment(Guid.NewGuid(), createCommentWebModel, null).Result; + IActionResult result = this._commentController.AddComment(Guid.NewGuid(), createCommentWebModel, null).Result; Assert.IsInstanceOf<BadRequestObjectResult>(result); @@ -99,9 +119,14 @@ namespace DevHive.Web.Tests Message = MESSAGE }; - this.CommentServiceMock.Setup(p => p.ValidateJwtForCreating(It.IsAny<Guid>(), It.IsAny<string>())).Returns(Task.FromResult(false)); + this._jwtServiceMock + .Setup(p => p.ValidateToken(It.IsAny<Guid>(), It.IsAny<string>())) + .Returns(true); + this._commentServiceMock + .Setup(p => p.ValidateJwtForCreating(It.IsAny<Guid>(), It.IsAny<string>())) + .ReturnsAsync(false); - IActionResult result = this.CommentController.AddComment(Guid.NewGuid(), createCommentWebModel, null).Result; + IActionResult result = this._commentController.AddComment(Guid.NewGuid(), createCommentWebModel, null).Result; Assert.IsInstanceOf<UnauthorizedResult>(result); } @@ -121,10 +146,17 @@ namespace DevHive.Web.Tests Message = MESSAGE }; - this.CommentServiceMock.Setup(p => p.GetCommentById(It.IsAny<Guid>())).Returns(Task.FromResult(readCommentServiceModel)); - this.MapperMock.Setup(p => p.Map<ReadCommentWebModel>(It.IsAny<ReadCommentServiceModel>())).Returns(readCommentWebModel); + this._jwtServiceMock + .Setup(p => p.ValidateToken(It.IsAny<Guid>(), It.IsAny<string>())) + .Returns(true); + this._commentServiceMock + .Setup(p => p.GetCommentById(It.IsAny<Guid>())) + .ReturnsAsync(readCommentServiceModel); + this._mapperMock + .Setup(p => p.Map<ReadCommentWebModel>(It.IsAny<ReadCommentServiceModel>())) + .Returns(readCommentWebModel); - IActionResult result = this.CommentController.GetCommentById(id).Result; + IActionResult result = this._commentController.GetCommentById(id).Result; Assert.IsInstanceOf<OkObjectResult>(result); @@ -149,11 +181,20 @@ namespace DevHive.Web.Tests NewMessage = MESSAGE }; - this.CommentServiceMock.Setup(p => p.UpdateComment(It.IsAny<UpdateCommentServiceModel>())).Returns(Task.FromResult(id)); - this.CommentServiceMock.Setup(p => p.ValidateJwtForComment(It.IsAny<Guid>(), It.IsAny<string>())).Returns(Task.FromResult(true)); - this.MapperMock.Setup(p => p.Map<UpdateCommentServiceModel>(It.IsAny<UpdateCommentWebModel>())).Returns(updateCommentServiceModel); - - IActionResult result = this.CommentController.UpdateComment(Guid.Empty, updateCommentWebModel, null).Result; + this._commentServiceMock + .Setup(p => p.UpdateComment(It.IsAny<UpdateCommentServiceModel>())) + .ReturnsAsync(id); + this._jwtServiceMock + .Setup(p => p.ValidateToken(It.IsAny<Guid>(), It.IsAny<string>())) + .Returns(true); + this._commentServiceMock + .Setup(p => p.ValidateJwtForComment(It.IsAny<Guid>(), It.IsAny<string>())) + .ReturnsAsync(true); + this._mapperMock + .Setup(p => p.Map<UpdateCommentServiceModel>(It.IsAny<UpdateCommentWebModel>())) + .Returns(updateCommentServiceModel); + + IActionResult result = this._commentController.UpdateComment(Guid.Empty, updateCommentWebModel, null).Result; Assert.IsInstanceOf<OkObjectResult>(result); @@ -177,11 +218,20 @@ namespace DevHive.Web.Tests NewMessage = MESSAGE }; - this.CommentServiceMock.Setup(p => p.UpdateComment(It.IsAny<UpdateCommentServiceModel>())).Returns(Task.FromResult(Guid.Empty)); - this.CommentServiceMock.Setup(p => p.ValidateJwtForComment(It.IsAny<Guid>(), It.IsAny<string>())).Returns(Task.FromResult(true)); - this.MapperMock.Setup(p => p.Map<UpdateCommentServiceModel>(It.IsAny<UpdateCommentWebModel>())).Returns(updateCommentServiceModel); - - IActionResult result = this.CommentController.UpdateComment(Guid.Empty, updateCommentWebModel, null).Result; + this._commentServiceMock + .Setup(p => p.UpdateComment(It.IsAny<UpdateCommentServiceModel>())) + .ReturnsAsync(Guid.Empty); + this._jwtServiceMock + .Setup(p => p.ValidateToken(It.IsAny<Guid>(), It.IsAny<string>())) + .Returns(true); + this._commentServiceMock + .Setup(p => p.ValidateJwtForComment(It.IsAny<Guid>(), It.IsAny<string>())) + .ReturnsAsync(true); + this._mapperMock + .Setup(p => p.Map<UpdateCommentServiceModel>(It.IsAny<UpdateCommentWebModel>())) + .Returns(updateCommentServiceModel); + + IActionResult result = this._commentController.UpdateComment(Guid.Empty, updateCommentWebModel, null).Result; Assert.IsInstanceOf<BadRequestObjectResult>(result); BadRequestObjectResult badRequestObjectResult = result as BadRequestObjectResult; @@ -198,9 +248,12 @@ namespace DevHive.Web.Tests NewMessage = MESSAGE }; - this.CommentServiceMock.Setup(p => p.ValidateJwtForComment(It.IsAny<Guid>(), It.IsAny<string>())).Returns(Task.FromResult(false)); + this._jwtServiceMock + .Setup(p => p.ValidateToken(It.IsAny<Guid>(), It.IsAny<string>())) + .Returns(false); + // this.CommentServiceMock.Setup(p => p.ValidateJwtForComment(It.IsAny<Guid>(), It.IsAny<string>())).ReturnsAsync(false)); - IActionResult result = this.CommentController.UpdateComment(Guid.Empty, updateCommentWebModel, null).Result; + IActionResult result = this._commentController.UpdateComment(Guid.Empty, updateCommentWebModel, null).Result; Assert.IsInstanceOf<UnauthorizedResult>(result); } @@ -212,10 +265,17 @@ namespace DevHive.Web.Tests { Guid id = Guid.NewGuid(); - this.CommentServiceMock.Setup(p => p.DeleteComment(It.IsAny<Guid>())).Returns(Task.FromResult(true)); - this.CommentServiceMock.Setup(p => p.ValidateJwtForComment(It.IsAny<Guid>(), It.IsAny<string>())).Returns(Task.FromResult(true)); + this._commentServiceMock + .Setup(p => p.DeleteComment(It.IsAny<Guid>())) + .ReturnsAsync(true); + this._jwtServiceMock + .Setup(p => p.ValidateToken(It.IsAny<Guid>(), It.IsAny<string>())) + .Returns(true); + this._commentServiceMock + .Setup(p => p.ValidateJwtForComment(It.IsAny<Guid>(), It.IsAny<string>())) + .ReturnsAsync(true); - IActionResult result = this.CommentController.DeleteComment(id, null).Result; + IActionResult result = this._commentController.DeleteComment(id, null).Result; Assert.IsInstanceOf<OkResult>(result); } @@ -226,10 +286,17 @@ namespace DevHive.Web.Tests string message = "Could not delete Comment"; Guid id = Guid.NewGuid(); - this.CommentServiceMock.Setup(p => p.DeleteComment(It.IsAny<Guid>())).Returns(Task.FromResult(false)); - this.CommentServiceMock.Setup(p => p.ValidateJwtForComment(It.IsAny<Guid>(), It.IsAny<string>())).Returns(Task.FromResult(true)); + this._commentServiceMock + .Setup(p => p.DeleteComment(It.IsAny<Guid>())) + .ReturnsAsync(false); + this._jwtServiceMock + .Setup(p => p.ValidateToken(It.IsAny<Guid>(), It.IsAny<string>())) + .Returns(true); + this._commentServiceMock + .Setup(p => p.ValidateJwtForComment(It.IsAny<Guid>(), It.IsAny<string>())) + .ReturnsAsync(true); - IActionResult result = this.CommentController.DeleteComment(id, null).Result; + IActionResult result = this._commentController.DeleteComment(id, null).Result; Assert.IsInstanceOf<BadRequestObjectResult>(result); @@ -242,9 +309,14 @@ namespace DevHive.Web.Tests [Test] public void DeleteComment_ReturnsUnauthorizedResult_WhenUserIsNotAuthorized() { - this.CommentServiceMock.Setup(p => p.ValidateJwtForComment(It.IsAny<Guid>(), It.IsAny<string>())).Returns(Task.FromResult(false)); - - IActionResult result = this.CommentController.DeleteComment(Guid.Empty, null).Result; + this._jwtServiceMock + .Setup(p => p.ValidateToken(It.IsAny<Guid>(), It.IsAny<string>())) + .Returns(true); + this._commentServiceMock + .Setup(p => p.ValidateJwtForComment(It.IsAny<Guid>(), It.IsAny<string>())) + .ReturnsAsync(false); + + IActionResult result = this._commentController.DeleteComment(Guid.Empty, null).Result; Assert.IsInstanceOf<UnauthorizedResult>(result); } diff --git a/src/Web/DevHive.Web.Tests/FeedController.Tests.cs b/src/Web/DevHive.Web.Tests/FeedController.Tests.cs index 646ad93..2f43b6c 100644 --- a/src/Web/DevHive.Web.Tests/FeedController.Tests.cs +++ b/src/Web/DevHive.Web.Tests/FeedController.Tests.cs @@ -17,17 +17,17 @@ namespace DevHive.Web.Tests [TestFixture] public class FeedControllerTests { - private Mock<IFeedService> FeedServiceMock { get; set; } - private Mock<IMapper> MapperMock { get; set; } - private FeedController FeedController { get; set; } + private Mock<IFeedService> _feedServiceMock; + private Mock<IMapper> _mapperMock; + private FeedController _feedController; #region SetUp [SetUp] public void SetUp() { - this.FeedServiceMock = new(); - this.MapperMock = new(); - this.FeedController = new(this.FeedServiceMock.Object, this.MapperMock.Object); + this._feedServiceMock = new Mock<IFeedService>(); + this._mapperMock = new Mock<IMapper>(); + this._feedController = new FeedController(this._feedServiceMock.Object, this._mapperMock.Object); } #endregion @@ -48,11 +48,17 @@ namespace DevHive.Web.Tests } }; - this.FeedServiceMock.Setup(p => p.GetPage(It.IsAny<GetPageServiceModel>())).Returns(Task.FromResult(readPageServiceModel)); - this.MapperMock.Setup(p => p.Map<GetPageServiceModel>(It.IsAny<GetPageWebModel>())).Returns(getPageServiceModel); - this.MapperMock.Setup(p => p.Map<ReadPageWebModel>(It.IsAny<ReadPageServiceModel>())).Returns(readPageWebModel); + this._feedServiceMock + .Setup(p => p.GetPage(It.IsAny<GetPageServiceModel>())) + .ReturnsAsync(readPageServiceModel); + this._mapperMock + .Setup(p => p.Map<GetPageServiceModel>(It.IsAny<GetPageWebModel>())) + .Returns(getPageServiceModel); + this._mapperMock + .Setup(p => p.Map<ReadPageWebModel>(It.IsAny<ReadPageServiceModel>())) + .Returns(readPageWebModel); - IActionResult result = await this.FeedController.GetPosts(Guid.Empty, getPageWebModel); + IActionResult result = await this._feedController.GetPosts(Guid.Empty, getPageWebModel); Assert.IsInstanceOf<OkObjectResult>(result); @@ -80,11 +86,17 @@ namespace DevHive.Web.Tests } }; - this.FeedServiceMock.Setup(p => p.GetUserPage(It.IsAny<GetPageServiceModel>())).Returns(Task.FromResult(readPageServiceModel)); - this.MapperMock.Setup(p => p.Map<GetPageServiceModel>(It.IsAny<GetPageWebModel>())).Returns(getPageServiceModel); - this.MapperMock.Setup(p => p.Map<ReadPageWebModel>(It.IsAny<ReadPageServiceModel>())).Returns(readPageWebModel); + this._feedServiceMock + .Setup(p => p.GetUserPage(It.IsAny<GetPageServiceModel>())) + .ReturnsAsync(readPageServiceModel); + this._mapperMock + .Setup(p => p.Map<GetPageServiceModel>(It.IsAny<GetPageWebModel>())) + .Returns(getPageServiceModel); + this._mapperMock + .Setup(p => p.Map<ReadPageWebModel>(It.IsAny<ReadPageServiceModel>())) + .Returns(readPageWebModel); - IActionResult result = await this.FeedController.GetUserPosts(null, getPageWebModel); + IActionResult result = await this._feedController.GetUserPosts(null, getPageWebModel); Assert.IsInstanceOf<OkObjectResult>(result); diff --git a/src/Web/DevHive.Web.Tests/LanguageController.Tests.cs b/src/Web/DevHive.Web.Tests/LanguageController.Tests.cs index 8724d1a..52e07fa 100644 --- a/src/Web/DevHive.Web.Tests/LanguageController.Tests.cs +++ b/src/Web/DevHive.Web.Tests/LanguageController.Tests.cs @@ -1,6 +1,5 @@ using System; using System.Linq; -using System.Threading.Tasks; using AutoMapper; using DevHive.Services.Interfaces; using DevHive.Services.Models.Language; @@ -16,16 +15,16 @@ namespace DevHive.Web.Tests public class LanguageControllerTests { const string NAME = "Gosho Trapov"; - private Mock<ILanguageService> LanguageServiceMock { get; set; } - private Mock<IMapper> MapperMock { get; set; } - private LanguageController LanguageController { get; set; } + private Mock<ILanguageService> _languageServiceMock; + private Mock<IMapper> _mapperMock; + private LanguageController _languageController; [SetUp] public void SetUp() { - this.LanguageServiceMock = new(); - this.MapperMock = new(); - this.LanguageController = new(this.LanguageServiceMock.Object, this.MapperMock.Object); + this._languageServiceMock = new Mock<ILanguageService>(); + this._mapperMock = new Mock<IMapper>(); + this._languageController = new LanguageController(this._languageServiceMock.Object, this._mapperMock.Object); } #region Create @@ -42,10 +41,14 @@ namespace DevHive.Web.Tests }; Guid id = Guid.NewGuid(); - this.MapperMock.Setup(p => p.Map<CreateLanguageServiceModel>(It.IsAny<CreateLanguageWebModel>())).Returns(createLanguageServiceModel); - this.LanguageServiceMock.Setup(p => p.CreateLanguage(It.IsAny<CreateLanguageServiceModel>())).Returns(Task.FromResult(id)); + this._mapperMock + .Setup(p => p.Map<CreateLanguageServiceModel>(It.IsAny<CreateLanguageWebModel>())) + .Returns(createLanguageServiceModel); + this._languageServiceMock + .Setup(p => p.CreateLanguage(It.IsAny<CreateLanguageServiceModel>())) + .ReturnsAsync(id); - IActionResult result = this.LanguageController.Create(createLanguageWebModel).Result; + IActionResult result = this._languageController.Create(createLanguageWebModel).Result; Assert.IsInstanceOf<OkObjectResult>(result); @@ -74,10 +77,14 @@ namespace DevHive.Web.Tests Guid id = Guid.Empty; string errorMessage = $"Could not create language {NAME}"; - this.MapperMock.Setup(p => p.Map<CreateLanguageServiceModel>(It.IsAny<CreateLanguageWebModel>())).Returns(createTechnologyServiceModel); - this.LanguageServiceMock.Setup(p => p.CreateLanguage(It.IsAny<CreateLanguageServiceModel>())).Returns(Task.FromResult(id)); + this._mapperMock + .Setup(p => p.Map<CreateLanguageServiceModel>(It.IsAny<CreateLanguageWebModel>())) + .Returns(createTechnologyServiceModel); + this._languageServiceMock + .Setup(p => p.CreateLanguage(It.IsAny<CreateLanguageServiceModel>())) + .ReturnsAsync(id); - IActionResult result = this.LanguageController.Create(createTechnologyWebModel).Result; + IActionResult result = this._languageController.Create(createTechnologyWebModel).Result; Assert.IsInstanceOf<BadRequestObjectResult>(result); @@ -103,10 +110,14 @@ namespace DevHive.Web.Tests Name = NAME }; - this.LanguageServiceMock.Setup(p => p.GetLanguageById(It.IsAny<Guid>())).Returns(Task.FromResult(readLanguageServiceModel)); - this.MapperMock.Setup(p => p.Map<ReadLanguageWebModel>(It.IsAny<ReadLanguageServiceModel>())).Returns(readLanguageWebModel); + this._languageServiceMock + .Setup(p => p.GetLanguageById(It.IsAny<Guid>())) + .ReturnsAsync(readLanguageServiceModel); + this._mapperMock + .Setup(p => p.Map<ReadLanguageWebModel>(It.IsAny<ReadLanguageServiceModel>())) + .Returns(readLanguageWebModel); - IActionResult result = this.LanguageController.GetById(id).Result; + IActionResult result = this._languageController.GetById(id).Result; Assert.IsInstanceOf<OkObjectResult>(result); @@ -131,10 +142,14 @@ namespace DevHive.Web.Tests Name = NAME }; - this.LanguageServiceMock.Setup(p => p.UpdateLanguage(It.IsAny<UpdateLanguageServiceModel>())).Returns(Task.FromResult(true)); - this.MapperMock.Setup(p => p.Map<UpdateLanguageServiceModel>(It.IsAny<UpdateLanguageWebModel>())).Returns(updateLanguageServiceModel); + this._languageServiceMock + .Setup(p => p.UpdateLanguage(It.IsAny<UpdateLanguageServiceModel>())) + .ReturnsAsync(true); + this._mapperMock + .Setup(p => p.Map<UpdateLanguageServiceModel>(It.IsAny<UpdateLanguageWebModel>())) + .Returns(updateLanguageServiceModel); - IActionResult result = this.LanguageController.Update(id, updateLanguageWebModel).Result; + IActionResult result = this._languageController.Update(id, updateLanguageWebModel).Result; Assert.IsInstanceOf<OkResult>(result); } @@ -153,10 +168,14 @@ namespace DevHive.Web.Tests Name = NAME }; - this.LanguageServiceMock.Setup(p => p.UpdateLanguage(It.IsAny<UpdateLanguageServiceModel>())).Returns(Task.FromResult(false)); - this.MapperMock.Setup(p => p.Map<UpdateLanguageServiceModel>(It.IsAny<UpdateLanguageWebModel>())).Returns(updateLanguageServiceModel); + this._languageServiceMock + .Setup(p => p.UpdateLanguage(It.IsAny<UpdateLanguageServiceModel>())) + .ReturnsAsync(false); + this._mapperMock + .Setup(p => p.Map<UpdateLanguageServiceModel>(It.IsAny<UpdateLanguageWebModel>())) + .Returns(updateLanguageServiceModel); - IActionResult result = this.LanguageController.Update(id, updateLanguageWebModel).Result; + IActionResult result = this._languageController.Update(id, updateLanguageWebModel).Result; Assert.IsInstanceOf<BadRequestObjectResult>(result); BadRequestObjectResult badRequestObjectResult = result as BadRequestObjectResult; @@ -172,9 +191,11 @@ namespace DevHive.Web.Tests { Guid id = Guid.NewGuid(); - this.LanguageServiceMock.Setup(p => p.DeleteLanguage(It.IsAny<Guid>())).Returns(Task.FromResult(true)); + this._languageServiceMock + .Setup(p => p.DeleteLanguage(It.IsAny<Guid>())) + .ReturnsAsync(true); - IActionResult result = this.LanguageController.Delete(id).Result; + IActionResult result = this._languageController.Delete(id).Result; Assert.IsInstanceOf<OkResult>(result); } @@ -185,9 +206,11 @@ namespace DevHive.Web.Tests string message = "Could not delete Language"; Guid id = Guid.NewGuid(); - this.LanguageServiceMock.Setup(p => p.DeleteLanguage(It.IsAny<Guid>())).Returns(Task.FromResult(false)); + this._languageServiceMock + .Setup(p => p.DeleteLanguage(It.IsAny<Guid>())) + .ReturnsAsync(false); - IActionResult result = this.LanguageController.Delete(id).Result; + IActionResult result = this._languageController.Delete(id).Result; Assert.IsInstanceOf<BadRequestObjectResult>(result); diff --git a/src/Web/DevHive.Web.Tests/PostController.Tests.cs b/src/Web/DevHive.Web.Tests/PostController.Tests.cs index d2107af..df95191 100644 --- a/src/Web/DevHive.Web.Tests/PostController.Tests.cs +++ b/src/Web/DevHive.Web.Tests/PostController.Tests.cs @@ -1,7 +1,7 @@ using System; using System.Linq; -using System.Threading.Tasks; using AutoMapper; +using DevHive.Common.Jwt.Interfaces; using DevHive.Services.Interfaces; using DevHive.Services.Models.Post; using DevHive.Web.Controllers; @@ -16,16 +16,18 @@ namespace DevHive.Web.Tests public class PostControllerTests { const string MESSAGE = "Gosho Trapov"; - private Mock<IPostService> PostServiceMock { get; set; } - private Mock<IMapper> MapperMock { get; set; } - private PostController PostController { get; set; } + private Mock<IPostService> _postServiceMock; + private Mock<IMapper> _mapperMock; + private Mock<IJwtService> _jwtServiceMock; + private PostController _postController; [SetUp] public void SetUp() { - this.PostServiceMock = new(); - this.MapperMock = new(); - this.PostController = new(this.PostServiceMock.Object, this.MapperMock.Object); + this._postServiceMock = new Mock<IPostService>(); + this._mapperMock = new Mock<IMapper>(); + this._jwtServiceMock = new Mock<IJwtService>(); + this._postController = new PostController(this._postServiceMock.Object, this._mapperMock.Object, this._jwtServiceMock.Object); } #region Create @@ -42,11 +44,20 @@ namespace DevHive.Web.Tests }; Guid id = Guid.NewGuid(); - this.MapperMock.Setup(p => p.Map<CreatePostServiceModel>(It.IsAny<CreatePostWebModel>())).Returns(createPostServiceModel); - this.PostServiceMock.Setup(p => p.CreatePost(It.IsAny<CreatePostServiceModel>())).Returns(Task.FromResult(id)); - this.PostServiceMock.Setup(p => p.ValidateJwtForCreating(It.IsAny<Guid>(), It.IsAny<string>())).Returns(Task.FromResult(true)); - - IActionResult result = this.PostController.Create(Guid.Empty, createPostWebModel, null).Result; + this._mapperMock + .Setup(p => p.Map<CreatePostServiceModel>(It.IsAny<CreatePostWebModel>())) + .Returns(createPostServiceModel); + this._postServiceMock + .Setup(p => p.CreatePost(It.IsAny<CreatePostServiceModel>())) + .ReturnsAsync(id); + this._jwtServiceMock + .Setup(p => p.ValidateToken(It.IsAny<Guid>(), It.IsAny<string>())) + .Returns(true); + this._postServiceMock + .Setup(p => p.ValidateJwtForCreating(It.IsAny<Guid>(), It.IsAny<string>())) + .ReturnsAsync(true); + + IActionResult result = this._postController.Create(Guid.Empty, createPostWebModel, null).Result; Assert.IsInstanceOf<OkObjectResult>(result); @@ -75,11 +86,20 @@ namespace DevHive.Web.Tests Guid id = Guid.Empty; string errorMessage = $"Could not create post!"; - this.MapperMock.Setup(p => p.Map<CreatePostServiceModel>(It.IsAny<CreatePostWebModel>())).Returns(createTechnologyServiceModel); - this.PostServiceMock.Setup(p => p.CreatePost(It.IsAny<CreatePostServiceModel>())).Returns(Task.FromResult(id)); - this.PostServiceMock.Setup(p => p.ValidateJwtForCreating(It.IsAny<Guid>(), It.IsAny<string>())).Returns(Task.FromResult(true)); - - IActionResult result = this.PostController.Create(Guid.Empty, createTechnologyWebModel, null).Result; + this._mapperMock + .Setup(p => p.Map<CreatePostServiceModel>(It.IsAny<CreatePostWebModel>())) + .Returns(createTechnologyServiceModel); + this._postServiceMock + .Setup(p => p.CreatePost(It.IsAny<CreatePostServiceModel>())) + .ReturnsAsync(id); + this._jwtServiceMock + .Setup(p => p.ValidateToken(It.IsAny<Guid>(), It.IsAny<string>())) + .Returns(true); + this._postServiceMock + .Setup(p => p.ValidateJwtForCreating(It.IsAny<Guid>(), It.IsAny<string>())) + .ReturnsAsync(true); + + IActionResult result = this._postController.Create(Guid.Empty, createTechnologyWebModel, null).Result; Assert.IsInstanceOf<BadRequestObjectResult>(result); @@ -97,9 +117,11 @@ namespace DevHive.Web.Tests Message = MESSAGE }; - this.PostServiceMock.Setup(p => p.ValidateJwtForCreating(It.IsAny<Guid>(), It.IsAny<string>())).Returns(Task.FromResult(false)); + this._postServiceMock + .Setup(p => p.ValidateJwtForCreating(It.IsAny<Guid>(), It.IsAny<string>())) + .ReturnsAsync(false); - IActionResult result = this.PostController.Create(Guid.NewGuid(), createPostWebModel, null).Result; + IActionResult result = this._postController.Create(Guid.NewGuid(), createPostWebModel, null).Result; Assert.IsInstanceOf<UnauthorizedResult>(result); } @@ -120,10 +142,14 @@ namespace DevHive.Web.Tests Message = MESSAGE }; - this.PostServiceMock.Setup(p => p.GetPostById(It.IsAny<Guid>())).Returns(Task.FromResult(readPostServiceModel)); - this.MapperMock.Setup(p => p.Map<ReadPostWebModel>(It.IsAny<ReadPostServiceModel>())).Returns(readPostWebModel); + this._postServiceMock + .Setup(p => p.GetPostById(It.IsAny<Guid>())) + .ReturnsAsync(readPostServiceModel); + this._mapperMock + .Setup(p => p.Map<ReadPostWebModel>(It.IsAny<ReadPostServiceModel>())) + .Returns(readPostWebModel); - IActionResult result = this.PostController.GetById(id).Result; + IActionResult result = this._postController.GetById(id).Result; Assert.IsInstanceOf<OkObjectResult>(result); @@ -148,11 +174,20 @@ namespace DevHive.Web.Tests NewMessage = MESSAGE }; - this.PostServiceMock.Setup(p => p.UpdatePost(It.IsAny<UpdatePostServiceModel>())).Returns(Task.FromResult(id)); - this.MapperMock.Setup(p => p.Map<UpdatePostServiceModel>(It.IsAny<UpdatePostWebModel>())).Returns(updatePostServiceModel); - this.PostServiceMock.Setup(p => p.ValidateJwtForPost(It.IsAny<Guid>(), It.IsAny<string>())).Returns(Task.FromResult(true)); - - IActionResult result = this.PostController.Update(id, updatePostWebModel, null).Result; + this._postServiceMock + .Setup(p => p.UpdatePost(It.IsAny<UpdatePostServiceModel>())) + .ReturnsAsync(id); + this._mapperMock + .Setup(p => p.Map<UpdatePostServiceModel>(It.IsAny<UpdatePostWebModel>())) + .Returns(updatePostServiceModel); + this._jwtServiceMock + .Setup(p => p.ValidateToken(It.IsAny<Guid>(), It.IsAny<string>())) + .Returns(true); + this._postServiceMock + .Setup(p => p.ValidateJwtForPost(It.IsAny<Guid>(), It.IsAny<string>())) + .ReturnsAsync(true); + + IActionResult result = this._postController.Update(id, updatePostWebModel, null).Result; Assert.IsInstanceOf<OkObjectResult>(result); } @@ -171,11 +206,20 @@ namespace DevHive.Web.Tests NewMessage = MESSAGE }; - this.PostServiceMock.Setup(p => p.UpdatePost(It.IsAny<UpdatePostServiceModel>())).Returns(Task.FromResult(Guid.Empty)); - this.MapperMock.Setup(p => p.Map<UpdatePostServiceModel>(It.IsAny<UpdatePostWebModel>())).Returns(updatePostServiceModel); - this.PostServiceMock.Setup(p => p.ValidateJwtForPost(It.IsAny<Guid>(), It.IsAny<string>())).Returns(Task.FromResult(true)); - - IActionResult result = this.PostController.Update(id, updatePostWebModel, null).Result; + this._postServiceMock + .Setup(p => p.UpdatePost(It.IsAny<UpdatePostServiceModel>())) + .ReturnsAsync(Guid.Empty); + this._mapperMock + .Setup(p => p.Map<UpdatePostServiceModel>(It.IsAny<UpdatePostWebModel>())) + .Returns(updatePostServiceModel); + this._jwtServiceMock + .Setup(p => p.ValidateToken(It.IsAny<Guid>(), It.IsAny<string>())) + .Returns(true); + this._postServiceMock + .Setup(p => p.ValidateJwtForPost(It.IsAny<Guid>(), It.IsAny<string>())) + .ReturnsAsync(true); + + IActionResult result = this._postController.Update(id, updatePostWebModel, null).Result; Assert.IsInstanceOf<BadRequestObjectResult>(result); BadRequestObjectResult badRequestObjectResult = result as BadRequestObjectResult; @@ -192,9 +236,11 @@ namespace DevHive.Web.Tests NewMessage = MESSAGE }; - this.PostServiceMock.Setup(p => p.ValidateJwtForPost(It.IsAny<Guid>(), It.IsAny<string>())).Returns(Task.FromResult(false)); + this._postServiceMock + .Setup(p => p.ValidateJwtForPost(It.IsAny<Guid>(), It.IsAny<string>())) + .ReturnsAsync(false); - IActionResult result = this.PostController.Update(Guid.Empty, updatePostWebModel, null).Result; + IActionResult result = this._postController.Update(Guid.Empty, updatePostWebModel, null).Result; Assert.IsInstanceOf<UnauthorizedResult>(result); } @@ -206,10 +252,17 @@ namespace DevHive.Web.Tests { Guid id = Guid.NewGuid(); - this.PostServiceMock.Setup(p => p.DeletePost(It.IsAny<Guid>())).Returns(Task.FromResult(true)); - this.PostServiceMock.Setup(p => p.ValidateJwtForPost(It.IsAny<Guid>(), It.IsAny<string>())).Returns(Task.FromResult(true)); + this._postServiceMock + .Setup(p => p.DeletePost(It.IsAny<Guid>())) + .ReturnsAsync(true); + this._jwtServiceMock + .Setup(p => p.ValidateToken(It.IsAny<Guid>(), It.IsAny<string>())) + .Returns(true); + this._postServiceMock + .Setup(p => p.ValidateJwtForPost(It.IsAny<Guid>(), It.IsAny<string>())) + .ReturnsAsync(true); - IActionResult result = this.PostController.Delete(id, null).Result; + IActionResult result = this._postController.Delete(id, null).Result; Assert.IsInstanceOf<OkResult>(result); } @@ -220,10 +273,17 @@ namespace DevHive.Web.Tests string message = "Could not delete Post"; Guid id = Guid.NewGuid(); - this.PostServiceMock.Setup(p => p.DeletePost(It.IsAny<Guid>())).Returns(Task.FromResult(false)); - this.PostServiceMock.Setup(p => p.ValidateJwtForPost(It.IsAny<Guid>(), It.IsAny<string>())).Returns(Task.FromResult(true)); + this._postServiceMock + .Setup(p => p.DeletePost(It.IsAny<Guid>())) + .ReturnsAsync(false); + this._jwtServiceMock + .Setup(p => p.ValidateToken(It.IsAny<Guid>(), It.IsAny<string>())) + .Returns(true); + this._postServiceMock + .Setup(p => p.ValidateJwtForPost(It.IsAny<Guid>(), It.IsAny<string>())) + .ReturnsAsync(true); - IActionResult result = this.PostController.Delete(id, null).Result; + IActionResult result = this._postController.Delete(id, null).Result; Assert.IsInstanceOf<BadRequestObjectResult>(result); @@ -236,9 +296,11 @@ namespace DevHive.Web.Tests [Test] public void DeletePost_ReturnsUnauthorizedResult_WhenUserIsNotAuthorized() { - this.PostServiceMock.Setup(p => p.ValidateJwtForPost(It.IsAny<Guid>(), It.IsAny<string>())).Returns(Task.FromResult(false)); + this._postServiceMock + .Setup(p => p.ValidateJwtForPost(It.IsAny<Guid>(), It.IsAny<string>())) + .ReturnsAsync(false); - IActionResult result = this.PostController.Delete(Guid.Empty, null).Result; + IActionResult result = this._postController.Delete(Guid.Empty, null).Result; Assert.IsInstanceOf<UnauthorizedResult>(result); } diff --git a/src/Web/DevHive.Web.Tests/RatingController.Tests.cs b/src/Web/DevHive.Web.Tests/RatingController.Tests.cs new file mode 100644 index 0000000..c7340a6 --- /dev/null +++ b/src/Web/DevHive.Web.Tests/RatingController.Tests.cs @@ -0,0 +1,299 @@ +using System; +using System.Linq; +using System.Threading.Tasks; +using AutoMapper; +using DevHive.Common.Jwt.Interfaces; +using DevHive.Services.Interfaces; +using DevHive.Services.Models.Rating; +using DevHive.Web.Controllers; +using DevHive.Web.Models.Rating; +using Microsoft.AspNetCore.Mvc; +using Moq; +using NUnit.Framework; + +namespace DevHive.Web.Tests +{ + [TestFixture] + public class RatingControllerTests + { + private Mock<IRatingService> _ratingServiceMock; + private Mock<IMapper> _mapperMock; + private Mock<IJwtService> _jwtServiceMock; + private RatingController _ratingController; + + [SetUp] + public void SetUp() + { + this._ratingServiceMock = new Mock<IRatingService>(); + this._mapperMock = new Mock<IMapper>(); + this._jwtServiceMock = new Mock<IJwtService>(); + this._ratingController = new RatingController(this._ratingServiceMock.Object, this._mapperMock.Object, this._jwtServiceMock.Object); + } + + #region Create + [Test] + public void CreateRating_ReturnsOkObjectResult_WhenRatingIsSuccessfullyCreated() + { + Guid postId = Guid.NewGuid(); + CreateRatingWebModel createRatingWebModel = new CreateRatingWebModel + { + PostId = postId, + IsLike = true + }; + CreateRatingServiceModel createRatingServiceModel = new CreateRatingServiceModel + { + PostId = postId, + IsLike = true + }; + Guid ratingId = Guid.NewGuid(); + + this._jwtServiceMock + .Setup(p => p.ValidateToken(It.IsAny<Guid>(), It.IsAny<string>())) + .Returns(true); + this._mapperMock + .Setup(p => p.Map<CreateRatingServiceModel>(It.IsAny<CreateRatingWebModel>())) + .Returns(createRatingServiceModel); + this._ratingServiceMock + .Setup(p => p.RatePost(It.IsAny<CreateRatingServiceModel>())) + .ReturnsAsync(ratingId); + + IActionResult result = this._ratingController.RatePost(Guid.Empty, createRatingWebModel, String.Empty).Result; + + Assert.IsInstanceOf<OkObjectResult>(result); + + var splitted = (result as OkObjectResult).Value + .ToString() + .Split('{', '}', '=', ' ') + .Where(x => !string.IsNullOrEmpty(x)) + .ToArray(); + + Guid resultId = Guid.Parse(splitted[1]); + + Assert.AreEqual(ratingId, resultId); + } + + [Test] + public void CreateRating_ReturnsBadRequestResult_WhenRatingIsNotSuccessfullyCreated() + { + Guid postId = Guid.NewGuid(); + CreateRatingWebModel createRatingWebModel = new CreateRatingWebModel + { + PostId = postId, + IsLike = true + }; + CreateRatingServiceModel createRatingServiceModel = new CreateRatingServiceModel + { + PostId = postId, + IsLike = true + }; + Guid ratingId = Guid.NewGuid(); + + this._jwtServiceMock + .Setup(p => p.ValidateToken(It.IsAny<Guid>(), It.IsAny<string>())) + .Returns(true); + this._mapperMock + .Setup(p => p.Map<CreateRatingServiceModel>(It.IsAny<CreateRatingWebModel>())) + .Returns(createRatingServiceModel); + this._ratingServiceMock + .Setup(p => p.RatePost(It.IsAny<CreateRatingServiceModel>())) + .ReturnsAsync(Guid.Empty); + + IActionResult result = this._ratingController.RatePost(Guid.Empty, createRatingWebModel, String.Empty).Result; + + Assert.IsInstanceOf<BadRequestResult>(result); + } + #endregion + + #region Read + [Test] + public void GetRatingById_ReturnsTheRating_WhenItExists() + { + Guid id = Guid.NewGuid(); + Guid userId = Guid.NewGuid(); + Guid postId = Guid.NewGuid(); + ReadRatingWebModel readRatingWebModel = new ReadRatingWebModel + { + Id = id, + UserId = userId, + PostId = postId, + IsLike = true + }; + ReadRatingServiceModel readRatingServiceModel = new ReadRatingServiceModel + { + Id = id, + UserId = userId, + PostId = postId, + IsLike = true + }; + + this._mapperMock + .Setup(p => p.Map<ReadRatingServiceModel>(It.IsAny<ReadRatingWebModel>())) + .Returns(readRatingServiceModel); + this._ratingServiceMock + .Setup(p => p.GetRatingById(It.IsAny<Guid>())) + .ReturnsAsync(readRatingServiceModel); + + IActionResult result = this._ratingController.GetRatingById(id).Result; + + Assert.IsInstanceOf<OkObjectResult>(result); + } + + [Test] + public void GetRatingByUserAndPost_ReturnsTheRating_WhenItExists() + { + Guid id = Guid.NewGuid(); + Guid userId = Guid.NewGuid(); + Guid postId = Guid.NewGuid(); + ReadRatingWebModel readRatingWebModel = new ReadRatingWebModel + { + Id = id, + UserId = userId, + PostId = postId, + IsLike = true + }; + ReadRatingServiceModel readRatingServiceModel = new ReadRatingServiceModel + { + Id = id, + UserId = userId, + PostId = postId, + IsLike = true + }; + + this._mapperMock + .Setup(p => p.Map<ReadRatingServiceModel>(It.IsAny<ReadRatingWebModel>())) + .Returns(readRatingServiceModel); + this._ratingServiceMock + .Setup(p => p.GetRatingByPostAndUser(It.IsAny<Guid>(), It.IsAny<Guid>())) + .ReturnsAsync(readRatingServiceModel); + + IActionResult result = this._ratingController.GetRatingByUserAndPost(userId, postId).Result; + + Assert.IsInstanceOf<OkObjectResult>(result); + } + + #endregion + + #region Update + [Test] + public void Update_ShouldReturnOkResult_WhenRatingIsUpdatedSuccessfully() + { + Guid id = Guid.NewGuid(); + Guid userId = Guid.NewGuid(); + Guid postId = Guid.NewGuid(); + UpdateRatingWebModel updateRatingWebModel = new UpdateRatingWebModel + { + IsLike = true + }; + UpdateRatingServiceModel updateRatingServiceModel = new UpdateRatingServiceModel + { + Id = id, + UserId = userId, + PostId = postId, + IsLike = true + }; + ReadRatingWebModel readRatingWebModel = new ReadRatingWebModel + { + Id = id, + UserId = userId, + PostId = postId, + IsLike = true + }; + ReadRatingServiceModel readRatingServiceModel = new ReadRatingServiceModel + { + Id = id, + UserId = userId, + PostId = postId, + IsLike = true + }; + + this._jwtServiceMock + .Setup(p => p.ValidateToken(It.IsAny<Guid>(), It.IsAny<string>())) + .Returns(true); + this._mapperMock + .Setup(p => p.Map<UpdateRatingServiceModel>(It.IsAny<UpdateRatingWebModel>())) + .Returns(updateRatingServiceModel); + this._mapperMock + .Setup(p => p.Map<ReadRatingWebModel>(It.IsAny<ReadRatingServiceModel>())) + .Returns(readRatingWebModel); + this._ratingServiceMock + .Setup(p => p.UpdateRating(It.IsAny<UpdateRatingServiceModel>())) + .ReturnsAsync(readRatingServiceModel); + + IActionResult result = this._ratingController.UpdateRating(userId, postId, updateRatingWebModel, String.Empty).Result; + + Assert.IsInstanceOf<OkObjectResult>(result); + } + + [Test] + public void Update_ShouldReturnBadObjectResult_WhenLanguageIsNotUpdatedSuccessfully() + { + Guid id = Guid.NewGuid(); + UpdateRatingWebModel updateRatingWebModel = new UpdateRatingWebModel + { + IsLike = true + }; + UpdateRatingServiceModel updateRatingServiceModel = new UpdateRatingServiceModel + { + Id = id, + IsLike = true + }; + + this._jwtServiceMock + .Setup(p => p.ValidateToken(It.IsAny<Guid>(), It.IsAny<string>())) + .Returns(true); + this._mapperMock + .Setup(p => p.Map<UpdateRatingServiceModel>(It.IsAny<UpdateRatingWebModel>())) + .Returns(updateRatingServiceModel); + this._ratingServiceMock + .Setup(p => p.UpdateRating(It.IsAny<UpdateRatingServiceModel>())) + .Returns(Task.FromResult<ReadRatingServiceModel>(null)); + + IActionResult result = this._ratingController.UpdateRating(Guid.Empty, Guid.Empty, updateRatingWebModel, String.Empty).Result; + + Assert.IsInstanceOf<BadRequestResult>(result); + } + #endregion + + #region Delete + [Test] + public void Delete_ReturnsOkResult_WhenRatingIsDeletedSuccessfully() + { + Guid id = Guid.NewGuid(); + + this._jwtServiceMock + .Setup(p => p.ValidateToken(It.IsAny<Guid>(), It.IsAny<string>())) + .Returns(true); + this._ratingServiceMock + .Setup(p => p.DeleteRating(It.IsAny<Guid>())) + .ReturnsAsync(true); + + IActionResult result = this._ratingController.DeleteRating(Guid.Empty, Guid.Empty, String.Empty).Result; + + Assert.IsInstanceOf<OkResult>(result); + } + + [Test] + public void Delete_ReturnsBadRequestObjectResult_WhenRatingIsNotDeletedSuccessfully() + { + string message = "Could not delete Rating"; + Guid id = Guid.NewGuid(); + + this._jwtServiceMock + .Setup(p => p.ValidateToken(It.IsAny<Guid>(), It.IsAny<string>())) + .Returns(true); + this._ratingServiceMock + .Setup(p => p.DeleteRating(It.IsAny<Guid>())) + .ReturnsAsync(false); + + IActionResult result = this._ratingController.DeleteRating(Guid.Empty, Guid.Empty, String.Empty).Result; + + Assert.IsInstanceOf<BadRequestObjectResult>(result); + + BadRequestObjectResult badRequestObjectResult = result as BadRequestObjectResult; + string resultModel = badRequestObjectResult.Value.ToString(); + + Assert.AreEqual(message, resultModel); + } + #endregion + } +} diff --git a/src/Web/DevHive.Web.Tests/RoleController.Tests.cs b/src/Web/DevHive.Web.Tests/RoleController.Tests.cs index 1eaf0c5..d1c3381 100644 --- a/src/Web/DevHive.Web.Tests/RoleController.Tests.cs +++ b/src/Web/DevHive.Web.Tests/RoleController.Tests.cs @@ -1,6 +1,5 @@ using System; using System.Linq; -using System.Threading.Tasks; using AutoMapper; using DevHive.Services.Interfaces; using DevHive.Services.Models.Role; @@ -16,16 +15,16 @@ namespace DevHive.Web.Tests public class RoleControllerTests { const string NAME = "Gosho Trapov"; - private Mock<IRoleService> RoleServiceMock { get; set; } - private Mock<IMapper> MapperMock { get; set; } - private RoleController RoleController { get; set; } + private Mock<IRoleService> _roleServiceMock; + private Mock<IMapper> _mapperMock; + private RoleController _roleController; [SetUp] public void SetUp() { - this.RoleServiceMock = new(); - this.MapperMock = new(); - this.RoleController = new(this.RoleServiceMock.Object, this.MapperMock.Object); + this._roleServiceMock = new Mock<IRoleService>(); + this._mapperMock = new Mock<IMapper>(); + this._roleController = new RoleController(this._roleServiceMock.Object, this._mapperMock.Object); } #region Create @@ -42,10 +41,14 @@ namespace DevHive.Web.Tests }; Guid id = Guid.NewGuid(); - this.MapperMock.Setup(p => p.Map<CreateRoleServiceModel>(It.IsAny<CreateRoleWebModel>())).Returns(createRoleServiceModel); - this.RoleServiceMock.Setup(p => p.CreateRole(It.IsAny<CreateRoleServiceModel>())).Returns(Task.FromResult(id)); + this._mapperMock + .Setup(p => p.Map<CreateRoleServiceModel>(It.IsAny<CreateRoleWebModel>())) + .Returns(createRoleServiceModel); + this._roleServiceMock + .Setup(p => p.CreateRole(It.IsAny<CreateRoleServiceModel>())) + .ReturnsAsync(id); - IActionResult result = this.RoleController.Create(createRoleWebModel).Result; + IActionResult result = this._roleController.Create(createRoleWebModel).Result; Assert.IsInstanceOf<OkObjectResult>(result); @@ -74,10 +77,14 @@ namespace DevHive.Web.Tests Guid id = Guid.Empty; string errorMessage = $"Could not create role {NAME}"; - this.MapperMock.Setup(p => p.Map<CreateRoleServiceModel>(It.IsAny<CreateRoleWebModel>())).Returns(createTechnologyServiceModel); - this.RoleServiceMock.Setup(p => p.CreateRole(It.IsAny<CreateRoleServiceModel>())).Returns(Task.FromResult(id)); + this._mapperMock + .Setup(p => p.Map<CreateRoleServiceModel>(It.IsAny<CreateRoleWebModel>())) + .Returns(createTechnologyServiceModel); + this._roleServiceMock + .Setup(p => p.CreateRole(It.IsAny<CreateRoleServiceModel>())) + .ReturnsAsync(id); - IActionResult result = this.RoleController.Create(createTechnologyWebModel).Result; + IActionResult result = this._roleController.Create(createTechnologyWebModel).Result; Assert.IsInstanceOf<BadRequestObjectResult>(result); @@ -103,10 +110,14 @@ namespace DevHive.Web.Tests Name = NAME }; - this.RoleServiceMock.Setup(p => p.GetRoleById(It.IsAny<Guid>())).Returns(Task.FromResult(roleServiceModel)); - this.MapperMock.Setup(p => p.Map<RoleWebModel>(It.IsAny<RoleServiceModel>())).Returns(roleWebModel); + this._roleServiceMock + .Setup(p => p.GetRoleById(It.IsAny<Guid>())) + .ReturnsAsync(roleServiceModel); + this._mapperMock + .Setup(p => p.Map<RoleWebModel>(It.IsAny<RoleServiceModel>())) + .Returns(roleWebModel); - IActionResult result = this.RoleController.GetById(id).Result; + IActionResult result = this._roleController.GetById(id).Result; Assert.IsInstanceOf<OkObjectResult>(result); @@ -131,10 +142,14 @@ namespace DevHive.Web.Tests Name = NAME }; - this.RoleServiceMock.Setup(p => p.UpdateRole(It.IsAny<UpdateRoleServiceModel>())).Returns(Task.FromResult(true)); - this.MapperMock.Setup(p => p.Map<UpdateRoleServiceModel>(It.IsAny<UpdateRoleWebModel>())).Returns(updateRoleServiceModel); + this._roleServiceMock + .Setup(p => p.UpdateRole(It.IsAny<UpdateRoleServiceModel>())) + .ReturnsAsync(true); + this._mapperMock + .Setup(p => p.Map<UpdateRoleServiceModel>(It.IsAny<UpdateRoleWebModel>())) + .Returns(updateRoleServiceModel); - IActionResult result = this.RoleController.Update(id, updateRoleWebModel).Result; + IActionResult result = this._roleController.Update(id, updateRoleWebModel).Result; Assert.IsInstanceOf<OkResult>(result); } @@ -153,10 +168,14 @@ namespace DevHive.Web.Tests Name = NAME }; - this.RoleServiceMock.Setup(p => p.UpdateRole(It.IsAny<UpdateRoleServiceModel>())).Returns(Task.FromResult(false)); - this.MapperMock.Setup(p => p.Map<UpdateRoleServiceModel>(It.IsAny<UpdateRoleWebModel>())).Returns(updateRoleServiceModel); + this._roleServiceMock + .Setup(p => p.UpdateRole(It.IsAny<UpdateRoleServiceModel>())) + .ReturnsAsync(false); + this._mapperMock + .Setup(p => p.Map<UpdateRoleServiceModel>(It.IsAny<UpdateRoleWebModel>())) + .Returns(updateRoleServiceModel); - IActionResult result = this.RoleController.Update(id, updateRoleWebModel).Result; + IActionResult result = this._roleController.Update(id, updateRoleWebModel).Result; Assert.IsInstanceOf<BadRequestObjectResult>(result); BadRequestObjectResult badRequestObjectResult = result as BadRequestObjectResult; @@ -172,22 +191,26 @@ namespace DevHive.Web.Tests { Guid id = Guid.NewGuid(); - this.RoleServiceMock.Setup(p => p.DeleteRole(It.IsAny<Guid>())).Returns(Task.FromResult(true)); + this._roleServiceMock + .Setup(p => p.DeleteRole(It.IsAny<Guid>())) + .ReturnsAsync(true); - IActionResult result = this.RoleController.Delete(id).Result; + IActionResult result = this._roleController.Delete(id).Result; Assert.IsInstanceOf<OkResult>(result); } [Test] - public void Delet_ReturnsBadRequestObjectResult_WhenRoleIsNotDeletedSuccessfully() + public void Delete_ReturnsBadRequestObjectResult_WhenRoleIsNotDeletedSuccessfully() { string message = "Could not delete role!"; Guid id = Guid.NewGuid(); - this.RoleServiceMock.Setup(p => p.DeleteRole(It.IsAny<Guid>())).Returns(Task.FromResult(false)); + this._roleServiceMock + .Setup(p => p.DeleteRole(It.IsAny<Guid>())) + .ReturnsAsync(false); - IActionResult result = this.RoleController.Delete(id).Result; + IActionResult result = this._roleController.Delete(id).Result; Assert.IsInstanceOf<BadRequestObjectResult>(result); diff --git a/src/Web/DevHive.Web.Tests/TechnologyController.Tests.cs b/src/Web/DevHive.Web.Tests/TechnologyController.Tests.cs index d276951..723fb73 100644 --- a/src/Web/DevHive.Web.Tests/TechnologyController.Tests.cs +++ b/src/Web/DevHive.Web.Tests/TechnologyController.Tests.cs @@ -1,5 +1,4 @@ using AutoMapper; -using DevHive.Common.Models.Misc; using DevHive.Services.Interfaces; using DevHive.Services.Models.Technology; using DevHive.Web.Controllers; @@ -9,7 +8,6 @@ using Moq; using NUnit.Framework; using System; using System.Linq; -using System.Threading.Tasks; namespace DevHive.Web.Tests { @@ -17,17 +15,17 @@ namespace DevHive.Web.Tests public class TechnologyControllerTests { const string NAME = "Gosho Trapov"; - private Mock<ITechnologyService> TechnologyServiceMock { get; set; } - private Mock<IMapper> MapperMock { get; set; } - private TechnologyController TechnologyController { get; set; } + private Mock<ITechnologyService> _technologyServiceMock; + private Mock<IMapper> _mapperMock; + private TechnologyController _technologyController; #region SetUp [SetUp] public void SetUp() { - this.TechnologyServiceMock = new(); - this.MapperMock = new(); - this.TechnologyController = new(this.TechnologyServiceMock.Object, this.MapperMock.Object); + this._technologyServiceMock = new Mock<ITechnologyService>(); + this._mapperMock = new Mock<IMapper>(); + this._technologyController = new TechnologyController(this._technologyServiceMock.Object, this._mapperMock.Object); } #endregion @@ -45,10 +43,14 @@ namespace DevHive.Web.Tests }; Guid id = Guid.NewGuid(); - this.MapperMock.Setup(p => p.Map<CreateTechnologyServiceModel>(It.IsAny<CreateTechnologyWebModel>())).Returns(createTechnologyServiceModel); - this.TechnologyServiceMock.Setup(p => p.CreateTechnology(It.IsAny<CreateTechnologyServiceModel>())).Returns(Task.FromResult(id)); + this._mapperMock + .Setup(p => p.Map<CreateTechnologyServiceModel>(It.IsAny<CreateTechnologyWebModel>())) + .Returns(createTechnologyServiceModel); + this._technologyServiceMock + .Setup(p => p.CreateTechnology(It.IsAny<CreateTechnologyServiceModel>())) + .ReturnsAsync(id); - IActionResult result = this.TechnologyController.Create(createTechnologyWebModel).Result; + IActionResult result = this._technologyController.Create(createTechnologyWebModel).Result; Assert.IsInstanceOf<OkObjectResult>(result); @@ -77,10 +79,14 @@ namespace DevHive.Web.Tests Guid id = Guid.Empty; string errorMessage = $"Could not create technology {NAME}"; - this.MapperMock.Setup(p => p.Map<CreateTechnologyServiceModel>(It.IsAny<CreateTechnologyWebModel>())).Returns(createTechnologyServiceModel); - this.TechnologyServiceMock.Setup(p => p.CreateTechnology(It.IsAny<CreateTechnologyServiceModel>())).Returns(Task.FromResult(id)); + this._mapperMock + .Setup(p => p.Map<CreateTechnologyServiceModel>(It.IsAny<CreateTechnologyWebModel>())) + .Returns(createTechnologyServiceModel); + this._technologyServiceMock + .Setup(p => p.CreateTechnology(It.IsAny<CreateTechnologyServiceModel>())) + .ReturnsAsync(id); - IActionResult result = this.TechnologyController.Create(createTechnologyWebModel).Result; + IActionResult result = this._technologyController.Create(createTechnologyWebModel).Result; Assert.IsInstanceOf<BadRequestObjectResult>(result); @@ -106,10 +112,14 @@ namespace DevHive.Web.Tests Name = NAME }; - this.TechnologyServiceMock.Setup(p => p.GetTechnologyById(It.IsAny<Guid>())).Returns(Task.FromResult(readTechnologyServiceModel)); - this.MapperMock.Setup(p => p.Map<ReadTechnologyWebModel>(It.IsAny<ReadTechnologyServiceModel>())).Returns(readTechnologyWebModel); + this._technologyServiceMock + .Setup(p => p.GetTechnologyById(It.IsAny<Guid>())) + .ReturnsAsync(readTechnologyServiceModel); + this._mapperMock + .Setup(p => p.Map<ReadTechnologyWebModel>(It.IsAny<ReadTechnologyServiceModel>())) + .Returns(readTechnologyWebModel); - IActionResult result = this.TechnologyController.GetById(id).Result; + IActionResult result = this._technologyController.GetById(id).Result; Assert.IsInstanceOf<OkObjectResult>(result); @@ -134,10 +144,14 @@ namespace DevHive.Web.Tests Name = NAME }; - this.TechnologyServiceMock.Setup(p => p.UpdateTechnology(It.IsAny<UpdateTechnologyServiceModel>())).Returns(Task.FromResult(true)); - this.MapperMock.Setup(p => p.Map<UpdateTechnologyServiceModel>(It.IsAny<UpdateTechnologyWebModel>())).Returns(updateTechnologyServiceModel); + this._technologyServiceMock + .Setup(p => p.UpdateTechnology(It.IsAny<UpdateTechnologyServiceModel>())) + .ReturnsAsync(true); + this._mapperMock + .Setup(p => p.Map<UpdateTechnologyServiceModel>(It.IsAny<UpdateTechnologyWebModel>())) + .Returns(updateTechnologyServiceModel); - IActionResult result = this.TechnologyController.Update(id, updateTechnologyWebModel).Result; + IActionResult result = this._technologyController.Update(id, updateTechnologyWebModel).Result; Assert.IsInstanceOf<OkResult>(result); } @@ -156,10 +170,14 @@ namespace DevHive.Web.Tests Name = NAME }; - this.TechnologyServiceMock.Setup(p => p.UpdateTechnology(It.IsAny<UpdateTechnologyServiceModel>())).Returns(Task.FromResult(false)); - this.MapperMock.Setup(p => p.Map<UpdateTechnologyServiceModel>(It.IsAny<UpdateTechnologyWebModel>())).Returns(updateTechnologyServiceModel); + this._technologyServiceMock + .Setup(p => p.UpdateTechnology(It.IsAny<UpdateTechnologyServiceModel>())) + .ReturnsAsync(false); + this._mapperMock + .Setup(p => p.Map<UpdateTechnologyServiceModel>(It.IsAny<UpdateTechnologyWebModel>())) + .Returns(updateTechnologyServiceModel); - IActionResult result = this.TechnologyController.Update(id, updateTechnologyWebModel).Result; + IActionResult result = this._technologyController.Update(id, updateTechnologyWebModel).Result; Assert.IsInstanceOf<BadRequestObjectResult>(result); BadRequestObjectResult badRequestObjectResult = result as BadRequestObjectResult; @@ -175,9 +193,11 @@ namespace DevHive.Web.Tests { Guid id = Guid.NewGuid(); - this.TechnologyServiceMock.Setup(p => p.DeleteTechnology(It.IsAny<Guid>())).Returns(Task.FromResult(true)); + this._technologyServiceMock + .Setup(p => p.DeleteTechnology(It.IsAny<Guid>())) + .ReturnsAsync(true); - IActionResult result = this.TechnologyController.Delete(id).Result; + IActionResult result = this._technologyController.Delete(id).Result; Assert.IsInstanceOf<OkResult>(result); } @@ -188,9 +208,11 @@ namespace DevHive.Web.Tests string message = "Could not delete Technology"; Guid id = Guid.NewGuid(); - this.TechnologyServiceMock.Setup(p => p.DeleteTechnology(It.IsAny<Guid>())).Returns(Task.FromResult(false)); + this._technologyServiceMock + .Setup(p => p.DeleteTechnology(It.IsAny<Guid>())) + .ReturnsAsync(false); - IActionResult result = this.TechnologyController.Delete(id).Result; + IActionResult result = this._technologyController.Delete(id).Result; Assert.IsInstanceOf<BadRequestObjectResult>(result); diff --git a/src/Web/DevHive.Web.Tests/UserController.Tests.cs b/src/Web/DevHive.Web.Tests/UserController.Tests.cs index 3dfcfa3..3f88709 100644 --- a/src/Web/DevHive.Web.Tests/UserController.Tests.cs +++ b/src/Web/DevHive.Web.Tests/UserController.Tests.cs @@ -1,6 +1,6 @@ using System; -using System.Threading.Tasks; using AutoMapper; +using DevHive.Common.Jwt.Interfaces; using DevHive.Common.Models.Identity; using DevHive.Services.Interfaces; using DevHive.Services.Models.User; @@ -16,16 +16,18 @@ namespace DevHive.Web.Tests 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; } + private Mock<IUserService> _userServiceMock; + private Mock<IMapper> _mapperMock; + private Mock<IJwtService> _jwtServiceMock; + private UserController _userController; [SetUp] public void SetUp() { - this.UserServiceMock = new(); - this.MapperMock = new(); - this.UserController = new(this.UserServiceMock.Object, this.MapperMock.Object); + this._userServiceMock = new Mock<IUserService>(); + this._mapperMock = new Mock<IMapper>(); + this._jwtServiceMock = new Mock<IJwtService>(); + this._userController = new UserController(this._userServiceMock.Object, this._mapperMock.Object, this._jwtServiceMock.Object); } #region Create @@ -44,11 +46,17 @@ namespace DevHive.Web.Tests TokenModel tokenModel = new(token); TokenWebModel tokenWebModel = new(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)); + 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>())) + .ReturnsAsync(tokenModel); - IActionResult result = this.UserController.Login(loginWebModel).Result; + IActionResult result = this._userController.Login(loginWebModel).Result; Assert.IsInstanceOf<OkObjectResult>(result); @@ -72,11 +80,17 @@ namespace DevHive.Web.Tests TokenModel tokenModel = new(token); TokenWebModel tokenWebModel = new(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)); + 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>())) + .ReturnsAsync(tokenModel); - IActionResult result = this.UserController.Register(registerWebModel).Result; + IActionResult result = this._userController.Register(registerWebModel).Result; Assert.IsInstanceOf<CreatedResult>(result); @@ -102,11 +116,17 @@ namespace DevHive.Web.Tests 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); + this._userServiceMock + .Setup(p => p.GetUserById(It.IsAny<Guid>())) + .ReturnsAsync(userServiceModel); + this._jwtServiceMock + .Setup(p => p.ValidateToken(It.IsAny<Guid>(), It.IsAny<string>())) + .Returns(true); + this._mapperMock + .Setup(p => p.Map<UserWebModel>(It.IsAny<UserServiceModel>())) + .Returns(userWebModel); - IActionResult result = this.UserController.GetById(id, null).Result; + IActionResult result = this._userController.GetById(id, null).Result; Assert.IsInstanceOf<OkObjectResult>(result); @@ -119,9 +139,11 @@ namespace DevHive.Web.Tests [Test] public void GetById_ReturnsUnauthorizedResult_WhenUserIsNotAuthorized() { - this.UserServiceMock.Setup(p => p.ValidJWT(It.IsAny<Guid>(), It.IsAny<string>())).Returns(Task.FromResult(false)); + this._jwtServiceMock + .Setup(p => p.ValidateToken(It.IsAny<Guid>(), It.IsAny<string>())) + .Returns(false); - IActionResult result = this.UserController.GetById(Guid.NewGuid(), null).Result; + IActionResult result = this._userController.GetById(Guid.NewGuid(), null).Result; Assert.IsInstanceOf<UnauthorizedResult>(result); } @@ -138,10 +160,14 @@ namespace DevHive.Web.Tests 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); + this._userServiceMock + .Setup(p => p.GetUserByUsername(It.IsAny<string>())) + .ReturnsAsync(userServiceModel); + this._mapperMock + .Setup(p => p.Map<UserWebModel>(It.IsAny<UserServiceModel>())) + .Returns(userWebModel); - IActionResult result = this.UserController.GetUser(null).Result; + IActionResult result = this._userController.GetUser(null).Result; Assert.IsInstanceOf<OkObjectResult>(result); @@ -170,45 +196,20 @@ namespace DevHive.Web.Tests 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); + this._userServiceMock + .Setup(p => p.UpdateUser(It.IsAny<UpdateUserServiceModel>())) + .ReturnsAsync(userServiceModel); + this._jwtServiceMock + .Setup(p => p.ValidateToken(It.IsAny<Guid>(), It.IsAny<string>())) + .Returns(true); + this._mapperMock + .Setup(p => p.Map<UpdateUserServiceModel>(It.IsAny<UpdateUserWebModel>())) + .Returns(updateUserServiceModel); - IActionResult result = this.UserController.Update(id, updateUserWebModel, null).Result; + 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(); - UpdateProfilePictureServiceModel updateProfilePictureServiceModel = new(); - ProfilePictureServiceModel profilePictureServiceModel = new() - { - ProfilePictureURL = profilePictureURL - }; - ProfilePictureWebModel profilePictureWebModel = new() - { - 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 ProfilePictureWebModel; - - Assert.AreEqual(profilePictureURL, resultModel.ProfilePictureURL); - } #endregion #region Delete @@ -217,10 +218,14 @@ namespace DevHive.Web.Tests { 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)); + this._jwtServiceMock + .Setup(p => p.ValidateToken(It.IsAny<Guid>(), It.IsAny<string>())) + .Returns(true); + this._userServiceMock + .Setup(p => p.DeleteUser(It.IsAny<Guid>())) + .ReturnsAsync(true); - IActionResult result = this.UserController.Delete(id, null).Result; + IActionResult result = this._userController.Delete(id, null).Result; Assert.IsInstanceOf<OkResult>(result); } @@ -231,10 +236,14 @@ namespace DevHive.Web.Tests 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)); + this._jwtServiceMock + .Setup(p => p.ValidateToken(It.IsAny<Guid>(), It.IsAny<string>())) + .Returns(true); + this._userServiceMock + .Setup(p => p.DeleteUser(It.IsAny<Guid>())) + .ReturnsAsync(false); - IActionResult result = this.UserController.Delete(id, null).Result; + IActionResult result = this._userController.Delete(id, null).Result; Assert.IsInstanceOf<BadRequestObjectResult>(result); diff --git a/src/Web/DevHive.Web/Configurations/Mapping/RatingMappings.cs b/src/Web/DevHive.Web/Configurations/Mapping/RatingMappings.cs index 23c3eeb..1d731d8 100644 --- a/src/Web/DevHive.Web/Configurations/Mapping/RatingMappings.cs +++ b/src/Web/DevHive.Web/Configurations/Mapping/RatingMappings.cs @@ -1,5 +1,5 @@ using AutoMapper; -using DevHive.Services.Models.Post.Rating; +using DevHive.Services.Models.Rating; using DevHive.Web.Models.Rating; namespace DevHive.Web.Configurations.Mapping diff --git a/src/Web/DevHive.Web/Controllers/CommentController.cs b/src/Web/DevHive.Web/Controllers/CommentController.cs index 1722801..8fa3577 100644 --- a/src/Web/DevHive.Web/Controllers/CommentController.cs +++ b/src/Web/DevHive.Web/Controllers/CommentController.cs @@ -10,6 +10,9 @@ using DevHive.Common.Jwt.Interfaces; namespace DevHive.Web.Controllers { + /// <summary> + /// All endpoints for interacting with the comments layer + /// </summary> [ApiController] [Route("/api/[controller]")] [Authorize(Roles = "User,Admin")] @@ -26,6 +29,13 @@ namespace DevHive.Web.Controllers this._jwtService = jwtService; } + /// <summary> + /// Create a comment and attach it to a post + /// </summary> + /// <param name="userId">The useer's Id</param> + /// <param name="createCommentWebModel">The new comment's parametars</param> + /// <param name="authorization">JWT Bearer token</param> + /// <returns>The comment's Id</returns> [HttpPost] public async Task<IActionResult> AddComment(Guid userId, [FromBody] CreateCommentWebModel createCommentWebModel, [FromHeader] string authorization) { @@ -46,16 +56,28 @@ namespace DevHive.Web.Controllers new OkObjectResult(new { Id = id }); } + /// <summary> + /// Query comment's data by it's Id + /// </summary> + /// <param name="commentId">The comment's Id</param> + /// <returns>Full data model of the comment</returns> [HttpGet] [AllowAnonymous] - public async Task<IActionResult> GetCommentById(Guid id) + public async Task<IActionResult> GetCommentById(Guid commentId) { - ReadCommentServiceModel readCommentServiceModel = await this._commentService.GetCommentById(id); + ReadCommentServiceModel readCommentServiceModel = await this._commentService.GetCommentById(commentId); ReadCommentWebModel readCommentWebModel = this._commentMapper.Map<ReadCommentWebModel>(readCommentServiceModel); return new OkObjectResult(readCommentWebModel); } + /// <summary> + /// Update comment's parametars. Comment creator only! + /// </summary> + /// <param name="userId">The comment creator's Id</param> + /// <param name="updateCommentWebModel">New comment's parametars</param> + /// <param name="authorization">JWT Bearer token</param> + /// <returns>Ok result</returns> [HttpPut] public async Task<IActionResult> UpdateComment(Guid userId, [FromBody] UpdateCommentWebModel updateCommentWebModel, [FromHeader] string authorization) { @@ -73,13 +95,19 @@ namespace DevHive.Web.Controllers new OkObjectResult(new { Id = id }); } + /// <summary> + /// Delete a comment. Comment creator only! + /// </summary> + /// <param name="commentId">Comment's Id</param> + /// <param name="authorization">JWT Bearer token</param> + /// <returns>Ok result</returns> [HttpDelete] - public async Task<IActionResult> DeleteComment(Guid id, [FromHeader] string authorization) + public async Task<IActionResult> DeleteComment(Guid commentId, [FromHeader] string authorization) { - if (!await this._commentService.ValidateJwtForComment(id, authorization)) + if (!await this._commentService.ValidateJwtForComment(commentId, authorization)) return new UnauthorizedResult(); - return await this._commentService.DeleteComment(id) ? + return await this._commentService.DeleteComment(commentId) ? new OkResult() : new BadRequestObjectResult("Could not delete Comment"); } diff --git a/src/Web/DevHive.Web/Controllers/FeedController.cs b/src/Web/DevHive.Web/Controllers/FeedController.cs index abca3e4..37532a9 100644 --- a/src/Web/DevHive.Web/Controllers/FeedController.cs +++ b/src/Web/DevHive.Web/Controllers/FeedController.cs @@ -10,6 +10,9 @@ using Microsoft.AspNetCore.Mvc; namespace DevHive.Web.Controllers { + /// <summary> + /// All endpoints for interacting with the feed layer + /// </summary> [ApiController] [Route("/api/[controller]")] [Authorize(Roles = "User,Admin")] @@ -24,6 +27,12 @@ namespace DevHive.Web.Controllers this._mapper = mapper; } + /// <summary> + /// Query posts for user's feed + /// </summary> + /// <param name="userId">The user's Id, whose feed is begin queried</param> + /// <param name="getPageWebModel">Page parametars</param> + /// <returns>A page of the feed</returns> [HttpPost] [Route("GetPosts")] public async Task<IActionResult> GetPosts(Guid userId, [FromBody] GetPageWebModel getPageWebModel) @@ -37,6 +46,12 @@ namespace DevHive.Web.Controllers return new OkObjectResult(readPageWebModel); } + /// <summary> + /// Query a user profile's posts + /// </summary> + /// <param name="username">The user's username, whose posts are being queried</param> + /// <param name="getPageWebModel">Page parametars</param> + /// <returns>A page of the user's posts</returns> [HttpPost] [Route("GetUserPosts")] [AllowAnonymous] diff --git a/src/Web/DevHive.Web/Controllers/LanguageController.cs b/src/Web/DevHive.Web/Controllers/LanguageController.cs index 5b0d5de..665fb66 100644 --- a/src/Web/DevHive.Web/Controllers/LanguageController.cs +++ b/src/Web/DevHive.Web/Controllers/LanguageController.cs @@ -10,6 +10,9 @@ using Microsoft.AspNetCore.Mvc; namespace DevHive.Web.Controllers { + /// <summary> + /// All endpoints for interacting with the language layer + /// </summary> [ApiController] [Route("/api/[controller]")] public class LanguageController @@ -23,6 +26,11 @@ namespace DevHive.Web.Controllers this._languageMapper = mapper; } + /// <summary> + /// Create a new language, so users can have a choice. Admin only! + /// </summary> + /// <param name="createLanguageWebModel">The new language's parametars</param> + /// <returns>The new language's Id</returns> [HttpPost] [Authorize(Roles = "Admin")] public async Task<IActionResult> Create([FromBody] CreateLanguageWebModel createLanguageWebModel) @@ -36,6 +44,11 @@ namespace DevHive.Web.Controllers new OkObjectResult(new { Id = id }); } + /// <summary> + /// Query full language data by Id + /// </summary> + /// <param name="id">The language's Id</param> + /// <returns>Full language data</returns> [HttpGet] [AllowAnonymous] public async Task<IActionResult> GetById(Guid id) @@ -46,6 +59,10 @@ namespace DevHive.Web.Controllers return new OkObjectResult(languageWebModel); } + /// <summary> + /// Query all languages in the database + /// </summary> + /// <returns>All languages in the database</returns> [HttpGet] [Route("GetLanguages")] [Authorize(Roles = "User,Admin")] @@ -57,6 +74,12 @@ namespace DevHive.Web.Controllers return new OkObjectResult(languageWebModels); } + /// <summary> + /// Alter language's properties. Admin only! + /// </summary> + /// <param name="id">The language's Id</param> + /// <param name="updateModel">The langauge's new parametars</param> + /// <returns>Ok result</returns> [HttpPut] [Authorize(Roles = "Admin")] public async Task<IActionResult> Update(Guid id, [FromBody] UpdateLanguageWebModel updateModel) @@ -72,11 +95,16 @@ namespace DevHive.Web.Controllers return new OkResult(); } + /// <summary> + /// Delete a language. Admin only! + /// </summary> + /// <param name="langaugeId">The language's Id</param> + /// <returns>Ok result</returns> [HttpDelete] [Authorize(Roles = "Admin")] - public async Task<IActionResult> Delete(Guid id) + public async Task<IActionResult> Delete(Guid langaugeId) { - bool result = await this._languageService.DeleteLanguage(id); + bool result = await this._languageService.DeleteLanguage(langaugeId); if (!result) return new BadRequestObjectResult("Could not delete Language"); diff --git a/src/Web/DevHive.Web/Controllers/PostController.cs b/src/Web/DevHive.Web/Controllers/PostController.cs index 309070c..44b291d 100644 --- a/src/Web/DevHive.Web/Controllers/PostController.cs +++ b/src/Web/DevHive.Web/Controllers/PostController.cs @@ -10,6 +10,9 @@ using DevHive.Common.Jwt.Interfaces; namespace DevHive.Web.Controllers { + /// <summary> + /// All endpoints for interacting with the post layer + /// </summary> [ApiController] [Route("/api/[controller]")] [Authorize(Roles = "User,Admin")] @@ -27,6 +30,13 @@ namespace DevHive.Web.Controllers } #region Create + /// <summary> + /// Create a new post + /// </summary> + /// <param name="userId">The user's Id</param> + /// <param name="createPostWebModel">The new post's data</param> + /// <param name="authorization">JWT Bearer token</param> + /// <returns>New post's Id</returns> [HttpPost] public async Task<IActionResult> Create(Guid userId, [FromForm] CreatePostWebModel createPostWebModel, [FromHeader] string authorization) { @@ -46,6 +56,11 @@ namespace DevHive.Web.Controllers #endregion #region Read + /// <summary> + /// Query full post's data by it's Id + /// </summary> + /// <param name="id">The post's Id</param> + /// <returns>Full data model of the post</returns> [HttpGet] [AllowAnonymous] public async Task<IActionResult> GetById(Guid id) @@ -58,6 +73,13 @@ namespace DevHive.Web.Controllers #endregion #region Update + /// <summary> + /// Update post's data. Creator only! + /// </summary> + /// <param name="userId">The post creator's Id</param> + /// <param name="updatePostWebModel">The new params of the post</param> + /// <param name="authorization">JWT Bearer token</param> + /// <returns>The post's Id</returns> [HttpPut] public async Task<IActionResult> Update(Guid userId, [FromForm] UpdatePostWebModel updatePostWebModel, [FromHeader] string authorization) { @@ -80,13 +102,19 @@ namespace DevHive.Web.Controllers #endregion #region Delete + /// <summary> + /// Delete a post. Creator only! + /// </summary> + /// <param name="postId">Post's Id</param> + /// <param name="authorization">JWT Bearer token</param> + /// <returns>Ok result</returns> [HttpDelete] - public async Task<IActionResult> Delete(Guid id, [FromHeader] string authorization) + public async Task<IActionResult> Delete(Guid postId, [FromHeader] string authorization) { - if (!await this._postService.ValidateJwtForPost(id, authorization)) + if (!await this._postService.ValidateJwtForPost(postId, authorization)) return new UnauthorizedResult(); - return await this._postService.DeletePost(id) ? + return await this._postService.DeletePost(postId) ? new OkResult() : new BadRequestObjectResult("Could not delete Post"); } diff --git a/src/Web/DevHive.Web/Controllers/ProfilePictureController.cs b/src/Web/DevHive.Web/Controllers/ProfilePictureController.cs index d3971ff..2eec99e 100644 --- a/src/Web/DevHive.Web/Controllers/ProfilePictureController.cs +++ b/src/Web/DevHive.Web/Controllers/ProfilePictureController.cs @@ -1,16 +1,32 @@ using System; using System.Threading.Tasks; -using DevHive.Services.Models.User; using DevHive.Web.Models.User; using Microsoft.AspNetCore.Authorization; using Microsoft.AspNetCore.Mvc; namespace DevHive.Web.Controllers { + /// <summary> + /// All endpoints for interacting with the profile picture layer + /// </summary> [ApiController] [Route("api/[controller]")] public class ProfilePictureController { + // private readonly ProfilePictureService _profilePictureService; + + // public ProfilePictureController(ProfilePictureService profilePictureService) + // { + // this._profilePictureService = profilePictureService; + // } + + /// <summary> + /// Alter the profile picture of a user + /// </summary> + /// <param name="userId">The user's Id</param> + /// <param name="updateProfilePictureWebModel">The new profile picture</param> + /// <param name="authorization">JWT Bearer Token</param> + /// <returns>???</returns> [HttpPut] [Route("ProfilePicture")] [Authorize(Roles = "User,Admin")] diff --git a/src/Web/DevHive.Web/Controllers/RatingController.cs b/src/Web/DevHive.Web/Controllers/RatingController.cs index 5716b85..7d21795 100644 --- a/src/Web/DevHive.Web/Controllers/RatingController.cs +++ b/src/Web/DevHive.Web/Controllers/RatingController.cs @@ -3,7 +3,7 @@ using System.Threading.Tasks; using AutoMapper; using DevHive.Common.Jwt.Interfaces; using DevHive.Services.Interfaces; -using DevHive.Services.Models.Post.Rating; +using DevHive.Services.Models.Rating; using DevHive.Web.Models.Rating; using Microsoft.AspNetCore.Authorization; using Microsoft.AspNetCore.Mvc; @@ -11,19 +11,17 @@ using Microsoft.AspNetCore.Mvc; namespace DevHive.Web.Controllers { [ApiController] - //[Authorize(Roles = "Admin,User")] + [Authorize(Roles = "Admin,User")] [Route("api/[controller]")] public class RatingController { private readonly IRatingService _rateService; - private readonly IUserService _userService; private readonly IMapper _mapper; private readonly IJwtService _jwtService; - public RatingController(IRatingService rateService, IUserService userService, IMapper mapper, IJwtService jwtService) + public RatingController(IRatingService rateService, IMapper mapper, IJwtService jwtService) { this._rateService = rateService; - this._userService = userService; this._mapper = mapper; this._jwtService = jwtService; } @@ -65,7 +63,7 @@ namespace DevHive.Web.Controllers } [HttpPut] - public async Task<IActionResult> UpdateRating(Guid userId, [FromBody] UpdateRatingWebModel updateRatingWebModel, [FromHeader] string authorization) + public async Task<IActionResult> UpdateRating(Guid userId, Guid postId, [FromBody] UpdateRatingWebModel updateRatingWebModel, [FromHeader] string authorization) { if (!this._jwtService.ValidateToken(userId, authorization)) return new UnauthorizedResult(); @@ -73,6 +71,7 @@ namespace DevHive.Web.Controllers UpdateRatingServiceModel updateRatingServiceModel = this._mapper.Map<UpdateRatingServiceModel>(updateRatingWebModel); updateRatingServiceModel.UserId = userId; + updateRatingServiceModel.PostId = postId; ReadRatingServiceModel readRatingServiceModel = await this._rateService.UpdateRating(updateRatingServiceModel); @@ -86,7 +85,7 @@ namespace DevHive.Web.Controllers } [HttpDelete] - public async Task<IActionResult> DeleteTating(Guid userId, Guid ratingId, [FromHeader] string authorization) + public async Task<IActionResult> DeleteRating(Guid userId, Guid ratingId, [FromHeader] string authorization) { if (!this._jwtService.ValidateToken(userId, authorization)) return new UnauthorizedResult(); diff --git a/src/Web/DevHive.Web/Controllers/RoleController.cs b/src/Web/DevHive.Web/Controllers/RoleController.cs index 1465795..ebb305e 100644 --- a/src/Web/DevHive.Web/Controllers/RoleController.cs +++ b/src/Web/DevHive.Web/Controllers/RoleController.cs @@ -9,6 +9,9 @@ using Microsoft.AspNetCore.Authorization; namespace DevHive.Web.Controllers { + /// <summary> + /// All endpoints for interacting with the roles layer + /// </summary> [ApiController] [Route("/api/[controller]")] public class RoleController @@ -22,6 +25,11 @@ namespace DevHive.Web.Controllers this._roleMapper = mapper; } + /// <summary> + /// Create a new role for the roles hierarchy. Admin only! + /// </summary> + /// <param name="createRoleWebModel">The new role's parametars</param> + /// <returns>The new role's Id</returns> [HttpPost] [Authorize(Roles = "Admin")] public async Task<IActionResult> Create([FromBody] CreateRoleWebModel createRoleWebModel) @@ -36,6 +44,11 @@ namespace DevHive.Web.Controllers new OkObjectResult(new { Id = id }); } + /// <summary> + /// Get a role's full data, querying it by it's Id + /// </summary> + /// <param name="id">The role's Id</param> + /// <returns>Full info of the role</returns> [HttpGet] [Authorize(Roles = "User,Admin")] public async Task<IActionResult> GetById(Guid id) @@ -46,6 +59,12 @@ namespace DevHive.Web.Controllers return new OkObjectResult(roleWebModel); } + /// <summary> + /// Update a role's parametars. Admin only! + /// </summary> + /// <param name="id">The role's Id</param> + /// <param name="updateRoleWebModel">The new parametrats for that role</param> + /// <returns>Ok result</returns> [HttpPut] [Authorize(Roles = "Admin")] public async Task<IActionResult> Update(Guid id, [FromBody] UpdateRoleWebModel updateRoleWebModel) @@ -62,6 +81,11 @@ namespace DevHive.Web.Controllers return new OkResult(); } + /// <summary> + /// Delete a role. Admin only! + /// </summary> + /// <param name="id">The role's Id</param> + /// <returns>Ok result</returns> [HttpDelete] [Authorize(Roles = "Admin")] public async Task<IActionResult> Delete(Guid id) diff --git a/src/Web/DevHive.Web/Controllers/TechnologyController.cs b/src/Web/DevHive.Web/Controllers/TechnologyController.cs index e507899..ecf2bd7 100644 --- a/src/Web/DevHive.Web/Controllers/TechnologyController.cs +++ b/src/Web/DevHive.Web/Controllers/TechnologyController.cs @@ -10,6 +10,9 @@ using Microsoft.AspNetCore.Mvc; namespace DevHive.Web.Controllers { + /// <summary> + /// All endpoints for interacting with the technology layer + /// </summary> [ApiController] [Route("/api/[controller]")] public class TechnologyController @@ -23,6 +26,11 @@ namespace DevHive.Web.Controllers this._technologyMapper = technologyMapper; } + /// <summary> + /// Create a new technology, so users can have a choice. Admin only! + /// </summary> + /// <param name="createTechnologyWebModel">Data for the new technology</param> + /// <returns>The new technology's Id</returns> [HttpPost] [Authorize(Roles = "Admin")] public async Task<IActionResult> Create([FromBody] CreateTechnologyWebModel createTechnologyWebModel) @@ -36,6 +44,11 @@ namespace DevHive.Web.Controllers new OkObjectResult(new { Id = id }); } + /// <summary> + /// Get technology's data by it's Id + /// </summary> + /// <param name="id">The technology's Id</param> + /// <returns>The technology's full data</returns> [HttpGet] [AllowAnonymous] public async Task<IActionResult> GetById(Guid id) @@ -46,6 +59,10 @@ namespace DevHive.Web.Controllers return new OkObjectResult(readTechnologyWebModel); } + /// <summary> + /// Get all technologies from our database + /// </summary> + /// <returns>All technologies</returns> [HttpGet] [Route("GetTechnologies")] [Authorize(Roles = "User,Admin")] @@ -57,6 +74,12 @@ namespace DevHive.Web.Controllers return new OkObjectResult(languageWebModels); } + /// <summary> + /// Alter a technology's parameters. Admin only! + /// </summary> + /// <param name="id">Technology's Id</param> + /// <param name="updateModel">The new parametars</param> + /// <returns>Ok result</returns> [HttpPut] [Authorize(Roles = "Admin")] public async Task<IActionResult> Update(Guid id, [FromBody] UpdateTechnologyWebModel updateModel) @@ -72,6 +95,11 @@ namespace DevHive.Web.Controllers return new OkResult(); } + /// <summary> + /// Delete a etchnology from the database. Admin only! + /// </summary> + /// <param name="id">The technology's Id</param> + /// <returns>Ok result</returns> [HttpDelete] [Authorize(Roles = "Admin")] public async Task<IActionResult> Delete(Guid id) diff --git a/src/Web/DevHive.Web/Controllers/UserController.cs b/src/Web/DevHive.Web/Controllers/UserController.cs index b01ecc1..4d01447 100644 --- a/src/Web/DevHive.Web/Controllers/UserController.cs +++ b/src/Web/DevHive.Web/Controllers/UserController.cs @@ -8,12 +8,16 @@ using Microsoft.AspNetCore.Mvc; using DevHive.Common.Models.Identity; using DevHive.Services.Interfaces; using DevHive.Common.Jwt.Interfaces; -using DevHive.Web.Models.Attributes; +using NSwag.Annotations; namespace DevHive.Web.Controllers { + /// <summary> + /// All endpoints for integration with the User + /// </summary> [ApiController] [Route("/api/[controller]")] + [OpenApiController("User Controller")] public class UserController : ControllerBase { private readonly IUserService _userService; @@ -28,9 +32,15 @@ namespace DevHive.Web.Controllers } #region Authentication + /// <summary> + /// Login endpoint for the DevHive Social Platform + /// </summary> + /// <param name="loginModel">Login model with username and password</param> + /// <returns>A JWT Token for further validation</returns> [HttpPost] - [Route("Login")] [AllowAnonymous] + [Route("Login")] + [OpenApiTags("Authorization")] public async Task<IActionResult> Login([FromBody] LoginWebModel loginModel) { LoginServiceModel loginServiceModel = this._userMapper.Map<LoginServiceModel>(loginModel); @@ -41,9 +51,15 @@ namespace DevHive.Web.Controllers return new OkObjectResult(tokenWebModel); } + /// <summary> + /// Register a new User in the DevHive Social Platform + /// </summary> + /// <param name="registerModel">Register model with the new data to provide</param> + /// <returns>A JWT Token for further validation</returns> [HttpPost] - [Route("Register")] [AllowAnonymous] + [Route("Register")] + [OpenApiTag("Authorization")] public async Task<IActionResult> Register([FromBody] RegisterWebModel registerModel) { RegisterServiceModel registerServiceModel = this._userMapper.Map<RegisterServiceModel>(registerModel); @@ -56,6 +72,12 @@ namespace DevHive.Web.Controllers #endregion #region Read + /// <summary> + /// Get a User's information using the Guid + /// </summary> + /// <param name="id">User's Id</param> + /// <param name="authorization">The JWT Token, contained in the header and used for validation</param> + /// <returns>A full User's read model</returns> [HttpGet] [Authorize(Roles = "User,Admin")] public async Task<IActionResult> GetById(Guid id, [FromHeader] string authorization) @@ -69,6 +91,11 @@ namespace DevHive.Web.Controllers return new OkObjectResult(userWebModel); } + /// <summary> + /// Get a User's profile using his username. Does NOT require authorization + /// </summary> + /// <param name="username">User's username</param> + /// <returns>A trimmed version of the full User's read model</returns> [HttpGet] [Route("GetUser")] [AllowAnonymous] @@ -82,6 +109,13 @@ namespace DevHive.Web.Controllers #endregion #region Update + /// <summary> + /// Full update on User's data. A PUSTINQK can only edit his account + /// </summary> + /// <param name="id">The User's Id</param> + /// <param name="updateUserWebModel">A full User update model</param> + /// <param name="authorization">The JWT Token, contained in the header and used for validation</param> + /// <returns>A full User's read model</returns> [HttpPut] [Authorize(Roles = "User,Admin")] public async Task<IActionResult> Update(Guid id, [FromBody] UpdateUserWebModel updateUserWebModel, [FromHeader] string authorization) @@ -100,6 +134,12 @@ namespace DevHive.Web.Controllers #endregion #region Delete + /// <summary> + /// Delete a User with his Id. A PUSTINQK can only delete his account. An Admin can delete all accounts + /// </summary> + /// <param name="id">The User's Id</param> + /// <param name="authorization">The JWT Token, contained in the header and used for validation</param> + /// <returns>Ok, BadRequest or Unauthorized</returns> [HttpDelete] [Authorize(Roles = "User,Admin")] public async Task<IActionResult> Delete(Guid id, [FromHeader] string authorization) @@ -115,7 +155,13 @@ namespace DevHive.Web.Controllers } #endregion + /// <summary> + /// We don't talk about that, NIGGA! + /// </summary> + /// <param name="userId"></param> + /// <returns></returns> [HttpPost] + [OpenApiIgnore] [Authorize(Roles = "User,Admin")] [Route("SuperSecretPromotionToAdmin")] public async Task<IActionResult> SuperSecretPromotionToAdmin(Guid userId) diff --git a/src/Web/DevHive.Web/DevHive.Web.csproj b/src/Web/DevHive.Web/DevHive.Web.csproj index 38f21e6..39322ae 100644 --- a/src/Web/DevHive.Web/DevHive.Web.csproj +++ b/src/Web/DevHive.Web/DevHive.Web.csproj @@ -25,6 +25,9 @@ <PackageReference Include="NSwag.Generation.AspNetCore" Version="13.10.7"/> <PackageReference Include="NSwag.Annotations" Version="13.10.7"/> <PackageReference Include="NSwag.Core" Version="13.10.7"/> + <PackageReference Include="Swashbuckle.AspNetCore.Swagger" Version="6.1.0"/> + <PackageReference Include="Swashbuckle.AspNetCore.SwaggerGen" Version="6.1.0"/> + <PackageReference Include="NSwag.SwaggerGeneration.WebApi" Version="12.3.0"/> </ItemGroup> <ItemGroup> <ProjectReference Include="..\DevHive.Web.Models\DevHive.Web.Models.csproj"/> @@ -32,4 +35,4 @@ <ProjectReference Include="..\..\Common\DevHive.Common.Models\DevHive.Common.Models.csproj"/> <ProjectReference Include="..\..\Common\DevHive.Common\DevHive.Common.csproj"/> </ItemGroup> -</Project> +</Project>
\ No newline at end of file diff --git a/src/Web/DevHive.Web/Startup.cs b/src/Web/DevHive.Web/Startup.cs index ebd091e..002c718 100644 --- a/src/Web/DevHive.Web/Startup.cs +++ b/src/Web/DevHive.Web/Startup.cs @@ -5,7 +5,6 @@ using Microsoft.Extensions.DependencyInjection; using Microsoft.Extensions.Hosting; using DevHive.Web.Configurations.Extensions; using Newtonsoft.Json; -using System.Threading.Tasks; namespace DevHive.Web { |
