Skip to content

Commit cdafee4

Browse files
committed
✅ Updated WireMock mappings to match the response from AEM.
Originally, the code used an Adaptive Form recording, but when the TestContainers code was created, it used an HTML5 form instead. At that time, the WireMock recordings weren't updated so the WireMock tests still used the Adaptive Form. Now both WireMock and TestContainers tests use the same HTML5 form and so the same container image (running on port 4502) can be used to re-create the WireMock recordings.
1 parent f548ef7 commit cdafee4

10 files changed

+70
-150
lines changed

spring/fluentforms-sample-webmvc-app/src/main/java/com/_4point/aem/fluentforms/sampleapp/JerseyConfig.java

Lines changed: 0 additions & 23 deletions
This file was deleted.

spring/fluentforms-sample-webmvc-app/src/test/java/com/_4point/aem/fluentforms/sampleapp/resources/WireMockAemProxyEndpointTest.java

Lines changed: 2 additions & 50 deletions
Original file line numberDiff line numberDiff line change
@@ -3,16 +3,11 @@
33
import static com.github.tomakehurst.wiremock.client.WireMock.*;
44
import static org.junit.jupiter.api.Assertions.*;
55

6-
import java.nio.file.Path;
76
import java.util.List;
87
import java.util.concurrent.TimeUnit;
98

10-
import org.htmlunit.DefaultCredentialsProvider;
11-
import org.htmlunit.WebClient;
12-
import org.htmlunit.html.HtmlPage;
139
import org.junit.jupiter.api.AfterEach;
1410
import org.junit.jupiter.api.BeforeEach;
15-
import org.junit.jupiter.api.Disabled;
1611
import org.junit.jupiter.api.Test;
1712
import org.junit.jupiter.api.Timeout;
1813
import org.junit.jupiter.api.condition.EnabledIf;
@@ -42,11 +37,10 @@
4237
class WireMockAemProxyEndpointTest extends AbstractAemProxyEndpointTest {
4338
private static final boolean WIREMOCK_RECORDING = false;
4439

45-
private static final Path RESOURCES_DIR = Path.of("src", "test", "resources");
46-
private static final Path SAMPLE_FILES_DIR = RESOURCES_DIR.resolve("SampleFiles");
40+
private static final String CRX_CONTENT_ROOT = "crx:/content/dam/formsanddocuments/sample-forms/";
4741

4842
public WireMockAemProxyEndpointTest() {
49-
super(SAMPLE_FILES_DIR.resolve(SAMPLE_XDP_FILENAME_PATH).toAbsolutePath().toString());
43+
super(CRX_CONTENT_ROOT + SAMPLE_XDP_FILENAME_PATH);
5044
}
5145

5246
@BeforeEach
@@ -84,46 +78,4 @@ protected void verifyProxyTest() {
8478
)
8579
.forEach(url->verify(getRequestedFor(urlPathEqualTo(url))));
8680
}
87-
88-
89-
// In order to re-record the AEM interactions for Wiremock emulation, you need to:
90-
// 1) run a local AEM server
91-
// 2) set the WIREMOCK_RECORDING variable to true
92-
// 3) then run this test.
93-
//
94-
// It will record the interactions with the AEM server.
95-
// Don't forget to set the WIREMOCK_RECORDING variable back to false after you are done.
96-
//
97-
// Note: THe recordings may require modification. As of AEM 6.5 LTS, the required changes are:
98-
// * Two calls to /content/xfaforms/profiles/default.html - One returns a 401, the other returns the form.
99-
// This is because this HTMLUnit emulates a browser. The 401 recording can be deleted since the FluentForms code
100-
// sends a pre-emptive authentication header.
101-
// * the /etc.clientlibs/fd/xfaforms/clientlibs/I18N/en_US recording must be modified to make the _US optional.
102-
// It appears that the FluentForms call does not include the _US suffix.
103-
@Disabled("This test is not really a test but it is used to record interactions with the AEM server.")
104-
@Test
105-
void aemTest(WireMockRuntimeInfo wmRuntimeInfo) throws Exception {
106-
DefaultCredentialsProvider userCredentials = new DefaultCredentialsProvider();
107-
userCredentials.addCredentials("admin", "admin".toCharArray());
108-
try (final WebClient webClient = new WebClient()) {
109-
webClient.setCredentialsProvider(userCredentials);
110-
String baseUri = "http://localhost:" + wmRuntimeInfo.getHttpPort() + "/content/xfaforms/profiles/default.html?contentRoot=crx:///content/dam/formsanddocuments/sample-forms&template=SampleForm.xdp";
111-
final HtmlPage page = webClient.getPage(baseUri);
112-
assertEquals("LC Forms", page.getTitleText());
113-
114-
// final String pageAsXml = page.asXml();
115-
// assertTrue(pageAsXml.contains("<body class=\"topBarDisabled\">"), "Does not contain topBarDisabled");
116-
//
117-
// final String pageAsText = page.asNormalizedText();
118-
// assertTrue(pageAsText.contains("Support for the HTTP and HTTPS protocols"));
119-
}
120-
List.of("/content/xfaforms/profiles/default.html",
121-
"/etc.clientlibs/toggles.json",
122-
"/libs/granite/csrf/token.json",
123-
"/etc.clientlibs/fd/xfaforms/clientlibs/I18N/en_US.js",
124-
"/etc.clientlibs/fd/xfaforms/clientlibs/profile.css",
125-
"/etc.clientlibs/fd/xfaforms/clientlibs/profile.js"
126-
)
127-
.forEach(url->verify(getRequestedFor(urlPathEqualTo(url))));
128-
}
12981
}

spring/fluentforms-sample-webmvc-app/src/test/resources/mappings/AemProxyEndpointTest_proxyTest_content_xfaforms_profiles_default_html.json

Lines changed: 0 additions & 36 deletions
This file was deleted.
Original file line numberDiff line numberDiff line change
@@ -1,21 +1,22 @@
11
{
2-
"id" : "00a42460-ec46-4cee-94e6-33ea44869f87",
3-
"name" : "etc.clientlibs_clientlibs_granite_jquery_granite_csrf.js",
2+
"id" : "7a26c766-1d0f-4af8-a2a5-f1d5cd028f5d",
3+
"name" : "libs_granite_csrf_token.json",
44
"request" : {
5-
"url" : "/etc.clientlibs/clientlibs/granite/jquery/granite/csrf.js",
5+
"url" : "/libs/granite/csrf/token.json",
66
"method" : "GET"
77
},
88
"response" : {
99
"status" : 200,
10-
"base64Body" : "LyoKICogQURPQkUgQ09ORklERU5USUFMCiAqCiAqIENvcHlyaWdodCAyMDE1IEFkb2JlIFN5c3RlbXMgSW5jb3Jwb3JhdGVkCiAqIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCiAqCiAqIE5PVElDRTogIEFsbCBpbmZvcm1hdGlvbiBjb250YWluZWQgaGVyZWluIGlzLCBhbmQgcmVtYWlucwogKiB0aGUgcHJvcGVydHkgb2YgQWRvYmUgU3lzdGVtcyBJbmNvcnBvcmF0ZWQgYW5kIGl0cyBzdXBwbGllcnMsCiAqIGlmIGFueS4gIFRoZSBpbnRlbGxlY3R1YWwgYW5kIHRlY2huaWNhbCBjb25jZXB0cyBjb250YWluZWQKICogaGVyZWluIGFyZSBwcm9wcmlldGFyeSB0byBBZG9iZSBTeXN0ZW1zIEluY29ycG9yYXRlZCBhbmQgaXRzCiAqIHN1cHBsaWVycyBhbmQgbWF5IGJlIGNvdmVyZWQgYnkgVS5TLiBhbmQgRm9yZWlnbiBQYXRlbnRzLAogKiBwYXRlbnRzIGluIHByb2Nlc3MsIGFuZCBhcmUgcHJvdGVjdGVkIGJ5IHRyYWRlIHNlY3JldCBvciBjb3B5cmlnaHQgbGF3LgogKiBEaXNzZW1pbmF0aW9uIG9mIHRoaXMgaW5mb3JtYXRpb24gb3IgcmVwcm9kdWN0aW9uIG9mIHRoaXMgbWF0ZXJpYWwKICogaXMgc3RyaWN0bHkgZm9yYmlkZGVuIHVubGVzcyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24gaXMgb2J0YWluZWQKICogZnJvbSBBZG9iZSBTeXN0ZW1zIEluY29ycG9yYXRlZC4KICoKICovCi8qIGdsb2JhbCBDUVVSTEluZm86ZmFsc2UgKi8KKGZ1bmN0aW9uKHdpbmRvdykgewogICAgInVzZSBzdHJpY3QiOwoKICAgIHdpbmRvdy5HcmFuaXRlID0gd2luZG93LkdyYW5pdGUgfHwge307CiAgICB3aW5kb3cuR3Jhbml0ZS5IVFRQID0gd2luZG93LkdyYW5pdGUuSFRUUCB8fCB7fTsKCiAgICB2YXIgY29udGV4dFBhdGggPSBudWxsOwoKICAgIGZ1bmN0aW9uIGRldGVjdENvbnRleHRQYXRoKCkgewogICAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBtYXgtbGVuCiAgICAgICAgdmFyIFNDUklQVF9VUkxfUkVHRVhQID0gL14oPzpodHRwfGh0dHBzKTpcL1wvW14vXSsoXC8uKilcLyg/OmV0Y1wuY2xpZW50bGlic3xldGMoXC8uKikqXC9jbGllbnRsaWJzfGxpYnMoXC8uKikqXC9jbGllbnRsaWJzfGFwcHMoXC8uKikqXC9jbGllbnRsaWJzfGV0Y1wvZGVzaWducykuKlwuanMoXD8uKik/JC87CiAgICAgICAgdHJ5IHsKICAgICAgICAgICAgaWYgKHdpbmRvdy5DUVVSTEluZm8pIHsKICAgICAgICAgICAgICAgIGNvbnRleHRQYXRoID0gQ1FVUkxJbmZvLmNvbnRleHRQYXRoIHx8ICIiOwogICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgdmFyIHNjcmlwdHMgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgic2NyaXB0Iik7CiAgICAgICAgICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IHNjcmlwdHMubGVuZ3RoOyBpKyspIHsKICAgICAgICAgICAgICAgICAgICB2YXIgcmVzdWx0ID0gU0NSSVBUX1VSTF9SRUdFWFAuZXhlYyhzY3JpcHRzW2ldLnNyYyk7CiAgICAgICAgICAgICAgICAgICAgaWYgKHJlc3VsdCkgewogICAgICAgICAgICAgICAgICAgICAgICBjb250ZXh0UGF0aCA9IHJlc3VsdFsxXTsKICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIGNvbnRleHRQYXRoID0gIiI7CiAgICAgICAgICAgIH0KICAgICAgICB9IGNhdGNoIChlKSB7CiAgICAgICAgICAgIC8vIGlnbm9yZWQKICAgICAgICB9CiAgICB9CgogICAgd2luZG93LkdyYW5pdGUuSFRUUC5leHRlcm5hbGl6ZSA9IHdpbmRvdy5HcmFuaXRlLkhUVFAuZXh0ZXJuYWxpemUgfHwgZnVuY3Rpb24odXJsKSB7CiAgICAgICAgaWYgKGNvbnRleHRQYXRoID09PSBudWxsKSB7CiAgICAgICAgICAgIGRldGVjdENvbnRleHRQYXRoKCk7CiAgICAgICAgfQoKICAgICAgICB0cnkgewogICAgICAgICAgICBpZiAodXJsLmluZGV4T2YoIi8iKSA9PT0gMCAmJiBjb250ZXh0UGF0aCAmJiB1cmwuaW5kZXhPZihjb250ZXh0UGF0aCArICIvIikgIT09IDApIHsKICAgICAgICAgICAgICAgIHVybCA9IGNvbnRleHRQYXRoICsgdXJsOwogICAgICAgICAgICB9CiAgICAgICAgfSBjYXRjaCAoZSkgewogICAgICAgICAgICAvLyBpZ25vcmVkCiAgICAgICAgfQoKICAgICAgICByZXR1cm4gdXJsOwogICAgfTsKfSkodGhpcyk7CgovKgogKiBBRE9CRSBDT05GSURFTlRJQUwKICoKICogQ29weXJpZ2h0IDIwMTUgQWRvYmUgU3lzdGVtcyBJbmNvcnBvcmF0ZWQKICogQWxsIFJpZ2h0cyBSZXNlcnZlZC4KICoKICogTk9USUNFOiAgQWxsIGluZm9ybWF0aW9uIGNvbnRhaW5lZCBoZXJlaW4gaXMsIGFuZCByZW1haW5zCiAqIHRoZSBwcm9wZXJ0eSBvZiBBZG9iZSBTeXN0ZW1zIEluY29ycG9yYXRlZCBhbmQgaXRzIHN1cHBsaWVycywKICogaWYgYW55LiAgVGhlIGludGVsbGVjdHVhbCBhbmQgdGVjaG5pY2FsIGNvbmNlcHRzIGNvbnRhaW5lZAogKiBoZXJlaW4gYXJlIHByb3ByaWV0YXJ5IHRvIEFkb2JlIFN5c3RlbXMgSW5jb3Jwb3JhdGVkIGFuZCBpdHMKICogc3VwcGxpZXJzIGFuZCBtYXkgYmUgY292ZXJlZCBieSBVLlMuIGFuZCBGb3JlaWduIFBhdGVudHMsCiAqIHBhdGVudHMgaW4gcHJvY2VzcywgYW5kIGFyZSBwcm90ZWN0ZWQgYnkgdHJhZGUgc2VjcmV0IG9yIGNvcHlyaWdodCBsYXcuCiAqIERpc3NlbWluYXRpb24gb2YgdGhpcyBpbmZvcm1hdGlvbiBvciByZXByb2R1Y3Rpb24gb2YgdGhpcyBtYXRlcmlhbAogKiBpcyBzdHJpY3RseSBmb3JiaWRkZW4gdW5sZXNzIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbiBpcyBvYnRhaW5lZAogKiBmcm9tIEFkb2JlIFN5c3RlbXMgSW5jb3Jwb3JhdGVkLgogKgogKi8KKGZ1bmN0aW9uKGZhY3RvcnkpIHsKICAgICJ1c2Ugc3RyaWN0IjsKCiAgICAvLyBHUkFOSVRFLTIyMjgxIENoZWNrIGZvciBtdWx0aXBsZSBpbml0aWFsaXphdGlvbgogICAgaWYgKHdpbmRvdy5HcmFuaXRlLmNzcmYpIHsKICAgICAgICByZXR1cm47CiAgICB9CgogICAgd2luZG93LkdyYW5pdGUuY3NyZiA9IGZhY3Rvcnkod2luZG93LkdyYW5pdGUuSFRUUCk7Cn0oZnVuY3Rpb24oaHR0cCkgewogICAgInVzZSBzdHJpY3QiOwoKICAgIC8vIEFkb2JlUGF0ZW50SUQ9IlA1Mjk2IgoKICAgIGZ1bmN0aW9uIFByb21pc2UoKSB7CiAgICAgICAgdGhpcy5faGFuZGxlciA9IFtdOwogICAgfQoKICAgIFByb21pc2UucHJvdG90eXBlID0gewogICAgICAgIHRoZW46IGZ1bmN0aW9uKHJlc29sdmVGbiwgcmVqZWN0Rm4pIHsKICAgICAgICAgICAgdGhpcy5faGFuZGxlci5wdXNoKHsgcmVzb2x2ZTogcmVzb2x2ZUZuLCByZWplY3Q6IHJlamVjdEZuIH0pOwogICAgICAgIH0sCiAgICAgICAgcmVzb2x2ZTogZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIHRoaXMuX2V4ZWN1dGUoInJlc29sdmUiLCBhcmd1bWVudHMpOwogICAgICAgIH0sCiAgICAgICAgcmVqZWN0OiBmdW5jdGlvbigpIHsKICAgICAgICAgICAgdGhpcy5fZXhlY3V0ZSgicmVqZWN0IiwgYXJndW1lbnRzKTsKICAgICAgICB9LAogICAgICAgIF9leGVjdXRlOiBmdW5jdGlvbihyZXN1bHQsIGFyZ3MpIHsKICAgICAgICAgICAgaWYgKHRoaXMuX2hhbmRsZXIgPT09IG51bGwpIHsKICAgICAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcigiUHJvbWlzZSBhbHJlYWR5IGNvbXBsZXRlZC4iKTsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgZm9yICh2YXIgaSA9IDAsIGxuID0gdGhpcy5faGFuZGxlci5sZW5ndGg7IGkgPCBsbjsgaSsrKSB7CiAgICAgICAgICAgICAgICB0aGlzLl9oYW5kbGVyW2ldW3Jlc3VsdF0uYXBwbHkod2luZG93LCBhcmdzKTsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgdGhpcy50aGVuID0gZnVuY3Rpb24ocmVzb2x2ZUZuLCByZWplY3RGbikgewogICAgICAgICAgICAgICAgKHJlc3VsdCA9PT0gInJlc29sdmUiID8gcmVzb2x2ZUZuIDogcmVqZWN0Rm4pLmFwcGx5KHdpbmRvdywgYXJncyk7CiAgICAgICAgICAgIH07CgogICAgICAgICAgICB0aGlzLl9oYW5kbGVyID0gbnVsbDsKICAgICAgICB9CiAgICB9OwoKICAgIGZ1bmN0aW9uIHZlcmlmeVNhbWVPcmlnaW4odXJsKSB7CiAgICAgICAgLy8gdXJsIGNvdWxkIGJlIHJlbGF0aXZlIG9yIHNjaGVtZSByZWxhdGl2ZSBvciBhYnNvbHV0ZQogICAgICAgIC8vIGhvc3QgKyBwb3J0CiAgICAgICAgdmFyIGhvc3QgPSBkb2N1bWVudC5sb2NhdGlvbi5ob3N0OwogICAgICAgIHZhciBwcm90b2NvbCA9IGRvY3VtZW50LmxvY2F0aW9uLnByb3RvY29sOwogICAgICAgIHZhciByZWxhdGl2ZU9yaWdpbiA9ICIvLyIgKyBob3N0OwogICAgICAgIHZhciBvcmlnaW4gPSBwcm90b2NvbCArIHJlbGF0aXZlT3JpZ2luOwoKICAgICAgICAvLyBBbGxvdyBhYnNvbHV0ZSBvciBzY2hlbWUgcmVsYXRpdmUgVVJMcyB0byBzYW1lIG9yaWdpbgogICAgICAgIHJldHVybiAodXJsID09PSBvcmlnaW4gfHwgdXJsLnNsaWNlKDAsIG9yaWdpbi5sZW5ndGggKyAxKSA9PT0gb3JpZ2luICsgIi8iKSB8fAogICAgICAgICAgICAgICAgKHVybCA9PT0gcmVsYXRpdmVPcmlnaW4gfHwgdXJsLnNsaWNlKDAsIHJlbGF0aXZlT3JpZ2luLmxlbmd0aCArIDEpID09PSByZWxhdGl2ZU9yaWdpbiArICIvIikgfHwKICAgICAgICAgICAgICAgIC8vIG9yIGFueSBvdGhlciBVUkwgdGhhdCBpc24ndCBzY2hlbWUgcmVsYXRpdmUgb3IgYWJzb2x1dGUgaS5lIHJlbGF0aXZlLgogICAgICAgICAgICAgICAgISgvXihcL1wvfGh0dHA6fGh0dHBzOikuKi8udGVzdCh1cmwpKTsKICAgIH0KCiAgICB2YXIgRklFTERfTkFNRSA9ICI6Y3FfY3NyZl90b2tlbiI7CiAgICB2YXIgSEVBREVSX05BTUUgPSAiQ1NSRi1Ub2tlbiI7CiAgICB2YXIgVE9LRU5fU0VSVkxFVCA9IGh0dHAuZXh0ZXJuYWxpemUoIi9saWJzL2dyYW5pdGUvY3NyZi90b2tlbi5qc29uIik7CgogICAgdmFyIHByb21pc2U7CiAgICB2YXIgZ2xvYmFsVG9rZW47CgogICAgZnVuY3Rpb24gbG9nRmFpbFJlcXVlc3QoZXJyb3IpIHsKICAgICAgICBpZiAod2luZG93LmNvbnNvbGUpIHsKICAgICAgICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLWNvbnNvbGUKICAgICAgICAgICAgY29uc29sZS53YXJuKCJDU1JGIGRhdGEgbm90IGF2YWlsYWJsZTsiICsKICAgICAgICAgICAgICAgICAgICAiVGhlIGRhdGEgbWF5IGJlIHVuYXZhaWxhYmxlIGJ5IGRlc2lnbiwgc3VjaCBhcyBkdXJpbmcgbm9uLWF1dGhlbnRpY2F0ZWQgcmVxdWVzdHM6ICIgKyBlcnJvcik7CiAgICAgICAgfQogICAgfQoKICAgIGZ1bmN0aW9uIGdldFRva2VuKCkgewogICAgICAgIHZhciBsb2NhbFByb21pc2UgPSBuZXcgUHJvbWlzZSgpOwogICAgICAgIHByb21pc2UgPSBsb2NhbFByb21pc2U7CgogICAgICAgIHZhciB4aHIgPSBuZXcgWE1MSHR0cFJlcXVlc3QoKTsKICAgICAgICB4aHIub25yZWFkeXN0YXRlY2hhbmdlID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIGlmICh4aHIucmVhZHlTdGF0ZSA9PT0gNCkgewogICAgICAgICAgICAgICAgdHJ5IHsKICAgICAgICAgICAgICAgICAgICB2YXIgZGF0YSA9IEpTT04ucGFyc2UoeGhyLnJlc3BvbnNlVGV4dCk7CiAgICAgICAgICAgICAgICAgICAgZ2xvYmFsVG9rZW4gPSBkYXRhLnRva2VuOwogICAgICAgICAgICAgICAgICAgIGxvY2FsUHJvbWlzZS5yZXNvbHZlKGdsb2JhbFRva2VuKTsKICAgICAgICAgICAgICAgIH0gY2F0Y2ggKGV4KSB7CiAgICAgICAgICAgICAgICAgICAgbG9nRmFpbFJlcXVlc3QoZXgpOwogICAgICAgICAgICAgICAgICAgIGxvY2FsUHJvbWlzZS5yZWplY3QoeGhyLnJlc3BvbnNlVGV4dCk7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICB9OwogICAgICAgIHhoci5vcGVuKCJHRVQiLCBUT0tFTl9TRVJWTEVULCB0cnVlKTsKICAgICAgICB4aHIuc2VuZCgpOwoKICAgICAgICByZXR1cm4gbG9jYWxQcm9taXNlOwogICAgfQoKICAgIGZ1bmN0aW9uIGdldFRva2VuU3luYygpIHsKICAgICAgICB2YXIgeGhyID0gbmV3IFhNTEh0dHBSZXF1ZXN0KCk7CiAgICAgICAgeGhyLm9wZW4oIkdFVCIsIFRPS0VOX1NFUlZMRVQsIGZhbHNlKTsKICAgICAgICB4aHIuc2VuZCgpOwoKICAgICAgICB0cnkgewogICAgICAgICAgICByZXR1cm4gZ2xvYmFsVG9rZW4gPSBKU09OLnBhcnNlKHhoci5yZXNwb25zZVRleHQpLnRva2VuOwogICAgICAgIH0gY2F0Y2ggKGV4KSB7CiAgICAgICAgICAgIGxvZ0ZhaWxSZXF1ZXN0KGV4KTsKICAgICAgICB9CiAgICB9CgogICAgZnVuY3Rpb24gY2xlYXJUb2tlbigpIHsKICAgICAgICBnbG9iYWxUb2tlbiA9IHVuZGVmaW5lZDsKICAgICAgICBnZXRUb2tlbigpOwogICAgfQoKICAgIGZ1bmN0aW9uIGFkZEZpZWxkKGZvcm0pIHsKICAgICAgICB2YXIgYWN0aW9uID0gZm9ybS5nZXRBdHRyaWJ1dGUoImFjdGlvbiIpOwogICAgICAgIGlmIChmb3JtLm1ldGhvZC50b1VwcGVyQ2FzZSgpID09PSAiR0VUIiB8fCAoYWN0aW9uICYmICF2ZXJpZnlTYW1lT3JpZ2luKGFjdGlvbikpKSB7CiAgICAgICAgICAgIHJldHVybjsKICAgICAgICB9CgogICAgICAgIGlmICghZ2xvYmFsVG9rZW4pIHsKICAgICAgICAgICAgZ2V0VG9rZW5TeW5jKCk7CiAgICAgICAgfQoKICAgICAgICBpZiAoIWdsb2JhbFRva2VuKSB7CiAgICAgICAgICAgIHJldHVybjsKICAgICAgICB9CgogICAgICAgIHZhciBpbnB1dCA9IGZvcm0ucXVlcnlTZWxlY3RvcignaW5wdXRbbmFtZT0iJyArIEZJRUxEX05BTUUgKyAnIl0nKTsKCiAgICAgICAgaWYgKCFpbnB1dCkgewogICAgICAgICAgICBpbnB1dCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImlucHV0Iik7CiAgICAgICAgICAgIGlucHV0LnNldEF0dHJpYnV0ZSgidHlwZSIsICJoaWRkZW4iKTsKICAgICAgICAgICAgaW5wdXQuc2V0QXR0cmlidXRlKCJuYW1lIiwgRklFTERfTkFNRSk7CiAgICAgICAgICAgIGZvcm0uYXBwZW5kQ2hpbGQoaW5wdXQpOwogICAgICAgIH0KCiAgICAgICAgaW5wdXQuc2V0QXR0cmlidXRlKCJ2YWx1ZSIsIGdsb2JhbFRva2VuKTsKICAgIH0KCiAgICBmdW5jdGlvbiBoYW5kbGVGb3JtKGRvY3VtZW50KSB7CiAgICAgICAgdmFyIGhhbmRsZXIgPSBmdW5jdGlvbihldikgewogICAgICAgICAgICB2YXIgdCA9IGV2LnRhcmdldDsKCiAgICAgICAgICAgIGlmICh0Lm5vZGVOYW1lID09PSAiRk9STSIpIHsKICAgICAgICAgICAgICAgIGFkZEZpZWxkKHQpOwogICAgICAgICAgICB9CiAgICAgICAgfTsKCiAgICAgICAgaWYgKGRvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIpIHsKICAgICAgICAgICAgZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcigic3VibWl0IiwgaGFuZGxlciwgdHJ1ZSk7CiAgICAgICAgfSBlbHNlIGlmIChkb2N1bWVudC5hdHRhY2hFdmVudCkgewogICAgICAgICAgICBkb2N1bWVudC5hdHRhY2hFdmVudCgic3VibWl0IiwgaGFuZGxlcik7CiAgICAgICAgfQogICAgfQoKICAgIGhhbmRsZUZvcm0oZG9jdW1lbnQpOwoKICAgIHZhciBvcGVuID0gWE1MSHR0cFJlcXVlc3QucHJvdG90eXBlLm9wZW47CgogICAgWE1MSHR0cFJlcXVlc3QucHJvdG90eXBlLm9wZW4gPSBmdW5jdGlvbihtZXRob2QsIHVybCwgYXN5bmMpIHsKICAgICAgICBpZiAobWV0aG9kLnRvTG93ZXJDYXNlKCkgIT09ICJnZXQiICYmIHZlcmlmeVNhbWVPcmlnaW4odXJsKSkgewogICAgICAgICAgICB0aGlzLl9jc3JmID0gdHJ1ZTsKICAgICAgICAgICAgdGhpcy5fYXN5bmMgPSBhc3luYzsKICAgICAgICB9CgogICAgICAgIHJldHVybiBvcGVuLmFwcGx5KHRoaXMsIGFyZ3VtZW50cyk7CiAgICB9OwoKICAgIHZhciBzZW5kID0gWE1MSHR0cFJlcXVlc3QucHJvdG90eXBlLnNlbmQ7CgogICAgWE1MSHR0cFJlcXVlc3QucHJvdG90eXBlLnNlbmQgPSBmdW5jdGlvbigpIHsKICAgICAgICBpZiAoIXRoaXMuX2NzcmYpIHsKICAgICAgICAgICAgc2VuZC5hcHBseSh0aGlzLCBhcmd1bWVudHMpOwogICAgICAgICAgICByZXR1cm47CiAgICAgICAgfQoKICAgICAgICBpZiAoZ2xvYmFsVG9rZW4pIHsKICAgICAgICAgICAgdGhpcy5zZXRSZXF1ZXN0SGVhZGVyKEhFQURFUl9OQU1FLCBnbG9iYWxUb2tlbik7CiAgICAgICAgICAgIHNlbmQuYXBwbHkodGhpcywgYXJndW1lbnRzKTsKICAgICAgICAgICAgcmV0dXJuOwogICAgICAgIH0KCiAgICAgICAgaWYgKHRoaXMuX2FzeW5jID09PSBmYWxzZSkgewogICAgICAgICAgICBnZXRUb2tlblN5bmMoKTsKCiAgICAgICAgICAgIGlmIChnbG9iYWxUb2tlbikgewogICAgICAgICAgICAgICAgdGhpcy5zZXRSZXF1ZXN0SGVhZGVyKEhFQURFUl9OQU1FLCBnbG9iYWxUb2tlbik7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIHNlbmQuYXBwbHkodGhpcywgYXJndW1lbnRzKTsKICAgICAgICAgICAgcmV0dXJuOwogICAgICAgIH0KCiAgICAgICAgdmFyIHNlbGYgPSB0aGlzOwogICAgICAgIHZhciBhcmdzID0gQXJyYXkucHJvdG90eXBlLnNsaWNlLmNhbGwoYXJndW1lbnRzKTsKCiAgICAgICAgcHJvbWlzZS50aGVuKGZ1bmN0aW9uKHRva2VuKSB7CiAgICAgICAgICAgIHNlbGYuc2V0UmVxdWVzdEhlYWRlcihIRUFERVJfTkFNRSwgdG9rZW4pOwogICAgICAgICAgICBzZW5kLmFwcGx5KHNlbGYsIGFyZ3MpOwogICAgICAgIH0sIGZ1bmN0aW9uKCkgewogICAgICAgICAgICBzZW5kLmFwcGx5KHNlbGYsIGFyZ3MpOwogICAgICAgIH0pOwogICAgfTsKCiAgICB2YXIgc3VibWl0ID0gSFRNTEZvcm1FbGVtZW50LnByb3RvdHlwZS5zdWJtaXQ7CgogICAgSFRNTEZvcm1FbGVtZW50LnByb3RvdHlwZS5zdWJtaXQgPSBmdW5jdGlvbigpIHsKICAgICAgICBhZGRGaWVsZCh0aGlzKTsKICAgICAgICByZXR1cm4gc3VibWl0LmFwcGx5KHRoaXMsIGFyZ3VtZW50cyk7CiAgICB9OwoKICAgIGlmICh3aW5kb3cuTm9kZSkgewogICAgICAgIHZhciBhYyA9IE5vZGUucHJvdG90eXBlLmFwcGVuZENoaWxkOwoKICAgICAgICBOb2RlLnByb3RvdHlwZS5hcHBlbmRDaGlsZCA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgICB2YXIgcmVzdWx0ID0gYWMuYXBwbHkodGhpcywgYXJndW1lbnRzKTsKCiAgICAgICAgICAgIGlmIChyZXN1bHQubm9kZU5hbWUgPT09ICJJRlJBTUUiKSB7CiAgICAgICAgICAgICAgICB0cnkgewogICAgICAgICAgICAgICAgICAgIGlmIChyZXN1bHQuY29udGVudFdpbmRvdyAmJiAhcmVzdWx0Ll9jc3JmKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHJlc3VsdC5fY3NyZiA9IHRydWU7CiAgICAgICAgICAgICAgICAgICAgICAgIGhhbmRsZUZvcm0ocmVzdWx0LmNvbnRlbnRXaW5kb3cuZG9jdW1lbnQpOwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0gY2F0Y2ggKGV4KSB7CiAgICAgICAgICAgICAgICAgICAgaWYgKHJlc3VsdC5zcmMgJiYgcmVzdWx0LnNyYy5sZW5ndGggJiYgdmVyaWZ5U2FtZU9yaWdpbihyZXN1bHQuc3JjKSkgewogICAgICAgICAgICAgICAgICAgICAgICBpZiAod2luZG93LmNvbnNvbGUpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby1jb25zb2xlCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zb2xlLmVycm9yKCJVbmFibGUgdG8gYXR0YWNoIENTUkYgdG9rZW4gdG8gYW4gaWZyYW1lIGVsZW1lbnQgb24gdGhlIHNhbWUgb3JpZ2luIik7CiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgICAgIC8vIFBvdGVudGlhbCBlcnJvcjogQWNjZXNzIGlzIERlbmllZAogICAgICAgICAgICAgICAgICAgIC8vIHdlIGNhbiBzYWZlbHkgaWdub3JlIENPUlMgc2VjdXJpdHkgZXJyb3JzIGhlcmUKICAgICAgICAgICAgICAgICAgICAvLyBiZWNhdXNlIHdlIGRvIG5vdCB3YW50IHRvIGV4cG9zZSB0aGUgY3NyZiBhbnl3YXlzIHRvIGFub3RoZXIgZG9tYWluCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIHJldHVybiByZXN1bHQ7CiAgICAgICAgfTsKICAgIH0KCiAgICAvLyByZWZyZXNoaW5nIGNzcmYgdG9rZW4gcGVyaW9kaWNhbGx5CiAgICBnZXRUb2tlbigpOwoKICAgIHNldEludGVydmFsKGZ1bmN0aW9uKCkgewogICAgICAgIGdldFRva2VuKCk7CiAgICB9LCAzMDAwMDApOwoKICAgIHJldHVybiB7CiAgICAgICAgaW5pdGlhbGlzZWQ6IGZhbHNlLAogICAgICAgIHJlZnJlc2hUb2tlbjogZ2V0VG9rZW4sCiAgICAgICAgX2NsZWFyVG9rZW46IGNsZWFyVG9rZW4KICAgIH07Cn0pKTsKCg==",
10+
"body" : "{\"token\":\"eyJleHAiOjE3NjMzMDM3OTQsImlhdCI6MTc2MzMwMzE5NH0.5v2R_70ZbNN7EUoVwrGql7hk1EBeJ2FepXfNUxQJkg8\"}",
1111
"headers" : {
12+
"Cache-Control" : "no-cache",
1213
"X-Content-Type-Options" : "nosniff",
13-
"Last-Modified" : "Sat, 03 May 2025 13:47:20 GMT",
14-
"Date" : "Sun, 11 May 2025 11:23:44 GMT",
15-
"Content-Type" : "application/javascript;charset=utf-8"
14+
"Expires" : "-1",
15+
"Date" : "Sun, 16 Nov 2025 14:26:34 GMT",
16+
"Content-Type" : "application/json"
1617
}
1718
},
18-
"uuid" : "00a42460-ec46-4cee-94e6-33ea44869f87",
19+
"uuid" : "7a26c766-1d0f-4af8-a2a5-f1d5cd028f5d",
1920
"persistent" : true,
20-
"insertionIndex" : 20
21+
"insertionIndex" : 31
2122
}

0 commit comments

Comments
 (0)