public async void AddVideo_CalledAndRoleIsNotAdmin_ReturnsBadRequestWithError() { IUnitOfWork unitOfWork = Substitute.For <IUnitOfWork>(); IVideoManager videoManager = Substitute.For <IVideoManager>(); ICookieManager cookieManager = Substitute.For <ICookieManager>(); var context = Substitute.For <HttpContext>(); long testId = 1; var testVideo = new VideoViewModel(); ModuleContent nullModuleContent = null; string testUrl = "testurl"; string convertedUrl = "converted"; string testyoutubeId = "youtubeid"; string error = "Only Admins can add videos."; unitOfWork.ModuleContents.GetById(testId).Returns(nullModuleContent); videoManager.ConvertUrl(testUrl).Returns(convertedUrl); videoManager.GetYoutubeId(convertedUrl).Returns(testyoutubeId); cookieManager.GetRoleFromToken(Arg.Any <string>()).Returns(Role.Student.ToString()); var videosController = new VideosController(unitOfWork, videoManager, cookieManager); videosController.ControllerContext = new ControllerContext() { HttpContext = context }; var result = await videosController.AddVideo(testVideo); var badRequestObjectResult = Assert.IsType <BadRequestObjectResult>(result); var returnValue = Assert.IsType <string>(badRequestObjectResult.Value); Assert.Equal(error, returnValue); }
public async void AddVideo_CalledWithValidVideo_ReturnsOk() { IUnitOfWork unitOfWork = Substitute.For <IUnitOfWork>(); IVideoManager videoManager = Substitute.For <IVideoManager>(); ICookieManager cookieManager = Substitute.For <ICookieManager>(); var context = Substitute.For <HttpContext>(); long testId = 1; var testVideo = new VideoViewModel() { ModuleContentId = testId }; var testModuleContent = new ModuleContent(); string testUrl = "testurl"; string convertedUrl = "converted"; string testyoutubeId = "youtubeid"; unitOfWork.ModuleContents.GetById(testId).Returns(testModuleContent); videoManager.ConvertUrl(testUrl).Returns(convertedUrl); videoManager.GetYoutubeId(convertedUrl).Returns(testyoutubeId); cookieManager.GetRoleFromToken(Arg.Any <string>()).Returns(Role.Admin.ToString()); var videosController = new VideosController(unitOfWork, videoManager, cookieManager); videosController.ControllerContext = new ControllerContext() { HttpContext = context }; var result = await videosController.AddVideo(testVideo); var okResult = Assert.IsType <OkResult>(result); Assert.Equal(200, okResult.StatusCode); }
public async Task <IActionResult> AddVideo([FromBody] VideoViewModel video) { if (video == null) { return(BadRequest("Video cannot be null.")); } var userRole = _cookieManager.GetRoleFromToken(Request.Headers["Authorization"]); if (!_videoManager.IsValidYoutubeUrl(video.Url)) { var ErrorContext = new ErrorContext(); ErrorContext.Errors.Add("Url is not valid youtube url"); return(BadRequest(ErrorContext)); } if (userRole.Equals(Role.Admin.ToString())) { var ModuleContent = await _repository.ModuleContents.GetById(video.ModuleContentId); if (ModuleContent == null) { return(NotFound(video.ModuleContentId)); } string embedLink = _videoManager.ConvertUrl(video.Url); string YoutubeId = _videoManager.GetYoutubeId(embedLink); var Video = new Video { Title = video.Title, Description = video.Description, Url = embedLink, YoutubeId = YoutubeId, ModuleContent = ModuleContent }; _repository.Videos.Add(Video); await _repository.Complete(); return(Ok()); } return(BadRequest("Only Admins can add videos.")); }
public async void AddVideo_CalledWithInvalidContentId_RetrunsNotFoundWithId() { IUnitOfWork unitOfWork = Substitute.For <IUnitOfWork>(); IVideoManager videoManager = Substitute.For <IVideoManager>(); ICookieManager cookieManager = Substitute.For <ICookieManager>(); var context = Substitute.For <HttpContext>(); long testId = 1; var testVideo = new VideoViewModel() { ModuleContentId = testId }; ModuleContent nullModuleContent = null; string testUrl = "testurl"; string convertedUrl = "converted"; string testyoutubeId = "youtubeid"; unitOfWork.ModuleContents.GetById(testId).Returns(nullModuleContent); videoManager.ConvertUrl(testUrl).Returns(convertedUrl); videoManager.GetYoutubeId(convertedUrl).Returns(testyoutubeId); cookieManager.GetRoleFromToken(Arg.Any <string>()).Returns(Role.Admin.ToString()); var videosController = new VideosController(unitOfWork, videoManager, cookieManager); videosController.ControllerContext = new ControllerContext() { HttpContext = context }; var result = await videosController.AddVideo(testVideo); var notFoundObjectResult = Assert.IsType <NotFoundObjectResult>(result); var retrunValue = Assert.IsType <long>(notFoundObjectResult.Value); Assert.Equal(testId, retrunValue); }