Skip to content

Commit

Permalink
feat: Provide example value for uuid and email
Browse files Browse the repository at this point in the history
  • Loading branch information
timonback committed Aug 14, 2023
1 parent 579ef1d commit 161a876
Show file tree
Hide file tree
Showing 4 changed files with 61 additions and 5 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -35,11 +35,17 @@ public class ExampleJsonGenerator implements ExampleGenerator {
private static final String DEFAULT_BINARY_EXAMPLE =
"\"0111010001100101011100110111010000101101011000100110100101101110011000010110010001111001\"";
private static final String DEFAULT_STRING_EXAMPLE = "\"string\"";
public static final String DEFAULT_EMAIL_EXAMPLE = "\"[email protected]\"";
public static final String DEFAULT_UUID_EXAMPLE = "\"3fa85f64-5717-4562-b3fc-2c963f66afa6\"";

private static String DEFAULT_UNKNOWN_SCHAME_EXAMPLE(String type) {
private static String DEFAULT_UNKNOWN_SCHEMA_EXAMPLE(String type) {
return "\"unknown schema type: " + type + "\"";
}

private static String DEFAULT_UNKNOWN_SCHEMA_STRING_EXAMPLE(String format) {
return "\"unknown string schema format: " + format + "\"";
}

@Override
public Object fromSchema(Schema schema, Map<String, Schema> definitions) {
try {
Expand Down Expand Up @@ -79,7 +85,7 @@ private static String buildSchemaInternal(Schema schema, Map<String, Schema> def
case "number" -> DEFAULT_NUMBER_EXAMPLE;
case "object" -> ExampleJsonGenerator.handleObject(schema, definitions, visited);
case "string" -> ExampleJsonGenerator.handleStringSchema(schema);
default -> DEFAULT_UNKNOWN_SCHAME_EXAMPLE(type);
default -> DEFAULT_UNKNOWN_SCHEMA_EXAMPLE(type);
};
}

Expand Down Expand Up @@ -120,10 +126,12 @@ private static String handleStringSchema(Schema schema) {
return switch (format) {
case "date" -> DEFUALT_DATE_EXAMPLE;
case "date-time" -> DEFAULT_DATE_TIME_EXAMPLE;
case "email" -> DEFAULT_EMAIL_EXAMPLE;
case "password" -> DEFAULT_PASSWORD_EXAMPLE;
case "byte" -> DEFAULT_BYTE_EXAMPLE;
case "binary" -> DEFAULT_BINARY_EXAMPLE;
default -> "unknown type format: " + format;
case "uuid" -> DEFAULT_UUID_EXAMPLE;
default -> DEFAULT_UNKNOWN_SCHEMA_STRING_EXAMPLE(format);
};
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -21,6 +21,7 @@
import java.util.Map;
import java.util.Optional;
import java.util.Set;
import java.util.UUID;

import static org.assertj.core.api.Assertions.assertThat;
import static org.junit.jupiter.api.Assertions.assertEquals;
Expand Down Expand Up @@ -161,6 +162,8 @@ private static class Nested {
private List<Integer> nli;
private Set<MyClass> nsm;
private Map<Float, MyClass> nmfm;
private UUID nu;
private byte[] nba;
private Cyclic nc;

@Data
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -5,12 +5,14 @@
import io.swagger.v3.oas.models.media.BooleanSchema;
import io.swagger.v3.oas.models.media.DateSchema;
import io.swagger.v3.oas.models.media.DateTimeSchema;
import io.swagger.v3.oas.models.media.EmailSchema;
import io.swagger.v3.oas.models.media.IntegerSchema;
import io.swagger.v3.oas.models.media.NumberSchema;
import io.swagger.v3.oas.models.media.ObjectSchema;
import io.swagger.v3.oas.models.media.PasswordSchema;
import io.swagger.v3.oas.models.media.Schema;
import io.swagger.v3.oas.models.media.StringSchema;
import io.swagger.v3.oas.models.media.UUIDSchema;
import org.junit.jupiter.api.Nested;
import org.junit.jupiter.api.Test;

Expand Down Expand Up @@ -197,6 +199,15 @@ void type_string_format_datetime() {
assertThat(actual).isEqualTo("\"2015-07-20T15:49:04-07:00\"");
}

@Test
void type_string_format_email() {
EmailSchema schema = new EmailSchema();

String actual = ExampleJsonGenerator.buildSchema(schema, emptyMap());

assertThat(actual).isEqualTo("\"[email protected]\"");
}

@Test
void type_string_format_password() {
PasswordSchema schema = new PasswordSchema();
Expand All @@ -206,6 +217,25 @@ void type_string_format_password() {
assertThat(actual).isEqualTo("\"string-password\"");
}

@Test
void type_string_format_uuid() {
UUIDSchema schema = new UUIDSchema();

String actual = ExampleJsonGenerator.buildSchema(schema, emptyMap());

assertThat(actual).isEqualTo("\"3fa85f64-5717-4562-b3fc-2c963f66afa6\"");
}

@Test
void type_string_format_unknown() {
StringSchema schema = new StringSchema();
schema.setType("unknown");

String actual = ExampleJsonGenerator.buildSchema(schema, emptyMap());

assertThat(actual).isEqualTo("\"unknown string schema type: unknown\"");
}

@Test
void type_unknown_schema() {
class TestSchema extends Schema<StringSchema> {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -35,6 +35,7 @@
"f" : 1.1,
"i" : 0,
"n" : {
"nba" : [ "YmFzZTY0LWV4YW1wbGU=" ],
"nc" : {
"cyclic" : { }
},
Expand All @@ -43,7 +44,8 @@
"ns" : "string",
"nsm" : [ {
"s" : "string"
} ]
} ],
"nu" : "3fa85f64-5717-4562-b3fc-2c963f66afa6"
},
"s" : "string"
}
Expand Down Expand Up @@ -73,6 +75,13 @@
"Nested" : {
"type" : "object",
"properties" : {
"nba" : {
"type" : "array",
"items" : {
"type" : "string",
"format" : "byte"
}
},
"nc" : {
"$ref" : "#/components/schemas/Cyclic"
},
Expand All @@ -98,9 +107,14 @@
"items" : {
"$ref" : "#/components/schemas/MyClass"
}
},
"nu" : {
"type" : "string",
"format" : "uuid"
}
},
"example" : {
"nba" : [ "YmFzZTY0LWV4YW1wbGU=" ],
"nc" : {
"cyclic" : { }
},
Expand All @@ -109,7 +123,8 @@
"ns" : "string",
"nsm" : [ {
"s" : "string"
} ]
} ],
"nu" : "3fa85f64-5717-4562-b3fc-2c963f66afa6"
}
}
}

0 comments on commit 161a876

Please sign in to comment.