aboutsummaryrefslogtreecommitdiff
path: root/src/Web
diff options
context:
space:
mode:
authortranstrike <transtrike@gmail.com>2021-03-15 09:27:12 +0200
committertranstrike <transtrike@gmail.com>2021-03-15 09:27:12 +0200
commit0161be09312fde634865f110504884119a617d5c (patch)
tree0fa68366edcb024c054f370ecf90f5b66282aae5 /src/Web
parente3b5757b5a5db2f7874b0924cdd4a22b1a9e1ee2 (diff)
parentac82c773a5ec43c6a59d3d0b7665b67ac9e6bdde (diff)
downloadDevHive-0161be09312fde634865f110504884119a617d5c.tar
DevHive-0161be09312fde634865f110504884119a617d5c.tar.gz
DevHive-0161be09312fde634865f110504884119a617d5c.zip
Fixed to new() where possible and readable
Diffstat (limited to 'src/Web')
-rw-r--r--src/Web/DevHive.Web.Models/Rating/UpdateRatingWebModel.cs4
-rw-r--r--src/Web/DevHive.Web.Tests/CommentController.Tests.cs158
-rw-r--r--src/Web/DevHive.Web.Tests/FeedController.Tests.cs40
-rw-r--r--src/Web/DevHive.Web.Tests/LanguageController.Tests.cs75
-rw-r--r--src/Web/DevHive.Web.Tests/PostController.Tests.cs146
-rw-r--r--src/Web/DevHive.Web.Tests/RatingController.Tests.cs299
-rw-r--r--src/Web/DevHive.Web.Tests/RoleController.Tests.cs77
-rw-r--r--src/Web/DevHive.Web.Tests/TechnologyController.Tests.cs76
-rw-r--r--src/Web/DevHive.Web.Tests/UserController.Tests.cs139
-rw-r--r--src/Web/DevHive.Web/Configurations/Mapping/RatingMappings.cs2
-rw-r--r--src/Web/DevHive.Web/Controllers/CommentController.cs38
-rw-r--r--src/Web/DevHive.Web/Controllers/FeedController.cs15
-rw-r--r--src/Web/DevHive.Web/Controllers/LanguageController.cs32
-rw-r--r--src/Web/DevHive.Web/Controllers/PostController.cs34
-rw-r--r--src/Web/DevHive.Web/Controllers/ProfilePictureController.cs18
-rw-r--r--src/Web/DevHive.Web/Controllers/RatingController.cs13
-rw-r--r--src/Web/DevHive.Web/Controllers/RoleController.cs24
-rw-r--r--src/Web/DevHive.Web/Controllers/TechnologyController.cs28
-rw-r--r--src/Web/DevHive.Web/Controllers/UserController.cs52
-rw-r--r--src/Web/DevHive.Web/DevHive.Web.csproj5
-rw-r--r--src/Web/DevHive.Web/Startup.cs1
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
{