jsf.js_next_gen 4.0.0-RC.3 → 4.0.0-RC.30
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/docs/assets/main.js +56 -52
- package/dist/docs/assets/style.css +23 -0
- package/dist/window/faces-development.js +2860 -2999
- package/dist/window/faces-development.js.br +0 -0
- package/dist/window/faces-development.js.gz +0 -0
- package/dist/window/faces-development.js.map +1 -1
- package/dist/window/faces.js +1 -1
- package/dist/window/faces.js.LICENSE.txt +0 -2
- package/dist/window/faces.js.br +0 -0
- package/dist/window/faces.js.gz +0 -0
- package/dist/window/faces.js.map +1 -1
- package/dist/window/jsf-development.js +2865 -3004
- package/dist/window/jsf-development.js.br +0 -0
- package/dist/window/jsf-development.js.gz +0 -0
- package/dist/window/jsf-development.js.map +1 -1
- package/dist/window/jsf.js +1 -1
- package/dist/window/jsf.js.LICENSE.txt +0 -2
- package/dist/window/jsf.js.br +0 -0
- package/dist/window/jsf.js.gz +0 -0
- package/dist/window/jsf.js.map +1 -1
- package/package.json +16 -16
- package/src/main/test.xml +23 -0
- package/src/main/typescript/@types/definitions/index.d.ts +12 -7
- package/src/main/typescript/api/_api.ts +4 -3
- package/src/main/typescript/impl/AjaxImpl.ts +125 -41
- package/src/main/typescript/impl/core/Const.ts +52 -41
- package/src/main/typescript/impl/util/Assertions.ts +16 -8
- package/src/main/typescript/impl/util/ExtDomQuery.ts +12 -4
- package/src/main/typescript/impl/util/HiddenInputBuilder.ts +89 -0
- package/src/main/typescript/impl/util/Lang.ts +9 -11
- package/src/main/typescript/impl/util/URLCodec.ts +71 -0
- package/src/main/typescript/impl/xhrCore/ErrorData.ts +15 -10
- package/src/main/typescript/impl/xhrCore/EventData.ts +2 -2
- package/src/main/typescript/impl/xhrCore/IResponseProcessor.ts +15 -1
- package/src/main/typescript/impl/xhrCore/RequestDataResolver.ts +69 -24
- package/src/main/typescript/impl/xhrCore/ResonseDataResolver.ts +4 -4
- package/src/main/typescript/impl/xhrCore/Response.ts +55 -38
- package/src/main/typescript/impl/xhrCore/ResponseProcessor.ts +173 -98
- package/src/main/typescript/impl/xhrCore/XhrFormData.ts +64 -158
- package/src/main/typescript/impl/xhrCore/XhrRequest.ts +36 -21
- package/src/main/typescript/myfaces/OamSubmit.ts +29 -13
- package/src/main/typescript/test/frameworkBase/_ext/monadish/DomQueryTest.spec.ts +1 -1
- package/src/main/typescript/test/frameworkBase/_ext/shared/StandardInits.ts +72 -0
- package/src/main/typescript/test/frameworkBase/_ext/shared/XmlResponses.ts +40 -1
- package/src/main/typescript/test/impl/ImplTest.spec.ts +3 -3
- package/src/main/typescript/test/impl/ImplTest_23.spec.ts +3 -3
- package/src/main/typescript/test/xhrCore/EventTests.spec.ts +1 -1
- package/src/main/typescript/test/xhrCore/FileUploadTest.spec.ts +2 -0
- package/src/main/typescript/test/xhrCore/NamespacesRequestTest.spec.ts +203 -0
- package/src/main/typescript/test/xhrCore/OamSubmitTest.spec.ts +177 -0
- package/src/main/typescript/test/xhrCore/RequestParamsTest.spec.ts +128 -15
- package/src/main/typescript/test/xhrCore/RequestTest.spec.ts +70 -3
- package/src/main/typescript/test/xhrCore/RequestTest_23.spec.ts +39 -3
- package/src/main/typescript/test/xhrCore/ResponseTest.spec.ts +372 -34
- package/src/main/typescript/test/xhrCore/ResponseTest23.spec.ts +43 -9
- package/src/main/typescript/test/xhrCore/XhrFormDataTest.spec.ts +67 -49
- package/src/main/typescript/test.xml +6 -0
- package/src/main/typescript/tsconfig.json +2 -2
- package/src/test/resources/jsf-development.js +1 -1
- package/src/tmp/test.html +12 -88
- package/target/api/_api.js +16 -29
- package/target/api/_api.js.map +1 -1
- package/target/api/faces.js +4 -4
- package/target/api/faces.js.map +1 -1
- package/target/api/jsf.js +9 -9
- package/target/api/jsf.js.map +1 -1
- package/target/classes/com/example/jsfs_js_ts/DecoratedFacesJS.class +0 -0
- package/target/classes/com/example/jsfs_js_ts/DecoratingResourceHandlerWrapper.class +0 -0
- package/target/classes/com/example/jsfs_js_ts/FacesJSMapFileResourceWrapper.class +0 -0
- package/target/classes/com/example/jsfs_js_ts/FacesJSMappingDecorator.class +0 -0
- package/target/impl/AjaxImpl.js +155 -89
- package/target/impl/AjaxImpl.js.map +1 -1
- package/target/impl/PushImpl.js +45 -48
- package/target/impl/PushImpl.js.map +1 -1
- package/target/impl/core/Const.js +52 -40
- package/target/impl/core/Const.js.map +1 -1
- package/target/impl/core/Context.js +10 -0
- package/target/impl/core/Context.js.map +1 -0
- package/target/impl/core/ImplTypes.js +9 -14
- package/target/impl/core/ImplTypes.js.map +1 -1
- package/target/impl/i18n/Messages.js +3 -4
- package/target/impl/i18n/Messages.js.map +1 -1
- package/target/impl/util/Assertions.js +20 -24
- package/target/impl/util/Assertions.js.map +1 -1
- package/target/impl/util/AsyncQueue.js +28 -36
- package/target/impl/util/AsyncQueue.js.map +1 -1
- package/target/impl/util/ExtDomQuery.js +153 -221
- package/target/impl/util/ExtDomQuery.js.map +1 -1
- package/target/impl/util/HiddenElementBuilder.js +7 -0
- package/target/impl/util/HiddenElementBuilder.js.map +1 -0
- package/target/impl/util/HiddenInputBuilder.js +79 -0
- package/target/impl/util/HiddenInputBuilder.js.map +1 -0
- package/target/impl/util/Lang.js +23 -32
- package/target/impl/util/Lang.js.map +1 -1
- package/target/impl/util/URLCodec.js +69 -0
- package/target/impl/util/URLCodec.js.map +1 -0
- package/target/impl/xhrCore/ErrorData.js +41 -64
- package/target/impl/xhrCore/ErrorData.js.map +1 -1
- package/target/impl/xhrCore/EventData.js +10 -13
- package/target/impl/xhrCore/EventData.js.map +1 -1
- package/target/impl/xhrCore/RequestContext.js +11 -0
- package/target/impl/xhrCore/RequestContext.js.map +1 -0
- package/target/impl/xhrCore/RequestDataResolver.js +71 -27
- package/target/impl/xhrCore/RequestDataResolver.js.map +1 -1
- package/target/impl/xhrCore/ResonseDataResolver.js +16 -16
- package/target/impl/xhrCore/ResonseDataResolver.js.map +1 -1
- package/target/impl/xhrCore/Response.js +43 -28
- package/target/impl/xhrCore/Response.js.map +1 -1
- package/target/impl/xhrCore/ResponseProcessor.js +217 -162
- package/target/impl/xhrCore/ResponseProcessor.js.map +1 -1
- package/target/impl/xhrCore/XhrFormData.js +77 -199
- package/target/impl/xhrCore/XhrFormData.js.map +1 -1
- package/target/impl/xhrCore/XhrRequest.js +102 -103
- package/target/impl/xhrCore/XhrRequest.js.map +1 -1
- package/target/myfaces/OamSubmit.js +33 -24
- package/target/myfaces/OamSubmit.js.map +1 -1
- package/target/test/frameworkBase/LangTest.spec.js +46 -32
- package/target/test/frameworkBase/LangTest.spec.js.map +1 -1
- package/target/test/frameworkBase/_ext/monadish/DomQueryTest.spec.js +238 -228
- package/target/test/frameworkBase/_ext/monadish/DomQueryTest.spec.js.map +1 -1
- package/target/test/frameworkBase/_ext/monadish/LangTest.spec.js +45 -31
- package/target/test/frameworkBase/_ext/monadish/LangTest.spec.js.map +1 -1
- package/target/test/frameworkBase/_ext/monadish/MappingProbes.js +24 -33
- package/target/test/frameworkBase/_ext/monadish/MappingProbes.js.map +1 -1
- package/target/test/frameworkBase/_ext/monadish/MappingTest.spec.js +8 -8
- package/target/test/frameworkBase/_ext/monadish/MappingTest.spec.js.map +1 -1
- package/target/test/frameworkBase/_ext/monadish/MonadTest.spec.js +31 -31
- package/target/test/frameworkBase/_ext/monadish/MonadTest.spec.js.map +1 -1
- package/target/test/frameworkBase/_ext/monadish/StreamTest.spec.js +50 -48
- package/target/test/frameworkBase/_ext/monadish/StreamTest.spec.js.map +1 -1
- package/target/test/frameworkBase/_ext/shared/StandardInits.js +310 -132
- package/target/test/frameworkBase/_ext/shared/StandardInits.js.map +1 -1
- package/target/test/frameworkBase/_ext/shared/XmlResponses.js +235 -22
- package/target/test/frameworkBase/_ext/shared/XmlResponses.js.map +1 -1
- package/target/test/impl/ImplTest.spec.js +32 -59
- package/target/test/impl/ImplTest.spec.js.map +1 -1
- package/target/test/impl/ImplTest_23.spec.js +32 -59
- package/target/test/impl/ImplTest_23.spec.js.map +1 -1
- package/target/test/impl/SeparatorCharsTest.spec.js +17 -17
- package/target/test/impl/SeparatorCharsTest.spec.js.map +1 -1
- package/target/test/myfaces/OamSubmit.spec.js +25 -25
- package/target/test/myfaces/OamSubmit.spec.js.map +1 -1
- package/target/test/queue/AsynchronousProbe.js +23 -29
- package/target/test/queue/AsynchronousProbe.js.map +1 -1
- package/target/test/queue/AsynchronousQueueTest.spec.js +39 -70
- package/target/test/queue/AsynchronousQueueTest.spec.js.map +1 -1
- package/target/test/xhrCore/EventTests.spec.js +43 -74
- package/target/test/xhrCore/EventTests.spec.js.map +1 -1
- package/target/test/xhrCore/FakeWebsocket.js +14 -16
- package/target/test/xhrCore/FakeWebsocket.js.map +1 -1
- package/target/test/xhrCore/FileUploadTest.spec.js +47 -77
- package/target/test/xhrCore/FileUploadTest.spec.js.map +1 -1
- package/target/test/xhrCore/NamespacesRequestTest.spec.js +204 -0
- package/target/test/xhrCore/NamespacesRequestTest.spec.js.map +1 -0
- package/target/test/xhrCore/OamSubmitTest.spec.js +180 -0
- package/target/test/xhrCore/OamSubmitTest.spec.js.map +1 -0
- package/target/test/xhrCore/RequestParamsTest.spec.js +143 -72
- package/target/test/xhrCore/RequestParamsTest.spec.js.map +1 -1
- package/target/test/xhrCore/RequestTest.spec.js +173 -149
- package/target/test/xhrCore/RequestTest.spec.js.map +1 -1
- package/target/test/xhrCore/RequestTest_23.spec.js +127 -142
- package/target/test/xhrCore/RequestTest_23.spec.js.map +1 -1
- package/target/test/xhrCore/ResponseTest.spec.js +415 -100
- package/target/test/xhrCore/ResponseTest.spec.js.map +1 -1
- package/target/test/xhrCore/ResponseTest23.spec.js +152 -91
- package/target/test/xhrCore/ResponseTest23.spec.js.map +1 -1
- package/target/test/xhrCore/ShadowDomTest.spec.js +30 -61
- package/target/test/xhrCore/ShadowDomTest.spec.js.map +1 -1
- package/target/test/xhrCore/WebsocketTest.js +60 -93
- package/target/test/xhrCore/WebsocketTest.js.map +1 -1
- package/target/test/xhrCore/XhrFormDataTest.spec.js +79 -30
- package/target/test/xhrCore/XhrFormDataTest.spec.js.map +1 -1
- package/target/test-classes/.gz +0 -0
- package/target/test-classes/com/example/jsfs_js_ts/JsfsJsTsApplicationTests.class +0 -0
- package/target/test-classes/fileuploadtest.html +24 -0
- package/target/test-classes/jsf-development.js +3559 -0
- package/target/test-classes/jsf-development.js.br +0 -0
- package/target/test-classes/jsf-development.js.gz +0 -0
- package/target/test-classes/jsf-development.js.map +1 -0
- package/target/test-classes/jsf.js +3 -0
- package/target/test-classes/jsf.js.br +0 -0
- package/target/test-classes/jsf.js.gz +0 -0
- package/tmp.xml +36 -0
|
@@ -18,9 +18,20 @@ import {Implementation} from "../../impl/AjaxImpl";
|
|
|
18
18
|
import {StandardInits} from "../frameworkBase/_ext/shared/StandardInits";
|
|
19
19
|
|
|
20
20
|
import protocolPage = StandardInits.protocolPage;
|
|
21
|
-
import {DQ} from "mona-dish";
|
|
21
|
+
import {Config, DQ} from "mona-dish";
|
|
22
22
|
import {XhrFormData} from "../../impl/xhrCore/XhrFormData";
|
|
23
|
-
import {
|
|
23
|
+
import {expect} from "chai";
|
|
24
|
+
import prefixPage = StandardInits.prefixEmbeddedPage;
|
|
25
|
+
import prefixEmbeddedPage = StandardInits.prefixEmbeddedPage;
|
|
26
|
+
import HTML_PREFIX_EMBEDDED_BODY = StandardInits.HTML_PREFIX_EMBEDDED_BODY;
|
|
27
|
+
import {it} from "mocha";
|
|
28
|
+
import {decodeEncodedValues, mergeKeyValueEntries} from "../../impl/util/URLCodec";
|
|
29
|
+
|
|
30
|
+
function getFormData(requestBody: string): Config {
|
|
31
|
+
let ret = new Config({});
|
|
32
|
+
mergeKeyValueEntries(ret, decodeEncodedValues(requestBody));
|
|
33
|
+
return ret;
|
|
34
|
+
}
|
|
24
35
|
|
|
25
36
|
describe("test for proper request param patterns identical to the old implementation", function () {
|
|
26
37
|
const UPDATE_INSERT_2 = {
|
|
@@ -35,12 +46,12 @@ describe("test for proper request param patterns identical to the old implementa
|
|
|
35
46
|
/**
|
|
36
47
|
* matches two maps for absolute identicality
|
|
37
48
|
*/
|
|
38
|
-
let matches = (item1: {[key: string]: any}, item2: {[key: string]: any}): boolean => {
|
|
39
|
-
if(Object.keys(item1).length != Object.keys(item2).length) {
|
|
49
|
+
let matches = (item1: { [key: string]: any }, item2: { [key: string]: any }): boolean => {
|
|
50
|
+
if (Object.keys(item1).length != Object.keys(item2).length) {
|
|
40
51
|
return false;
|
|
41
52
|
}
|
|
42
|
-
for(let key in item1) {
|
|
43
|
-
if((!(key in item2)) || item1[key] != item2[key]) {
|
|
53
|
+
for (let key in item1) {
|
|
54
|
+
if ((!(key in item2)) || item1[key] != item2[key]) {
|
|
44
55
|
return false;
|
|
45
56
|
}
|
|
46
57
|
}
|
|
@@ -77,50 +88,152 @@ describe("test for proper request param patterns identical to the old implementa
|
|
|
77
88
|
this.closeIt();
|
|
78
89
|
});
|
|
79
90
|
|
|
80
|
-
it("must pass updateinsert2 with proper parameters", function() {
|
|
91
|
+
it("must pass updateinsert2 with proper parameters", function () {
|
|
81
92
|
DQ.byId("cmd_update_insert2").click();
|
|
82
93
|
|
|
83
94
|
let requestBody = this.requests[0].requestBody;
|
|
84
|
-
let formData =
|
|
95
|
+
let formData = getFormData(requestBody);
|
|
85
96
|
|
|
86
97
|
expect(matches(formData.value, UPDATE_INSERT_2)).to.be.true;
|
|
87
|
-
|
|
88
98
|
});
|
|
89
99
|
|
|
90
100
|
|
|
91
|
-
it("must handle base64 encoded strings properly as request data", function() {
|
|
101
|
+
it("must handle base64 encoded strings properly as request data", function () {
|
|
92
102
|
let probe = "YWFhYWFhc1Rlc3RpdCDDpGtvNDU5NjczMDA9PSsrNDU5MGV3b3UkJiUmLyQmJQ==";
|
|
93
103
|
DQ.byId("jakarta.faces.ViewState").inputValue.value = probe;
|
|
94
104
|
DQ.byId("cmd_update_insert2").click();
|
|
95
105
|
let requestBody = this.requests[0].requestBody;
|
|
96
106
|
//We check if the base64 encoded string matches the original
|
|
97
|
-
let formData =
|
|
107
|
+
let formData = getFormData(requestBody);
|
|
98
108
|
|
|
99
109
|
expect(decodeURIComponent(formData.getIf("jakarta.faces.ViewState").value) == probe).to.be.true;
|
|
100
110
|
});
|
|
101
111
|
|
|
102
112
|
|
|
103
|
-
it("must handle empty parameters properly", function() {
|
|
113
|
+
it("must handle empty parameters properly", function () {
|
|
104
114
|
let probe = "";
|
|
105
115
|
DQ.byId("jakarta.faces.ViewState").inputValue.value = probe;
|
|
106
116
|
DQ.byId("cmd_update_insert2").click();
|
|
107
117
|
let requestBody = this.requests[0].requestBody;
|
|
108
118
|
//We check if the base64 encoded string matches the original
|
|
109
|
-
let formData =
|
|
119
|
+
let formData = getFormData(requestBody);
|
|
110
120
|
|
|
111
121
|
expect(decodeURIComponent(formData.getIf("jakarta.faces.ViewState").value) == probe).to.be.true;
|
|
112
122
|
});
|
|
113
123
|
|
|
114
124
|
//KssbpZfCe+0lwDhgMRQ44wRFkaM1o1lbMMUO3lini5YhXWm6
|
|
115
125
|
|
|
116
|
-
it("must handle base64 special cases properly (+ in encoding)", function() {
|
|
126
|
+
it("must handle base64 special cases properly (+ in encoding)", function () {
|
|
117
127
|
let probe = "KssbpZfCe+0lwDhgMRQ44wRFkaM1o1lbMMUO3lini5YhXWm6";
|
|
118
128
|
DQ.byId("jakarta.faces.ViewState").inputValue.value = probe;
|
|
119
129
|
DQ.byId("cmd_update_insert2").click();
|
|
120
130
|
let requestBody = this.requests[0].requestBody;
|
|
121
131
|
//We check if the base64 encoded string matches the original
|
|
122
|
-
let formData =
|
|
132
|
+
let formData = getFormData(requestBody);
|
|
123
133
|
|
|
124
134
|
expect(decodeURIComponent(formData.getIf("jakarta.faces.ViewState").value) == probe).to.be.true;
|
|
125
135
|
});
|
|
136
|
+
|
|
137
|
+
it("must handle prefixed inputs properly (prefixes must be present) faces4", function (done) {
|
|
138
|
+
window.document.body.innerHTML = HTML_PREFIX_EMBEDDED_BODY;
|
|
139
|
+
|
|
140
|
+
//we now run the tests here
|
|
141
|
+
try {
|
|
142
|
+
|
|
143
|
+
let event = {
|
|
144
|
+
isTrusted: true,
|
|
145
|
+
type: 'change',
|
|
146
|
+
target: document.getElementById("page:input::field"),
|
|
147
|
+
currentTarget: document.getElementById("page:input::field")
|
|
148
|
+
};
|
|
149
|
+
faces.ajax.request(document.getElementById("page:input"), event as any, {
|
|
150
|
+
render: "page:output",
|
|
151
|
+
execute: "page:input",
|
|
152
|
+
params: {
|
|
153
|
+
"booga2.xxx": "yyy",
|
|
154
|
+
"javax.faces.behavior.event": "change",
|
|
155
|
+
"booga": "bla"
|
|
156
|
+
},
|
|
157
|
+
});
|
|
158
|
+
} catch (err) {
|
|
159
|
+
console.error(err);
|
|
160
|
+
expect(false).to.eq(true);
|
|
161
|
+
}
|
|
162
|
+
const requestBody = this.requests[0].requestBody;
|
|
163
|
+
//We check if the base64 encoded string matches the original
|
|
164
|
+
expect(requestBody.indexOf("javax.faces.behavior.event")).to.not.eq(-1);
|
|
165
|
+
expect(requestBody.indexOf("javax.faces.behavior.event=change")).to.not.eq(-1);
|
|
166
|
+
expect(requestBody.indexOf("page%3Ainput=input_value")).to.not.eq(-1);
|
|
167
|
+
done();
|
|
168
|
+
});
|
|
169
|
+
|
|
170
|
+
|
|
171
|
+
|
|
172
|
+
|
|
173
|
+
/**
|
|
174
|
+
* This test is based on Tobago 6 (Jakarte EE 9).
|
|
175
|
+
*/
|
|
176
|
+
it("must handle ':' in IDs properly", function (done) {
|
|
177
|
+
window.document.body.innerHTML = `
|
|
178
|
+
|
|
179
|
+
<tobago-page locale="en" class="container-fluid" id="page" focus-on-error="true" wait-overlay-delay-full="1000" wait-overlay-delay-ajax="1000">
|
|
180
|
+
<form action="/content/010-input/10-in/In.xhtml?jfwid=q6qbeuqed" id="page::form" method="post" accept-charset="UTF-8" data-tobago-context-path="">
|
|
181
|
+
<input type="hidden" name="jakarta.faces.source" id="jakarta.faces.source" disabled="disabled">
|
|
182
|
+
<tobago-focus id="page::lastFocusId">
|
|
183
|
+
<input type="hidden" name="page::lastFocusId" id="page::lastFocusId::field">
|
|
184
|
+
</tobago-focus>
|
|
185
|
+
<input type="hidden" name="org.apache.myfaces.tobago.webapp.Secret" id="org.apache.myfaces.tobago.webapp.Secret" value="secretValue">
|
|
186
|
+
<tobago-in id="page:input" class="tobago-auto-spacing">
|
|
187
|
+
<input type="text" name="page:input" id="page:input::field" class="form-control" value="Bob">
|
|
188
|
+
<tobago-behavior event="change" client-id="page:input" field-id="page:input::field" execute="page:input" render="page:output"></tobago-behavior>
|
|
189
|
+
</tobago-in>
|
|
190
|
+
<tobago-out id="page:output" class="tobago-auto-spacing">
|
|
191
|
+
<span class="form-control-plaintext"></span>
|
|
192
|
+
</tobago-out>
|
|
193
|
+
<div class="tobago-page-menuStore">
|
|
194
|
+
</div>
|
|
195
|
+
<span id="page::faces-state-container">
|
|
196
|
+
<input type="hidden" name="jakarta.faces.ViewState" id="j_id__v_0:jakarta.faces.ViewState:1" value="viewStateValue" autocomplete="off">
|
|
197
|
+
<input type="hidden" name="jakarta.faces.RenderKitId" value="tobago">
|
|
198
|
+
<input type="hidden" id="j_id__v_0:jakarta.faces.ClientWindow:1" name="jakarta.faces.ClientWindow" value="clientWindowValue">
|
|
199
|
+
</span>
|
|
200
|
+
</form>
|
|
201
|
+
</tobago-page>
|
|
202
|
+
`;
|
|
203
|
+
|
|
204
|
+
//we now run the tests here
|
|
205
|
+
try {
|
|
206
|
+
|
|
207
|
+
let event = {
|
|
208
|
+
isTrusted: true,
|
|
209
|
+
type: 'change',
|
|
210
|
+
target: document.getElementById("page:input::field"),
|
|
211
|
+
currentTarget: document.getElementById("page:input::field")
|
|
212
|
+
};
|
|
213
|
+
global.debug2 = true;
|
|
214
|
+
faces.ajax.request(document.getElementById("page:input"), event as any, {
|
|
215
|
+
"jakarta.faces.behavior.event": 'change',
|
|
216
|
+
execute: "page:input",
|
|
217
|
+
render: "page:output"
|
|
218
|
+
});
|
|
219
|
+
} catch (err) {
|
|
220
|
+
console.error(err);
|
|
221
|
+
expect(false).to.eq(true);
|
|
222
|
+
}
|
|
223
|
+
const requestBody = this.requests[0].requestBody;
|
|
224
|
+
expect(requestBody.indexOf("org.apache.myfaces.tobago.webapp.Secret=secretValue")).to.not.eq(-1);
|
|
225
|
+
expect(requestBody.indexOf("page%3Ainput=Bob")).to.not.eq(-1);
|
|
226
|
+
expect(requestBody.indexOf("jakarta.faces.ViewState=viewStateValue")).to.not.eq(-1);
|
|
227
|
+
expect(requestBody.indexOf("jakarta.faces.RenderKitId=tobago")).to.not.eq(-1);
|
|
228
|
+
expect(requestBody.indexOf("jakarta.faces.ClientWindow=clientWindowValue")).to.not.eq(-1);
|
|
229
|
+
expect(requestBody.indexOf("jakarta.faces.behavior.event=change")).to.not.eq(-1);
|
|
230
|
+
expect(requestBody.indexOf("jakarta.faces.partial.event=change")).to.not.eq(-1);
|
|
231
|
+
expect(requestBody.indexOf("jakarta.faces.source=page%3Ainput")).to.not.eq(-1);
|
|
232
|
+
expect(requestBody.indexOf("jakarta.faces.partial.ajax=true")).to.not.eq(-1);
|
|
233
|
+
expect(requestBody.indexOf("page%3A%3Aform=page%3A%3Aform")).to.not.eq(-1);
|
|
234
|
+
expect(requestBody.indexOf("jakarta.faces.partial.execute=page%3Ainput")).to.not.eq(-1);
|
|
235
|
+
expect(requestBody.indexOf("jakarta.faces.partial.render=page%3Aoutput")).to.not.eq(-1);
|
|
236
|
+
done();
|
|
237
|
+
});
|
|
238
|
+
|
|
126
239
|
});
|
|
@@ -20,7 +20,7 @@ import {expect} from "chai";
|
|
|
20
20
|
import {StandardInits} from "../frameworkBase/_ext/shared/StandardInits";
|
|
21
21
|
import {DomQuery} from "mona-dish";
|
|
22
22
|
import {
|
|
23
|
-
COMPLETE,
|
|
23
|
+
COMPLETE, EMPTY_STR,
|
|
24
24
|
P_AJAX,
|
|
25
25
|
P_EXECUTE,
|
|
26
26
|
P_PARTIAL_SOURCE,
|
|
@@ -464,9 +464,9 @@ describe('Tests after core when it hits response', function () {
|
|
|
464
464
|
},
|
|
465
465
|
onerror: (error: any) => {
|
|
466
466
|
expect(error.type).to.eq("error");
|
|
467
|
-
expect(
|
|
467
|
+
expect(error.status).to.eq(EMPTY_STR);
|
|
468
468
|
expect(!!error.message).to.eq(true);
|
|
469
|
-
expect(!!error.source).to.eq(true);
|
|
469
|
+
expect(!!error.source?.id).to.eq(true);
|
|
470
470
|
expect(!!error.responseCode).to.eq(true);
|
|
471
471
|
expect(!!error.responseText).to.eq(true);
|
|
472
472
|
expect(!error.responseXML).to.eq(true);
|
|
@@ -491,5 +491,72 @@ describe('Tests after core when it hits response', function () {
|
|
|
491
491
|
}
|
|
492
492
|
|
|
493
493
|
});
|
|
494
|
+
|
|
495
|
+
// We can cover this TCK issue in a simple code unit test, the case is simple enough
|
|
496
|
+
it("must throw an error on invalid delays (MYFACES-4499, TCK_ISSUE320IT )", (done) => {
|
|
497
|
+
|
|
498
|
+
let element = DomQuery.byId("input_2").getAsElem(0).value;
|
|
499
|
+
try {
|
|
500
|
+
faces.ajax.request(element, null, {
|
|
501
|
+
execute: "input_1",
|
|
502
|
+
render: "@form",
|
|
503
|
+
delay: NaN,
|
|
504
|
+
params: {
|
|
505
|
+
pass1: "pass1",
|
|
506
|
+
pass2: "pass2",
|
|
507
|
+
}
|
|
508
|
+
});
|
|
509
|
+
} catch (e) {
|
|
510
|
+
expect(e.message.indexOf("NaN") > 0).to.eq(true, "Invalid NaN in message");
|
|
511
|
+
done();
|
|
512
|
+
return;
|
|
513
|
+
}
|
|
514
|
+
done("Expecting a client error to be thrown")
|
|
515
|
+
});
|
|
516
|
+
|
|
517
|
+
it("must throw an error on invalid delays (MYFACES-4499, TCK_ISSUE320IT ) - 2", (done) => {
|
|
518
|
+
|
|
519
|
+
let element = DomQuery.byId("input_2").getAsElem(0).value;
|
|
520
|
+
try {
|
|
521
|
+
faces.ajax.request(element, null, {
|
|
522
|
+
execute: "input_1",
|
|
523
|
+
render: "@form",
|
|
524
|
+
delay: -1,
|
|
525
|
+
params: {
|
|
526
|
+
pass1: "pass1",
|
|
527
|
+
pass2: "pass2",
|
|
528
|
+
}
|
|
529
|
+
});
|
|
530
|
+
} catch (e) {
|
|
531
|
+
expect(e.message.indexOf("-1") > 0).to
|
|
532
|
+
.eq(true, "Invalid integer value in message");
|
|
533
|
+
done();
|
|
534
|
+
return;
|
|
535
|
+
}
|
|
536
|
+
done("Expecting a client error to be thrown")
|
|
537
|
+
});
|
|
538
|
+
it("must throw an error on invalid delays (MYFACES-4499, TCK_ISSUE320IT ) - 3", (done) => {
|
|
539
|
+
|
|
540
|
+
let element = DomQuery.byId("input_2").getAsElem(0).value;
|
|
541
|
+
try {
|
|
542
|
+
faces.ajax.request(element, null, {
|
|
543
|
+
execute: "input_1",
|
|
544
|
+
render: "@form",
|
|
545
|
+
delay: "booga",
|
|
546
|
+
params: {
|
|
547
|
+
pass1: "pass1",
|
|
548
|
+
pass2: "pass2",
|
|
549
|
+
}
|
|
550
|
+
});
|
|
551
|
+
} catch (e) {
|
|
552
|
+
expect(e.message.indexOf("booga") > 0).to.be
|
|
553
|
+
.eq(true, "Invalid string value in message");
|
|
554
|
+
done();
|
|
555
|
+
return;
|
|
556
|
+
}
|
|
557
|
+
done("Expecting a client error to be thrown")
|
|
558
|
+
});
|
|
559
|
+
|
|
560
|
+
|
|
494
561
|
});
|
|
495
562
|
|
|
@@ -24,7 +24,7 @@ import {expect} from "chai";
|
|
|
24
24
|
import {StandardInits} from "../frameworkBase/_ext/shared/StandardInits";
|
|
25
25
|
import {DomQuery} from "mona-dish";
|
|
26
26
|
import {
|
|
27
|
-
COMPLETE,
|
|
27
|
+
COMPLETE, EMPTY_STR,
|
|
28
28
|
SUCCESS
|
|
29
29
|
} from "../../impl/core/Const";
|
|
30
30
|
;
|
|
@@ -65,6 +65,7 @@ let {
|
|
|
65
65
|
|
|
66
66
|
import STD_XML = StandardInits.STD_XML;
|
|
67
67
|
import defaultMyFaces23 = StandardInits.defaultMyFaces23;
|
|
68
|
+
import HTML_PREFIX_EMBEDDED_BODY = StandardInits.HTML_PREFIX_EMBEDDED_BODY;
|
|
68
69
|
|
|
69
70
|
declare var jsf: any;
|
|
70
71
|
declare var Implementation: any;
|
|
@@ -333,9 +334,9 @@ describe('Tests after core when it hits response', function () {
|
|
|
333
334
|
pass2: "pass2",
|
|
334
335
|
onerror: (error: any) => {
|
|
335
336
|
expect(error.type).to.eq("error");
|
|
336
|
-
expect(
|
|
337
|
+
expect(error.status).to.eq(EMPTY_STR);
|
|
337
338
|
expect(!!error.message).to.eq(true);
|
|
338
|
-
expect(!!error.source).to.eq(true);
|
|
339
|
+
expect(!!error.source.id).to.eq(true);
|
|
339
340
|
expect(!!error.responseCode).to.eq(true);
|
|
340
341
|
expect(!!error.responseText).to.eq(true);
|
|
341
342
|
expect(!error.responseXML).to.eq(true);
|
|
@@ -360,5 +361,40 @@ describe('Tests after core when it hits response', function () {
|
|
|
360
361
|
}
|
|
361
362
|
|
|
362
363
|
});
|
|
364
|
+
|
|
365
|
+
it("must handle prefixed inputs properly (prefixes must be present)", function (done) {
|
|
366
|
+
window.document.body.innerHTML = HTML_PREFIX_EMBEDDED_BODY;
|
|
367
|
+
|
|
368
|
+
//we now run the tests here
|
|
369
|
+
try {
|
|
370
|
+
|
|
371
|
+
let event = {
|
|
372
|
+
isTrusted: true,
|
|
373
|
+
type: 'change',
|
|
374
|
+
target: document.getElementById("page:input::field"),
|
|
375
|
+
currentTarget: document.getElementById("page:input::field")
|
|
376
|
+
};
|
|
377
|
+
jsf.ajax.request(document.getElementById("page:input"), event as any, {
|
|
378
|
+
render: "page:output",
|
|
379
|
+
execute: "page:input",
|
|
380
|
+
params: {
|
|
381
|
+
"booga2.xxx": "yyy",
|
|
382
|
+
"javax.faces.behavior.event": "change",
|
|
383
|
+
"booga": "bla"
|
|
384
|
+
},
|
|
385
|
+
});
|
|
386
|
+
} catch (err) {
|
|
387
|
+
console.error(err);
|
|
388
|
+
expect(false).to.eq(true);
|
|
389
|
+
}
|
|
390
|
+
const requestBody = this.requests[0].requestBody;
|
|
391
|
+
//We check if the base64 encoded string matches the original
|
|
392
|
+
expect(requestBody.indexOf("javax.faces.behavior.event")).to.not.eq(-1);
|
|
393
|
+
expect(requestBody.indexOf("javax.faces.behavior.event=change")).to.not.eq(-1);
|
|
394
|
+
expect(requestBody.indexOf("page%3Ainput=input_value")).to.not.eq(-1);
|
|
395
|
+
done();
|
|
396
|
+
});
|
|
397
|
+
|
|
398
|
+
|
|
363
399
|
});
|
|
364
400
|
|