/// <summary> /// Parses the XSD, generates Json Schema and generates the meta model using /// the new classes. /// </summary> private static ModelMetadata CreateMetamodelNewWay(string xsdResource, string org, string app) { Stream xsdStream = TestDataHelper.LoadDataFromEmbeddedResource(xsdResource); XmlReader xmlReader = XmlReader.Create(xsdStream, new XmlReaderSettings { IgnoreWhitespace = true }); var xmlSchema = XmlSchema.Read(xmlReader, (_, _) => { }); var schemaSet = new XmlSchemaSet(); schemaSet.Add(xmlSchema); schemaSet.Compile(); var xsdToJsonConverter = new XmlSchemaToJsonSchemaConverter(); Json.Schema.JsonSchema convertedJsonSchema = xsdToJsonConverter.Convert(xmlSchema); var convertedJsonSchemaString = JsonSerializer.Serialize(convertedJsonSchema, new JsonSerializerOptions() { Encoder = JavaScriptEncoder.Create(UnicodeRanges.BasicLatin, UnicodeRanges.Latin1Supplement), WriteIndented = true }); var metamodelConverter = new JsonSchemaToMetamodelConverter(new SeresJsonSchemaAnalyzer()); ModelMetadata actualMetamodel = metamodelConverter.Convert("melding", convertedJsonSchemaString); return(actualMetamodel); }
public async Task PostDatamodel_FromFormPost_ShouldReturnCreatedFromTemplate(string relativeDirectory, bool altinn2Compatible, string sourceRepository) { // Arrange var org = "ttd"; var developer = "testUser"; var targetRepository = Guid.NewGuid().ToString(); await TestDataHelper.CopyRepositoryForTest(org, sourceRepository, developer, targetRepository); var client = GetTestClient(); var url = $"{_versionPrefix}/{org}/{targetRepository}/Datamodels/Post"; var createViewModel = new CreateModelViewModel() { ModelName = "test", RelativeDirectory = relativeDirectory, Altinn2Compatible = altinn2Compatible }; var postRequestMessage = new HttpRequestMessage(HttpMethod.Post, url) { Content = JsonContent.Create(createViewModel, null, new System.Text.Json.JsonSerializerOptions() { PropertyNamingPolicy = System.Text.Json.JsonNamingPolicy.CamelCase }) }; await AuthenticationUtil.AddAuthenticateAndAuthAndXsrFCookieToRequest(client, postRequestMessage); // Act / Assert try { var postResponse = await client.SendAsync(postRequestMessage); Assert.Equal(HttpStatusCode.Created, postResponse.StatusCode); Assert.Equal("application/json", postResponse.Content.Headers.ContentType.MediaType); var postContent = await postResponse.Content.ReadAsStringAsync(); Json.Schema.JsonSchema postJsonSchema = Json.Schema.JsonSchema.FromText(postContent); Assert.NotNull(postJsonSchema); // Try to read back the created schema to verify it's stored // at the location provided in the post response var location = postResponse.Headers.Location; var getRequestMessage = new HttpRequestMessage(HttpMethod.Get, location); var getResponse = await client.SendAsync(getRequestMessage); var getContent = await getResponse.Content.ReadAsStringAsync(); var getJsonSchema = Json.Schema.JsonSchema.FromText(getContent); Assert.NotNull(getJsonSchema); Assert.Equal(postContent, getContent); } finally { TestDataHelper.DeleteAppRepository(org, targetRepository, developer); } }