public void addFavouriteVideo(NewFavouriteVideoDTO newFav) { // Make sure the passed down object does not contain null variables if (newFav.username == null || newFav.password == null || newFav.email == null || newFav.fullName == null || newFav.accessToken == null || newFav.videoId == null) { throw new InvalidParametersException("All parameters of NewFavouriteVideoDTO must be set"); } // if userId is null the user does not exist and we throw an exception int?userId = _mapper.getUserId(newFav.username); if (userId == null) { throw new InvalidParametersException("User does not exist in database"); } // Make sure we are Authenticated using a authentication service if (!_tokenService.validateUserToken(newFav.accessToken, (int)userId)) { throw new InvalidParametersException("To favourite a video you must use a valid token and a valid username"); } // Datalayer call to add favourite video to the favourites _mapper.addFavourite((int)userId, newFav.videoId); }
public void addFavouriteVideoTest() { MockTokenService tokenService = new MockTokenService(); MockUserDataMapper mockMapper = new MockUserDataMapper(); IUserService _service = new UserService(tokenService, mockMapper); mockMapper.Users.Add(new User { id = 1, username = "******", email = "*****@*****.**", password = "******", fullName = "Janus Þór" }); Video v = new Video { id = 1, title = "testing", source = "testing", creator = 1, channelId = 0 }; mockMapper.Videos.Add(v); var vDTO = new VideoDTO { id = 1, title = "testing", source = "testing", creator = 1, channelId = 0 }; var authDTO = new NewFavouriteVideoDTO { username = "******", email = "*****@*****.**", password = "******", fullName = "Janus Þór", accessToken = "1", videoId = vDTO.id }; _service.addFavouriteVideo(authDTO); Assert.Equal(1, mockMapper.Favourites.Count()); Assert.Equal(1, mockMapper.Favourites[0].userId); Assert.Equal(1, mockMapper.Favourites[0].videoId); }
public IActionResult addFavourite(NewFavouriteVideoDTO newFavVid) { string accessToken = Request.Headers["Authorization"]; newFavVid.accessToken = accessToken; // Basic API -> Service Cals // Receive Object Through Post/Get Request // Pass Object Too Service Layer // Catch Defined Errors Else Return 2xx Message try { _userService.addFavouriteVideo(newFavVid); return(Ok()); } catch (InvalidParametersException e) { return(BadRequest(e.Message)); } catch (DuplicateException e) { return(new BadRequestObjectResult(e.Message)); } }
public void getFavVidsTest() { MockTokenService tokenService = new MockTokenService(); MockUserDataMapper mockMapper = new MockUserDataMapper(); IUserService _service = new UserService(tokenService, mockMapper); mockMapper.Users.Add(new User { id = 1, username = "******", email = "*****@*****.**", password = "******", fullName = "Janus Þór" }); Video v1 = new Video { id = 1, title = "testing", source = "testing", creator = 1, channelId = 0 }; Video v2 = new Video { id = 2, title = "testing2", source = "testing2", creator = 1, channelId = 0 }; Video v3 = new Video { id = 3, title = "testing3", source = "testing3", creator = 1, channelId = 0 }; mockMapper.Videos.Add(v1); mockMapper.Videos.Add(v2); mockMapper.Videos.Add(v3); var vDTO1 = new VideoDTO { id = 1, title = "testing", source = "testing", creator = 1, channelId = 0 }; var vDTO2 = new VideoDTO { id = 2, title = "testing2", source = "testing2", creator = 1, channelId = 0 }; var vDTO3 = new VideoDTO { id = 3, title = "testing3", source = "testing3", creator = 1, channelId = 0 }; var authDTO = new NewFavouriteVideoDTO { username = "******", email = "*****@*****.**", password = "******", fullName = "Janus Þór", accessToken = "1", videoId = vDTO1.id }; _service.addFavouriteVideo(authDTO); authDTO.videoId += 1; _service.addFavouriteVideo(authDTO); authDTO.videoId += 1; _service.addFavouriteVideo(authDTO); List <VideoDTO> verifyData = (from v in mockMapper.Videos select new VideoDTO { id = v.id, title = v.title, source = v.source, creator = v.creator, channelId = v.channelId }).ToList(); List <VideoDTO> testData = _service.getFavouriteVideos(authDTO); Assert.Equal(mockMapper.Favourites.Count(), 3); Assert.Equal(verifyData.Count(), testData.Count()); for (int i = 0; i < 0; i++) { Assert.Equal(verifyData[i].id, testData[i].id); Assert.Equal(verifyData[i].title, testData[i].title); Assert.Equal(verifyData[i].source, testData[i].source); Assert.Equal(verifyData[i].creator, testData[i].creator); Assert.Equal(verifyData[i].channelId, testData[i].channelId); } }