-
Notifications
You must be signed in to change notification settings - Fork 276
/
Copy pathLimitsTest.java
118 lines (103 loc) · 4.49 KB
/
LimitsTest.java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
package io.apicurio.registry.limits;
import java.io.InputStream;
import java.util.Map;
import org.apache.commons.lang3.StringUtils;
import org.junit.jupiter.api.Assertions;
import org.junit.jupiter.api.BeforeAll;
import org.junit.jupiter.api.Tag;
import org.junit.jupiter.api.Test;
import org.junit.jupiter.api.condition.DisabledIfEnvironmentVariable;
import com.microsoft.kiota.ApiException;
import io.apicurio.registry.AbstractRegistryTestBase;
import io.apicurio.registry.AbstractResourceTestBase;
import io.apicurio.registry.model.GroupId;
import io.apicurio.registry.rest.client.models.ArtifactContent;
import io.apicurio.registry.rest.client.models.EditableVersionMetaData;
import io.apicurio.registry.rest.client.models.Labels;
import io.apicurio.registry.storage.RegistryStorage;
import io.apicurio.registry.types.ArtifactType;
import io.apicurio.registry.types.Current;
import io.apicurio.registry.utils.IoUtil;
import io.apicurio.registry.utils.tests.ApicurioTestTags;
import io.apicurio.registry.utils.tests.TestUtils;
import io.quarkus.test.junit.QuarkusTest;
import io.quarkus.test.junit.TestProfile;
import jakarta.inject.Inject;
@QuarkusTest
@TestProfile(LimitsTestProfile.class)
@DisabledIfEnvironmentVariable(named = AbstractRegistryTestBase.CURRENT_ENV, matches = AbstractRegistryTestBase.CURRENT_ENV_MAS_REGEX)
@Tag(ApicurioTestTags.SLOW)
public class LimitsTest extends AbstractResourceTestBase {
@Inject
@Current
RegistryStorage storage;
@BeforeAll
public void cleanUpData() {
storage.deleteAllUserData();
}
@Test
public void testLimits() throws Exception {
InputStream jsonSchema = getClass().getResourceAsStream("/io/apicurio/registry/util/json-schema.json");
Assertions.assertNotNull(jsonSchema);
String content = IoUtil.toString(jsonSchema);
String artifactId = TestUtils.generateArtifactId();
createArtifact(artifactId, ArtifactType.JSON, content);
createArtifactVersion(artifactId, ArtifactType.JSON, content);
//valid metadata
EditableVersionMetaData meta = new EditableVersionMetaData();
meta.setName(StringUtils.repeat('a', 512));
meta.setDescription(StringUtils.repeat('a', 1024));
String fourBytesText = StringUtils.repeat('a', 4);
var labels = new Labels();
labels.setAdditionalData(Map.of(
StringUtils.repeat('a', 4), fourBytesText,
StringUtils.repeat('b', 4), fourBytesText));
meta.setLabels(labels);
clientV3
.groups()
// TODO: verify groupId = null cannot be used
.byGroupId(GroupId.DEFAULT.getRawGroupIdWithDefaultString())
.artifacts()
.byArtifactId(artifactId)
.versions()
.byVersionExpression("1")
.put(meta)
;
//invalid metadata
EditableVersionMetaData invalidmeta = new EditableVersionMetaData();
invalidmeta.setName(StringUtils.repeat('a', 513));
invalidmeta.setDescription(StringUtils.repeat('a', 1025));
String fiveBytesText = StringUtils.repeat('a', 5);
var labels2 = new Labels();
labels2.setAdditionalData(Map.of(
StringUtils.repeat('a', 5), fiveBytesText,
StringUtils.repeat('b', 5), fiveBytesText));
invalidmeta.setLabels(labels2);
var exception1 = Assertions.assertThrows(ApiException.class, () -> {
clientV3
.groups()
.byGroupId(GroupId.DEFAULT.getRawGroupIdWithDefaultString())
.artifacts()
.byArtifactId(artifactId)
.versions()
.byVersionExpression("1")
.put(invalidmeta)
;
});
Assertions.assertEquals(409, exception1.getResponseStatusCode());
//schema number 3 , exceeds the max number of schemas
var exception2 = Assertions.assertThrows(io.apicurio.registry.rest.client.models.Error.class, () -> {
ArtifactContent data = new ArtifactContent();
data.setContent("{}");
clientV3
.groups()
.byGroupId(GroupId.DEFAULT.getRawGroupIdWithDefaultString())
.artifacts()
.post(data, config -> {
config.headers.add("X-Registry-ArtifactType", ArtifactType.JSON);
config.headers.add("X-Registry-ArtifactId", artifactId);
});
});
Assertions.assertEquals(409, exception2.getErrorCode());
}
}