Example #1
0
        public async Task <IActionResult> PutUrlAsync([FromBody] NewDataSourceResource newDataSource)
        {
            if (!ModelState.IsValid)
            {
                return(BadRequest(ModelState.GetErrorMessages()));
            }

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

            var metadata = await _metadataService.GetByUuidAsync(newDataSource.MetadataUuid);

            if (user.MunicipalityName != metadata.MunicipalityName)
            {
                return(Unauthorized("Invalid permissions for given Metadata! User must match Municipality."));
            }

            DataSource dataSource = _mapper.Map <NewDataSourceResource, DataSource>(newDataSource);

            if (dataSource.StartDate == null && dataSource.EndDate != null)
            {
                return(BadRequest("Cannot have startDate as null, but a set endDate"));
            }
            else if (dataSource.StartDate != null && dataSource.EndDate != null)
            {
                if (dataSource.StartDate > dataSource.EndDate)
                {
                    return(BadRequest("Cannot have a endDate be before startDate"));
                }
            }

            //Fetch the data format object so we can return a more complete dataSource
            var format = await _dataFormat.GetByMimeTypeAsync(newDataSource.DataFormatMimeType);

            dataSource.DataFormat = format;

            await _metadataService.PutDataSourceAsync(dataSource);

            var dataSourceResource = _mapper.Map <DataSource, DataSourceResource>(dataSource);

            return(Ok(dataSourceResource));
        }
Example #2
0
        public async Task Put_NewReleasedMetaData_NewDataSource_GetMetaData_GetMetaDataLike_AttachExperiencePost_EndpointsReturnSuccess_CorrectContentType()
        {
            // Arrange

            var             client          = _factory.CreateDefaultClient();
            NewUserResource newUserResource = new NewUserResource();

            newUserResource.Mail     = "*****@*****.**";
            newUserResource.Password = "******";
            newUserResource.UserType = UserType.Municipality;
            await client.PutAsync("api/user", new StringContent(JsonSerializer.Serialize(newUserResource), Encoding.UTF8, "application/json"));

            AuthUserResource loginResource = new AuthUserResource();

            loginResource.Mail     = newUserResource.Mail;
            loginResource.Password = newUserResource.Password;
            var loginResponse = await client.PostAsync("/api/user/auth", new StringContent(JsonSerializer.Serialize(loginResource), Encoding.UTF8, "application/json"));

            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);

            SaveMetadataResource metaDataResource = new SaveMetadataResource();

            metaDataResource.Description      = "Test Description";
            metaDataResource.MunicipalityName = "Test";
            metaDataResource.ReleaseState     = EReleaseState.Released;

            // Act

            var metaDataResponse = await client.PutAsync("/api/metadata", new StringContent(JsonSerializer.Serialize(metaDataResource), Encoding.UTF8, "application/json"));

            var metadata = ResponseSerializer.Extract <Metadata>(metaDataResponse);

            var metaDataGetResponse = await client.GetAsync("/api/metadata/" + metadata.Uuid);

            var metaDataLikeGetResponse = await client.GetAsync("/api/metadata/" + metadata.Uuid + "/like");

            Assert.Equal(user.MunicipalityName, metadata.MunicipalityName);

            SaveExperiencePostResource experiencePostResource = new SaveExperiencePostResource();
            var experienceResponse = await client.PutAsync("/api/metadata/" + metadata.Uuid + "/experience", new StringContent(JsonSerializer.Serialize(experiencePostResource), Encoding.UTF8, "application/json"));

            NewDataFormatResource dataFormatResource = new NewDataFormatResource();

            dataFormatResource.Name             = "Name of this dataformat";
            dataFormatResource.Description      = "Describing this dataformat";
            dataFormatResource.DocumentationUrl = "this URL";
            dataFormatResource.MimeType         = "this MimeType";
            var dataFormatResponse = await client.PutAsync("/api/dataformat", new StringContent(JsonSerializer.Serialize(dataFormatResource), Encoding.UTF8, "application/json"));

            var dataformat = ResponseSerializer.Extract <DataFormat>(dataFormatResponse);

            NewDataSourceResource dataSourceResource = new NewDataSourceResource();

            dataSourceResource.MetadataUuid       = metadata.Uuid;
            dataSourceResource.Url                = "This cool url";
            dataSourceResource.Description        = "Some test source";
            dataSourceResource.StartDate          = System.DateTime.MinValue;
            dataSourceResource.EndDate            = System.DateTime.MaxValue;
            dataSourceResource.DataFormatMimeType = dataformat.MimeType;
            Assert.NotEqual(dataSourceResource.StartDate, dataSourceResource.EndDate);

            var dataSourceResponse = await client.PutAsync("/api/metadata/url", new StringContent(JsonSerializer.Serialize(dataSourceResource), Encoding.UTF8, "application/json"));

            // Assert

            metaDataResponse.EnsureSuccessStatusCode(); // Status Code 200-299
            Assert.Equal("application/json; charset=utf-8",
                         metaDataResponse.Content.Headers.ContentType.ToString());

            metaDataGetResponse.EnsureSuccessStatusCode(); // Status Code 200-299
            Assert.Equal("application/json; charset=utf-8",
                         metaDataGetResponse.Content.Headers.ContentType.ToString());

            metaDataLikeGetResponse.EnsureSuccessStatusCode(); // Status Code 200-299
            Assert.Equal("application/json; charset=utf-8",
                         metaDataLikeGetResponse.Content.Headers.ContentType.ToString());

            experienceResponse.EnsureSuccessStatusCode(); // Status Code 200-299
            Assert.Equal("application/json; charset=utf-8",
                         experienceResponse.Content.Headers.ContentType.ToString());

            dataSourceResponse.EnsureSuccessStatusCode(); // Status Code 200-299
            Assert.Equal("application/json; charset=utf-8",
                         dataSourceResponse.Content.Headers.ContentType.ToString());
        }