/// <summary> /// Overrides the information of this Pictogram with new information found in the given DTO. /// </summary> /// <param name="other">The new information.</param> public virtual void Merge(PictogramDTO other) { this.LastEdit = DateTime.Now; this.AccessLevel = (AccessLevel)other.AccessLevel; this.Title = other.Title; if (other.Image != null) { this.Image = other.Image; } }
public void UpdatePictogramInfo_LoginInvalidDTO_MissingProperties() { var pc = initializeTest(); _testContext.MockUserManager.MockLoginAsUser(_testContext.MockUsers[GUARDIAN_DEP_TWO]); PictogramDTO dto = null; var res = pc.UpdatePictogramInfo(PUBLIC_PICTOGRAM, dto).Result; Assert.False(res.Success); Assert.Equal(ErrorCode.MissingProperties, res.ErrorCode); }
public void CreatePictogram_NoAccessLevel_MissingProperties() { var pc = initializeTest(); _testContext.MockUserManager.MockLoginAsUser(_testContext.MockUsers[GUARDIAN_DEP_TWO]); var dto = new PictogramDTO() { Title = "newpictogram" }; var res = pc.CreatePictogram(dto).Result; Assert.False(res.Success); Assert.Equal(ErrorCode.MissingProperties, res.ErrorCode); }
public async Task <Response <WeekPictogramDTO> > CreatePictogram([FromBody] PictogramDTO pictogram) { var user = await _giraf.LoadUserWithResources(HttpContext.User); if (user == null) { return(new ErrorResponse <WeekPictogramDTO>(ErrorCode.NotFound)); } if (pictogram == null) { return(new ErrorResponse <WeekPictogramDTO>(ErrorCode.MissingProperties, "Could not read pictogram DTO. Please make sure not to include image data in this request. " + "Use POST localhost/v1/pictogram/{id}/image instead.")); } if (!ModelState.IsValid) { return(new ErrorResponse <WeekPictogramDTO>(ErrorCode.InvalidProperties)); } //Create the actual pictogram instance // if access level is not specified, missing properties if (pictogram.AccessLevel == null || !Enum.IsDefined(typeof(AccessLevel), pictogram.AccessLevel)) { return(new ErrorResponse <WeekPictogramDTO>(ErrorCode.MissingProperties, "access level, pictogram")); } Pictogram pict = new Pictogram(pictogram.Title, (AccessLevel)pictogram.AccessLevel); if (pictogram.AccessLevel == AccessLevel.PRIVATE) { //Add relation between pictogram and current user new UserResource(user, pict); } else if (pictogram.AccessLevel == AccessLevel.PROTECTED) { //Add the pictogram to the user's department new DepartmentResource(user.Department, pict); } await _giraf._context.Pictograms.AddAsync(pict); await _giraf._context.SaveChangesAsync(); return(new Response <WeekPictogramDTO>(new WeekPictogramDTO(pict))); }
public void UpdatePictogramInfo_LoginNonexisting_NotFound() { var pc = initializeTest(); _testContext.MockUserManager.MockLoginAsUser(_testContext.MockUsers[GUARDIAN_DEP_TWO]); var dto = new PictogramDTO() { Title = "Updated Pictogram", AccessLevel = AccessLevel.PRIVATE }; var res = pc.UpdatePictogramInfo(NONEXISTING_PICTOGRAM, dto).Result; Assert.False(res.Success); Assert.Equal(ErrorCode.PictogramNotFound, res.ErrorCode); }
public void UpdatePictogramInfo_LoginAnotherProtected_Unauthorized() { var pc = initializeTest(); _testContext.MockUserManager.MockLoginAsUser(_testContext.MockUsers[GUARDIAN_DEP_TWO]); var dto = new PictogramDTO() { Title = "Updated Pictogram", AccessLevel = AccessLevel.PRIVATE }; var res = pc.UpdatePictogramInfo(DEP_ONE_PROTECTED_PICTOGRAM, dto).Result; Assert.False(res.Success); Assert.Equal(ErrorCode.NotAuthorized, res.ErrorCode); }
public void UpdatePictogramInfo_NoLoginProtected_NotFound() { var pc = initializeTest(); _testContext.MockUserManager.MockLogout(); var dto = new PictogramDTO() { Title = "Updated Pictogram", AccessLevel = AccessLevel.PROTECTED }; var res = pc.UpdatePictogramInfo(DEP_ONE_PROTECTED_PICTOGRAM, dto).Result; Assert.False(res.Success); Assert.Equal(ErrorCode.NotFound, res.ErrorCode); }
public void UpdatePictogramInfo_PictogramOwnerModifyAccessLevel_Success() { var pc = initializeTest(); _testContext.MockUserManager.MockLoginAsUser(_testContext.MockUsers[ADMIN_DEP_ONE]); var dto = new PictogramDTO() { Title = "Updated Pictogram", AccessLevel = AccessLevel.PUBLIC }; var res = pc.UpdatePictogramInfo(ADMIN_PRIVATE_PICTOGRAM, dto).Result; Assert.True(res.Success); Assert.Equal(ErrorCode.NoError, res.ErrorCode); // check that acess level is changed correctly Assert.Equal(AccessLevel.PUBLIC, res.Data.AccessLevel); }
public void UpdatePictogramInfo_LoginOwnPrivate_Success() { var pc = initializeTest(); _testContext.MockUserManager.MockLoginAsUser(_testContext.MockUsers[ADMIN_DEP_ONE]); var title = "Updated Pictogram"; var dto = new PictogramDTO() { Title = title, AccessLevel = AccessLevel.PRIVATE, }; var res = pc.UpdatePictogramInfo(dto.Id, dto).Result; Assert.True(res.Success); // check data Assert.Equal(title, res.Data.Title); Assert.Equal(AccessLevel.PRIVATE, res.Data.AccessLevel); }
public void CreatePictogram_LoginValidProtectedDTO_Success() { var pc = initializeTest(); _testContext.MockUserManager.MockLoginAsUser(_testContext.MockUsers[GUARDIAN_DEP_TWO]); var dto = new PictogramDTO() { AccessLevel = AccessLevel.PROTECTED, Title = "Protected " + pictogramName }; var res = pc.CreatePictogram(dto).Result; Assert.True(res.Success); // check that title is set correctly Assert.Equal("Protected " + pictogramName, res.Data.Title); // check accesslevel Assert.Equal(AccessLevel.PROTECTED, res.Data.AccessLevel); }
public void UpdatePictogramInfo_LoginOwnPublic_Success() { var pc = initializeTest(); _testContext.MockUserManager.MockLoginAsUser(_testContext.MockUsers[ADMIN_DEP_ONE]); var title = "Updated Pictogram"; var dto = new PictogramDTO() { Title = title, AccessLevel = AccessLevel.PUBLIC, }; var res = pc.UpdatePictogramInfo(dto.Id, dto).Result; Assert.True(res.Success); // check that pictogram was updated correctly Assert.Equal(title, res.Data.Title); // check access level was updated correctly Assert.Equal(AccessLevel.PUBLIC, res.Data.AccessLevel); }
public async Task <Response <WeekPictogramDTO> > UpdatePictogramInfo(long id, [FromBody] PictogramDTO pictogram) { if (pictogram == null) { return(new ErrorResponse <WeekPictogramDTO>(ErrorCode.MissingProperties, "Could not read pictogram DTO. Please make sure not to include image data in this request. " + "Use POST localhost/v1/pictogram/{id}/image instead.")); } if (pictogram.AccessLevel == null) { return(new ErrorResponse <WeekPictogramDTO>(ErrorCode.MissingProperties, "missing access level")); } if (!ModelState.IsValid) { return(new ErrorResponse <WeekPictogramDTO>(ErrorCode.InvalidProperties)); } var usr = await _giraf.LoadBasicUserDataAsync(HttpContext.User); if (usr == null) { return(new ErrorResponse <WeekPictogramDTO>(ErrorCode.NotFound)); } //Fetch the pictogram from the database and check that it exists var pict = await _giraf._context.Pictograms .Where(pic => pic.Id == id) .FirstOrDefaultAsync(); if (pict == null) { return(new ErrorResponse <WeekPictogramDTO>(ErrorCode.PictogramNotFound)); } if (!CheckOwnership(pict, usr).Result) { return(new ErrorResponse <WeekPictogramDTO>(ErrorCode.NotAuthorized)); } //Ensure that Id is not changed. pictogram.Id = id; //Update the existing database entry and save the changes. pict.Merge(pictogram); _giraf._context.Pictograms.Update(pict); await _giraf._context.SaveChangesAsync(); return(new Response <WeekPictogramDTO>(new WeekPictogramDTO(pict))); }