public async Task <IActionResult> AddNewDescriptionAsync(
            Guid metadataTypeUuid,
            [FromBody] NewMetadataTypeDescriptionResource newMetadataDescriptionRes
            )
        {
            if (!ModelState.IsValid)
            {
                return(BadRequest(ModelState.GetErrorMessages()));
            }

            var username = httpContextRetriever.HttpContext.User.Identity.Name;
            var user     = await userService.GetUserByMailAsync(username);

            if (user.UserType < UserType.Municipality)
            {
                return(Unauthorized("User must have municipality privileges or higher"));
            }

            var metadataTypeDescription = _mapper.Map <NewMetadataTypeDescriptionResource, MetadataTypeDescription>(newMetadataDescriptionRes);

            metadataTypeDescription.MetadataTypeUuid = metadataTypeUuid;
            metadataTypeDescription.AuthorMail       = user.Mail;

            await _metadataTypeService.AddNewDescriptionAsync(metadataTypeDescription);

            var metadataTypeDescriptionRes = _mapper.Map <MetadataTypeDescription, MetadataTypeDescriptionResource>(metadataTypeDescription);

            return(Ok(metadataTypeDescriptionRes));
        }
Exemple #2
0
        public async Task AddDescriptionsAndVoteOnTest()
        {
            var client = _factory.CreateDefaultClient();

            NewUserResource newUserResource = new NewUserResource();

            newUserResource.Mail     = "*****@*****.**";
            newUserResource.Password = "******";
            newUserResource.UserType = UserType.Municipality;
            await client.PutAsync("api/user", ResponseSerializer.Serialize(newUserResource));

            AuthUserResource loginResource = new AuthUserResource();

            loginResource.Mail     = newUserResource.Mail;
            loginResource.Password = newUserResource.Password;
            var loginResponse = client.PostAsync("/api/user/auth", ResponseSerializer.Serialize(loginResource)).Result;

            Assert.NotNull(loginResponse.Content);
            var user = ResponseSerializer.Extract <PrivateSafeUserResource>(loginResponse);

            Assert.Equal(loginResource.Mail, user.Mail);
            string token = user.Token;

            client.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("Bearer", token);


            var newCategory = new SaveMetadataCategoryResource {
                ParentUuid = null, Name = "Super Category"
            };
            var newCategoryResponse = await client.PutAsync("api/metadatacategory", ResponseSerializer.Serialize(newCategory));

            newCategoryResponse.EnsureSuccessStatusCode();

            var category = ResponseSerializer.Extract <MetadataCategory>(newCategoryResponse);

            SaveMetadataTypeResource newMetadataTypeResource = new SaveMetadataTypeResource {
                CategoryUuid = category.Uuid, Name = "Super MetadataType"
            };
            var newMetadataTypeResponse = await client.PutAsync("api/metadatatype", ResponseSerializer.Serialize(newMetadataTypeResource));

            newMetadataTypeResponse.EnsureSuccessStatusCode();
            var metadataType = ResponseSerializer.Extract <MetadataTypeResource>(newMetadataTypeResponse);

            var newDescription = new NewMetadataTypeDescriptionResource
            {
                Content = "This is an awesome description."
            };
            var addDescriptionsResponse = await client.PutAsync("api/metadatatype/" + metadataType.Uuid + "/description", ResponseSerializer.Serialize(newDescription));

            addDescriptionsResponse.EnsureSuccessStatusCode();
            var description = ResponseSerializer.Extract <MetadataTypeDescriptionResource>(addDescriptionsResponse);

            Assert.Equal(newDescription.Content, description.Content);
            Assert.Equal(loginResource.Mail, description.Author.Mail);

            var fetchDescriptionsResponse = await client.GetAsync("api/metadatatype/" + metadataType.Uuid + "/description");

            fetchDescriptionsResponse.EnsureSuccessStatusCode();

            var voteOnDescriptionResponse = await client.PutAsync("api/metadatatype/" + metadataType.Uuid + "/description/" + description.Uuid + "/vote", null);

            voteOnDescriptionResponse.EnsureSuccessStatusCode();

            var removeVoteOnDescriptionResponse = await client.DeleteAsync("api/metadatatype/" + metadataType.Uuid + "/description/" + description.Uuid + "/vote");

            removeVoteOnDescriptionResponse.EnsureSuccessStatusCode();
        }