Skip to content

Commit 73c7c1e

Browse files
authored
Merge pull request #101 from formio/FIO-8354-unauthorized-toast-form-manager
FIO-8354: fallback to passing response in argument if response.body is undefined
2 parents 5ef7601 + e0a24b6 commit 73c7c1e

File tree

2 files changed

+59
-3
lines changed

2 files changed

+59
-3
lines changed

src/sdk/Formio.ts

+3-3
Original file line numberDiff line numberDiff line change
@@ -1566,13 +1566,13 @@ export class Formio {
15661566
if (!response.ok) {
15671567
if (response.status === 440) {
15681568
Formio.setToken(null, opts);
1569-
Formio.events.emit('formio.sessionExpired', response.body);
1569+
Formio.events.emit('formio.sessionExpired', response.body || response);
15701570
}
15711571
else if (response.status === 401) {
1572-
Formio.events.emit('formio.unauthorized', response.body);
1572+
Formio.events.emit('formio.unauthorized', response.body || response);
15731573
}
15741574
else if (response.status === 416) {
1575-
Formio.events.emit('formio.rangeIsNotSatisfiable', response.body);
1575+
Formio.events.emit('formio.rangeIsNotSatisfiable', response.body || response);
15761576
}
15771577
else if (response.status === 504) {
15781578
return Promise.reject(new Error('Network request failed'));

src/sdk/__tests__/Formio.test.ts

+56
Original file line numberDiff line numberDiff line change
@@ -2173,4 +2173,60 @@ describe('Formio.js Tests', () => {
21732173
assert.ok(plugin.wrapStaticRequestPromise.calledOnce, 'wrapStaticRequestPromise should be called once');
21742174
});
21752175
});
2176+
describe('Formio.request', () => {
2177+
it('should emit a formio.sessionExpired event when the response status is 440 and the response object should exist', (done) => {
2178+
let eventFired = false
2179+
let responseNotUndefined = false
2180+
setTimeout(()=>{
2181+
assert(eventFired, 'formio.sessionExpired event was not called');
2182+
assert(responseNotUndefined, 'a response was not passed into the event');
2183+
fetchMock.restore()
2184+
done()
2185+
},200)
2186+
Formio.events.on('formio.sessionExpired', (response: any) => {
2187+
eventFired = true
2188+
if (response){
2189+
responseNotUndefined = true
2190+
}
2191+
})
2192+
fetchMock.mock('http://localhost:8080/test', 440);
2193+
Formio.request('http://localhost:8080/test');
2194+
});
2195+
it('should emit a formio.unauthorized event when the response status is 401', (done) => {
2196+
let eventFired = false
2197+
let responseNotUndefined = false
2198+
setTimeout(()=>{
2199+
assert(eventFired, 'formio.unauthorized event was not called');
2200+
assert(responseNotUndefined, 'a response was not passed into the event');
2201+
fetchMock.restore()
2202+
done()
2203+
},200);
2204+
Formio.events.on('formio.unauthorized', (response: any) => {
2205+
eventFired = true;
2206+
if (response){
2207+
responseNotUndefined = true;
2208+
}
2209+
})
2210+
fetchMock.mock('http://localhost:8080/test', 401);
2211+
Formio.request('http://localhost:8080/test');
2212+
});
2213+
it('should emit a formio.rangeIsNotSatisfiable event when the response status is 416', (done) => {
2214+
let eventFired = false;
2215+
let responseNotUndefined = false;
2216+
setTimeout(()=>{
2217+
assert(eventFired, 'formio.rangeIsNotSatisfiable event was not called');
2218+
assert(responseNotUndefined, 'a response was not passed into the event');
2219+
fetchMock.restore()
2220+
done()
2221+
},200);
2222+
Formio.events.on('formio.rangeIsNotSatisfiable', (response) => {
2223+
eventFired = true;
2224+
if (response) {
2225+
responseNotUndefined = true;
2226+
}
2227+
})
2228+
fetchMock.mock('http://localhost:8080/test', 416);
2229+
Formio.request('http://localhost:8080/test');
2230+
});
2231+
});
21762232
});

0 commit comments

Comments
 (0)