Skip to content

Commit

Permalink
Add negative test for REGEX patterns
Browse files Browse the repository at this point in the history
  • Loading branch information
SachinAkash01 committed Oct 17, 2023
1 parent f68caac commit e42ddda
Show file tree
Hide file tree
Showing 3 changed files with 65 additions and 2 deletions.
Original file line number Diff line number Diff line change
@@ -0,0 +1,52 @@
/*
* Copyright (c) 2022, WSO2 LLC. (https://www.wso2.com).
*
* WSO2 LLC. licenses this file to you under the Apache License,
* Version 2.0 (the "License"); you may not use this file except
* in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing,
* software distributed under the License is distributed on an
* "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
* KIND, either express or implied. See the License for the
* specific language governing permissions and limitations
* under the License.
*/
package io.ballerina.openapi.generators.openapi;

import io.ballerina.openapi.cmd.OASContractGenerator;
import io.ballerina.openapi.converter.diagnostic.OpenAPIConverterDiagnostic;
import org.testng.Assert;
import org.testng.annotations.Test;

import java.io.IOException;
import java.nio.file.Path;
import java.nio.file.Paths;
import java.util.Arrays;
import java.util.List;

/**
* This test class for the covering the negative tests for constraint
* {@link io.ballerina.openapi.converter.service.ConstraintAnnotation} scenarios.
*
*/
public class NegativeConstraintTests {
private static final Path RES_DIR = Paths.get("src/test/resources/ballerina-to-openapi").toAbsolutePath();

@Test(description = "When the string constraint has incompatible REGEX patterns with OAS")
public void testInvalidRegexPatterns() throws IOException {
Path ballerinaFilePath = RES_DIR.resolve("constraint/negative_patternInterpolation.bal");
List<OpenAPIConverterDiagnostic> errors = TestUtils.compareWithGeneratedFile(new OASContractGenerator(),
ballerinaFilePath, "constraint/negative_patternInterpolation.yaml");
List<String> expectedPatterns = Arrays.asList("^${i}[a-zA-Z]+$", "^[A-Z]${j}+$", "^[\\${2}a-z]+$"
,"^[a-z${2}]+$");
for (int i = 0; i < errors.size(); i++) {
Assert.assertEquals(errors.get(i).getMessage(), "Given REGEX pattern '" + expectedPatterns.get(i) +
"' is not supported by the OpenAPI tool, it may also not support interpolation within the " +
"REGEX pattern.");
}
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -18,6 +18,7 @@
package io.ballerina.openapi.generators.openapi;

import io.ballerina.openapi.cmd.OASContractGenerator;
import io.ballerina.openapi.converter.diagnostic.OpenAPIConverterDiagnostic;
import org.testng.Assert;

import java.io.File;
Expand All @@ -26,6 +27,7 @@
import java.nio.file.Path;
import java.nio.file.Paths;
import java.util.Comparator;
import java.util.List;
import java.util.stream.Collectors;
import java.util.stream.Stream;

Expand All @@ -52,11 +54,17 @@ public static void deleteGeneratedFiles(String filename, Path tempDir) {
}

public static void compareWithGeneratedFile(Path ballerinaFilePath, String yamlFile) throws IOException {
compareWithGeneratedFile(new OASContractGenerator(), ballerinaFilePath, yamlFile);
}

public static List<OpenAPIConverterDiagnostic> compareWithGeneratedFile(OASContractGenerator openApiConverter,
Path ballerinaFilePath, String yamlFile)
throws IOException {
Path tempDir = Files.createTempDirectory("bal-to-openapi-test-out-" + System.nanoTime());
try {
String expectedYamlContent = getStringFromGivenBalFile(RES_DIR.resolve("expected_gen"), yamlFile);
OASContractGenerator openApiConverter = new OASContractGenerator();
openApiConverter.generateOAS3DefinitionsAllService(ballerinaFilePath, tempDir, null, false);
openApiConverter.generateOAS3DefinitionsAllService(
ballerinaFilePath, tempDir, null, false);
if (Files.exists(tempDir.resolve("payloadV_openapi.yaml"))) {
String generatedYaml = getStringFromGivenBalFile(tempDir, "payloadV_openapi.yaml");
generatedYaml = (generatedYaml.trim()).replaceAll("\\s+", "");
Expand All @@ -65,8 +73,10 @@ public static void compareWithGeneratedFile(Path ballerinaFilePath, String yamlF
} else {
Assert.fail("Yaml was not generated");
}
return openApiConverter.getErrors();
} catch (IOException e) {
Assert.fail("Error while generating the service. " + e.getMessage());
return List.of();
} finally {
deleteGeneratedFiles("payloadV_openapi.yaml", tempDir);
deleteDirectory(tempDir);
Expand Down
1 change: 1 addition & 0 deletions openapi-cli/src/test/resources/testng.xml
Original file line number Diff line number Diff line change
Expand Up @@ -43,6 +43,7 @@ under the License.
<class name="io.ballerina.openapi.generators.openapi.ResponseHeaderTests"/>
<class name="io.ballerina.openapi.generators.openapi.MapTypeTests"/>
<class name="io.ballerina.openapi.generators.openapi.ConstraintTests"/>
<class name="io.ballerina.openapi.generators.openapi.NegativeConstraintTests"/>
<class name="io.ballerina.openapi.generators.openapi.ParameterAnnotationTests"/>
<class name="io.ballerina.openapi.generators.openapi.UnSupportedBallerinaFileTests"/>
<class name="io.ballerina.openapi.cmd.OpenApiGenServiceCmdTest"/>
Expand Down

0 comments on commit e42ddda

Please sign in to comment.