public async Task DeleteSchema_ModelsRepo_ShouldDelete() { // Arrange var org = "ttd"; var sourceRepository = "xyz-datamodels"; var developer = "testUser"; var targetRepository = Guid.NewGuid().ToString(); await TestDataHelper.CopyAppRepositoryForTest(org, sourceRepository, developer, targetRepository); try { var altinnGitRepositoryFactory = new AltinnGitRepositoryFactory(TestDataHelper.GetTestDataRepositoriesRootDirectory()); ISchemaModelService schemaModelService = new SchemaModelService(altinnGitRepositoryFactory); var schemaFiles = schemaModelService.GetSchemaFiles(org, targetRepository, developer); schemaFiles.Should().HaveCount(6); // Act var schemaToDelete = schemaFiles.First(s => s.FileName == "Kursdomene_HvemErHvem_M_2021-04-08_5742_34627_SERES.schema.json"); await schemaModelService.DeleteSchema(org, targetRepository, developer, schemaToDelete.RepositoryRelativeUrl); // Assert schemaFiles = schemaModelService.GetSchemaFiles(org, targetRepository, developer); schemaFiles.Should().HaveCount(5); } finally { TestDataHelper.DeleteAppRepository(org, targetRepository, developer); } }
public async Task PutDatamodel_ValidInput_ShouldUpdateFile(string modelPath) { var org = "ttd"; var sourceRepository = "hvem-er-hvem"; var developer = "testUser"; var targetRepository = Guid.NewGuid().ToString(); await TestDataHelper.CopyAppRepositoryForTest(org, sourceRepository, developer, targetRepository); var client = GetTestClient(); var url = $"{_versionPrefix}/{org}/{targetRepository}/Datamodels/?modelPath={modelPath}"; var minimumValidJsonSchema = @"{""properties"":{""root"":{""$ref"":""#/definitions/rootType""}},""definitions"":{""rootType"":{""properties"":{""keyword"":{""type"":""string""}}}}}"; string requestBody = minimumValidJsonSchema; var httpRequestMessage = new HttpRequestMessage(HttpMethod.Put, url) { Content = new StringContent(requestBody, Encoding.UTF8, "application/json") }; await AuthenticationUtil.AddAuthenticateAndAuthAndXsrFCookieToRequest(client, httpRequestMessage); try { var response = await client.SendAsync(httpRequestMessage); Assert.Equal(HttpStatusCode.NoContent, response.StatusCode); } finally { TestDataHelper.DeleteAppRepository(org, targetRepository, developer); } }
public async Task UpdateSchema_AppRepo_ShouldUpdate() { // Arrange var org = "ttd"; var sourceRepository = "hvem-er-hvem"; var developer = "testUser"; var targetRepository = Guid.NewGuid().ToString(); await TestDataHelper.CopyAppRepositoryForTest(org, sourceRepository, developer, targetRepository); try { var altinnGitRepositoryFactory = new AltinnGitRepositoryFactory(TestDataHelper.GetTestDataRepositoriesRootDirectory()); // Act ISchemaModelService schemaModelService = new SchemaModelService(altinnGitRepositoryFactory); var expectedSchemaUpdates = @"{""properties"":{""root"":{""$ref"":""#/definitions/rootType""}},""definitions"":{""rootType"":{""properties"":{""keyword"":{""type"":""string""}}}}}"; await schemaModelService.UpdateSchema(org, targetRepository, developer, $"App/models/HvemErHvem_SERES.schema.json", expectedSchemaUpdates); // Assert var altinnGitRepository = altinnGitRepositoryFactory.GetAltinnGitRepository(org, targetRepository, developer); var updatedSchema = await altinnGitRepository.ReadTextByRelativePathAsync("App/models/HvemErHvem_SERES.schema.json"); updatedSchema.Should().BeEquivalentTo(expectedSchemaUpdates); var xsd = await altinnGitRepository.ReadTextByRelativePathAsync("App/models/HvemErHvem_SERES.xsd"); // Generated XSD included for reference // <?xml version="1.0"?> // <xsd:schema attributeFormDefault="unqualified" elementFormDefault="qualified" xmlns:xsd="http://www.w3.org/2001/XMLSchema"> // <xsd:element name="root" type="rootType" /> // <xsd:complexType name="rootType"> // <xsd:sequence> // <xsd:element minOccurs="0" name="keyword" nillable="true" type="xsd:string" /> // </xsd:sequence> // </xsd:complexType> // </xsd:schema> var xsdSchema = XDocument.Parse(xsd); xsdSchema.Root.Should().NotBeNull(); xsdSchema.Root.Elements().First().Attributes().First(a => a.Name.LocalName == "name").Should().HaveValue("root"); var metadataModelJson = await altinnGitRepository.ReadTextByRelativePathAsync("App/models/HvemErHvem_SERES.metadata.json"); var jsonSchema = JsonSerializer.Deserialize <ModelMetadata>(metadataModelJson); jsonSchema.Org.Should().Be(org); } finally { TestDataHelper.DeleteAppRepository(org, targetRepository, developer); } }