@exdst-sitecore-content-sdk/astro 0.0.23 → 0.0.25
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/package.json +9 -14
- package/src/client/sitecore-astro-client.ts +0 -45
- package/src/context.ts +14 -16
- package/src/env.d.ts +1 -1
- package/src/sharedTypes/component-props.ts +0 -10
- package/src/tools/generate-map.ts +9 -21
- package/src/client/sitecore-astro-client.test.ts +0 -292
- package/src/components/AstroImage.astro.test.ts +0 -541
- package/src/components/Date.astro.test.ts +0 -197
- package/src/components/EditingScripts.astro.test.ts +0 -267
- package/src/components/ErrorBoundary.astro.test.ts +0 -252
- package/src/components/ErrorComponent.astro.test.ts +0 -31
- package/src/components/FieldMetadata.astro.test.ts +0 -40
- package/src/components/File.astro.test.ts +0 -68
- package/src/components/HiddenRendering.astro.test.ts +0 -36
- package/src/components/Image.astro.test.ts +0 -438
- package/src/components/Link.astro.test.ts +0 -261
- package/src/components/MissingComponent.astro.test.ts +0 -21
- package/src/components/Placeholder/Placeholder.astro.test.ts +0 -1088
- package/src/components/Placeholder/PlaceholderMetadata.astro.test.ts +0 -228
- package/src/components/Placeholder/PlaceholderUtils.astro.test.ts +0 -149
- package/src/components/Placeholder/placeholder-utils.test.ts +0 -309
- package/src/components/RichText.astro.test.ts +0 -205
- package/src/components/Text.astro.test.ts +0 -273
- package/src/config/define-config.test.ts +0 -526
- package/src/config-cli/define-cli-config.test.ts +0 -88
- package/src/editing/editing-config-middleware.test.ts +0 -164
- package/src/editing/editing-render-middleware.test.ts +0 -1143
- package/src/editing/render-middleware.test.ts +0 -57
- package/src/editing/utils.test.ts +0 -1212
- package/src/enhancers/WithEmptyFieldEditingComponent.astro.test.ts +0 -380
- package/src/enhancers/WithFieldMetadata.astro.test.ts +0 -113
- package/src/middleware/middleware.test.ts +0 -520
- package/src/middleware/multisite-middleware.test.ts +0 -667
- package/src/middleware/robots-middleware.test.ts +0 -129
- package/src/middleware/sitemap-middleware.test.ts +0 -184
- package/src/services/component-props-service.ts +0 -183
- package/src/tests/astro-helpers.ts +0 -61
- package/src/tests/helpers.ts +0 -46
- package/src/tests/personalizeData.ts +0 -63
- package/src/tests/test-components/CustomErrorComponent.astro +0 -3
- package/src/tests/test-components/CustomHiddenRendering.astro +0 -10
- package/src/tests/test-components/CustomMissingComponent.astro +0 -9
- package/src/tests/test-components/DownloadCallout.astro +0 -12
- package/src/tests/test-components/EmptyFieldEditingComponent.astro +0 -5
- package/src/tests/test-components/ErrorBoundaryWithError.astro +0 -10
- package/src/tests/test-components/Home.astro +0 -12
- package/src/tests/test-components/SxaRichText.astro +0 -23
- package/src/tests/test-components/SxaRichTextDefault.astro +0 -7
- package/src/tests/test-components/SxaRichTextWithTitle.astro +0 -8
- package/src/tests/test-components/TestComponent.astro +0 -9
- package/src/tests/test-components/TestComponentWithError.astro +0 -4
- package/src/tests/test-components/TestComponentWithField.astro +0 -17
- package/src/tests/test-components/TestHeader.astro +0 -8
- package/src/tests/test-components/TestLogo.astro +0 -5
- package/src/tests/test-components/TestParentWrapperComponent.astro +0 -5
- package/src/tests/test-components/TestWrapperComponent.astro +0 -5
- package/src/tests/test-components/map-components/Bar.astro +0 -0
- package/src/tests/test-components/map-components/Baz.astro +0 -0
- package/src/tests/test-components/map-components/Foo.astro +0 -0
- package/src/tests/test-components/map-components/Hero.variant.astro +0 -0
- package/src/tests/test-components/map-components/NotComponent.bsx +0 -0
- package/src/tests/test-components/map-components/Qux.astro +0 -0
- package/src/tests/test-components/map-components/folded/Folded.astro +0 -0
- package/src/tests/test-components/map-components/folded/random-file-2.docx +0 -0
- package/src/tests/test-components/map-components/random-file.txt +0 -0
- package/src/tests/test-data/metadata-data.ts +0 -86
- package/src/tests/test-data/normal-mode-data.ts +0 -466
- package/src/tests/vitest.setup.ts +0 -4
- package/src/tools/templating/components.test.ts +0 -318
- package/src/tools/templating/default-component.test.ts +0 -31
- package/src/utils/utils.test.ts +0 -48
|
@@ -1,520 +0,0 @@
|
|
|
1
|
-
/* eslint-disable dot-notation */
|
|
2
|
-
/* eslint-disable no-unused-expressions, @typescript-eslint/no-unused-expressions */
|
|
3
|
-
import * as chai from 'chai';
|
|
4
|
-
import { use } from 'chai';
|
|
5
|
-
import sinonChai from 'sinon-chai';
|
|
6
|
-
import sinon from 'sinon';
|
|
7
|
-
import chaiString from 'chai-string';
|
|
8
|
-
import { MiddlewareBase, REWRITE_HEADER_NAME } from './middleware';
|
|
9
|
-
import { SiteResolver } from '../site';
|
|
10
|
-
import { PreviewCookies } from '../editing';
|
|
11
|
-
import { APIContext, AstroCookieSetOptions, MiddlewareHandler, RewritePayload } from 'astro';
|
|
12
|
-
|
|
13
|
-
use(sinonChai);
|
|
14
|
-
const expect = chai.use(chaiString).expect;
|
|
15
|
-
|
|
16
|
-
class MockSiteResolver extends SiteResolver {
|
|
17
|
-
getByName = sinon.stub().callsFake((siteName: string) => ({
|
|
18
|
-
name: siteName,
|
|
19
|
-
language: 'en',
|
|
20
|
-
hostName: 'foo.net',
|
|
21
|
-
}));
|
|
22
|
-
|
|
23
|
-
getByHost = sinon.stub().callsFake((hostName: string) => ({
|
|
24
|
-
name: 'foo',
|
|
25
|
-
language: 'en',
|
|
26
|
-
hostName,
|
|
27
|
-
}));
|
|
28
|
-
}
|
|
29
|
-
|
|
30
|
-
const createContext = (props: any = {}) => {
|
|
31
|
-
const context = {
|
|
32
|
-
request: {
|
|
33
|
-
url: props?.url,
|
|
34
|
-
headers: {
|
|
35
|
-
get(key: string) {
|
|
36
|
-
const headers = {
|
|
37
|
-
...context.request.headers,
|
|
38
|
-
...props?.headerValues,
|
|
39
|
-
};
|
|
40
|
-
return headers[key];
|
|
41
|
-
},
|
|
42
|
-
append(key: string, value: string | Record<string, any>) {
|
|
43
|
-
context.request.headers[key] = value;
|
|
44
|
-
},
|
|
45
|
-
},
|
|
46
|
-
},
|
|
47
|
-
cookies: {
|
|
48
|
-
get(cookieName: string) {
|
|
49
|
-
const cookies = { ...props?.cookieValues };
|
|
50
|
-
return cookies[cookieName] ? { value: cookies[cookieName] } : undefined;
|
|
51
|
-
},
|
|
52
|
-
set(
|
|
53
|
-
cookieName: string,
|
|
54
|
-
value: string | Record<string, any>,
|
|
55
|
-
options?: AstroCookieSetOptions
|
|
56
|
-
) {
|
|
57
|
-
context.cookies[cookieName] = { value, ...options };
|
|
58
|
-
},
|
|
59
|
-
...props?.cookies,
|
|
60
|
-
...props.cookieValues,
|
|
61
|
-
},
|
|
62
|
-
locals: props.locals || {},
|
|
63
|
-
url: props?.url,
|
|
64
|
-
currentLocale: props.currentLocale,
|
|
65
|
-
preferredLocale: props.preferredLocale,
|
|
66
|
-
// eslint-disable-next-line no-unused-vars
|
|
67
|
-
rewrite: (_) => props.response,
|
|
68
|
-
} as APIContext;
|
|
69
|
-
|
|
70
|
-
return context;
|
|
71
|
-
};
|
|
72
|
-
|
|
73
|
-
const createResponse = (props: any = {}) => {
|
|
74
|
-
const response = {
|
|
75
|
-
...props,
|
|
76
|
-
url: props.url,
|
|
77
|
-
headers: {
|
|
78
|
-
get(key: string) {
|
|
79
|
-
const headers = {
|
|
80
|
-
...response.headers,
|
|
81
|
-
...props.headerValues,
|
|
82
|
-
};
|
|
83
|
-
return headers[key];
|
|
84
|
-
},
|
|
85
|
-
append(key: string, value: string | Record<string, any>) {
|
|
86
|
-
response.headers[key] = value;
|
|
87
|
-
},
|
|
88
|
-
...props.headers,
|
|
89
|
-
},
|
|
90
|
-
} as Response;
|
|
91
|
-
|
|
92
|
-
return response;
|
|
93
|
-
};
|
|
94
|
-
|
|
95
|
-
describe('MiddlewareBase', () => {
|
|
96
|
-
class SampleMiddleware extends MiddlewareBase {
|
|
97
|
-
handle: MiddlewareHandler = () => {};
|
|
98
|
-
}
|
|
99
|
-
|
|
100
|
-
describe('defaultHostname', () => {
|
|
101
|
-
it('should set default hostname', () => {
|
|
102
|
-
const middleware = new SampleMiddleware({ sites: [] });
|
|
103
|
-
|
|
104
|
-
expect(middleware['defaultHostname']).to.equal('localhost');
|
|
105
|
-
});
|
|
106
|
-
|
|
107
|
-
it('should set custom hostname', () => {
|
|
108
|
-
const middleware = new SampleMiddleware({
|
|
109
|
-
sites: [],
|
|
110
|
-
defaultHostname: 'foo',
|
|
111
|
-
});
|
|
112
|
-
|
|
113
|
-
expect(middleware['defaultHostname']).to.equal('foo');
|
|
114
|
-
});
|
|
115
|
-
});
|
|
116
|
-
|
|
117
|
-
describe('isPreview', () => {
|
|
118
|
-
it('should return true when preview data cookie is provided', () => {
|
|
119
|
-
const middleware = new SampleMiddleware({ sites: [] });
|
|
120
|
-
const context = createContext({
|
|
121
|
-
cookieValues: {
|
|
122
|
-
[PreviewCookies.PREVIEW_DATA]: 'value',
|
|
123
|
-
},
|
|
124
|
-
});
|
|
125
|
-
|
|
126
|
-
expect(middleware['isPreview'](context)).to.equal(true);
|
|
127
|
-
});
|
|
128
|
-
|
|
129
|
-
it('should return false when required cookie is not provided', () => {
|
|
130
|
-
const middleware = new SampleMiddleware({ sites: [] });
|
|
131
|
-
const context = createContext({});
|
|
132
|
-
|
|
133
|
-
expect(middleware['isPreview'](context)).to.equal(false);
|
|
134
|
-
});
|
|
135
|
-
});
|
|
136
|
-
/*
|
|
137
|
-
describe('isPrefetch', () => {
|
|
138
|
-
it('should return true when purpose header is prefetch', () => {
|
|
139
|
-
const middleware = new SampleMiddleware({ sites: [] });
|
|
140
|
-
const req = createReq({
|
|
141
|
-
headerValues: {
|
|
142
|
-
purpose: 'prefetch',
|
|
143
|
-
},
|
|
144
|
-
});
|
|
145
|
-
|
|
146
|
-
expect(middleware['isPrefetch'](req)).to.equal(true);
|
|
147
|
-
});
|
|
148
|
-
|
|
149
|
-
it('should return true when Next-Router-Prefetch header is 1', () => {
|
|
150
|
-
const middleware = new SampleMiddleware({ sites: [] });
|
|
151
|
-
const req = createReq({
|
|
152
|
-
headerValues: {
|
|
153
|
-
'Next-Router-Prefetch': '1',
|
|
154
|
-
},
|
|
155
|
-
});
|
|
156
|
-
|
|
157
|
-
expect(middleware['isPrefetch'](req)).to.equal(true);
|
|
158
|
-
});
|
|
159
|
-
|
|
160
|
-
it('should return true when x-middleware-prefetch header is 1', () => {
|
|
161
|
-
const middleware = new SampleMiddleware({ sites: [] });
|
|
162
|
-
const req = createReq({
|
|
163
|
-
headerValues: {
|
|
164
|
-
'x-middleware-prefetch': '1',
|
|
165
|
-
},
|
|
166
|
-
});
|
|
167
|
-
|
|
168
|
-
expect(middleware['isPrefetch'](req)).to.equal(true);
|
|
169
|
-
});
|
|
170
|
-
|
|
171
|
-
it('should return false when required header is not provided', () => {
|
|
172
|
-
const middleware = new SampleMiddleware({ sites: [] });
|
|
173
|
-
const req = createReq();
|
|
174
|
-
|
|
175
|
-
expect(middleware['isPrefetch'](req)).to.equal(false);
|
|
176
|
-
});
|
|
177
|
-
|
|
178
|
-
it('returns false for known device with x-middleware-prefetch header', () => {
|
|
179
|
-
const middleware = new SampleMiddleware({ sites: [] });
|
|
180
|
-
const req = createReq({
|
|
181
|
-
headerValues: {
|
|
182
|
-
'x-middleware-prefetch': '1',
|
|
183
|
-
'user-agent': 'Mozilla/5.0 (iPhone; CPU iPhone OS 16_6 like Mac OS X)',
|
|
184
|
-
},
|
|
185
|
-
});
|
|
186
|
-
|
|
187
|
-
expect(middleware['isPrefetch'](req)).to.equal(false);
|
|
188
|
-
});
|
|
189
|
-
|
|
190
|
-
it('should return true when it is a desktop device and purpose is prefetch', () => {
|
|
191
|
-
const middleware = new SampleMiddleware({ sites: [] });
|
|
192
|
-
const req = createReq({
|
|
193
|
-
headerValues: {
|
|
194
|
-
purpose: 'prefetch',
|
|
195
|
-
'sec-ch-ua-mobile': '?0',
|
|
196
|
-
},
|
|
197
|
-
});
|
|
198
|
-
|
|
199
|
-
expect(middleware['isPrefetch'](req)).to.equal(true);
|
|
200
|
-
});
|
|
201
|
-
});
|
|
202
|
-
*/
|
|
203
|
-
describe('disabled / skip', () => {
|
|
204
|
-
it('default', () => {
|
|
205
|
-
const middleware = new SampleMiddleware({ sites: [] });
|
|
206
|
-
|
|
207
|
-
expect(
|
|
208
|
-
middleware['disabled'](
|
|
209
|
-
createContext({
|
|
210
|
-
url: {
|
|
211
|
-
pathname: '/api/layout/render',
|
|
212
|
-
},
|
|
213
|
-
}),
|
|
214
|
-
createResponse()
|
|
215
|
-
)
|
|
216
|
-
).to.equal(true);
|
|
217
|
-
|
|
218
|
-
expect(
|
|
219
|
-
middleware['disabled'](
|
|
220
|
-
createContext({
|
|
221
|
-
url: {
|
|
222
|
-
pathname: '/sitecore/render',
|
|
223
|
-
},
|
|
224
|
-
}),
|
|
225
|
-
createResponse()
|
|
226
|
-
)
|
|
227
|
-
).to.equal(true);
|
|
228
|
-
});
|
|
229
|
-
|
|
230
|
-
it('custom function', () => {
|
|
231
|
-
const middleware = new SampleMiddleware({
|
|
232
|
-
sites: [],
|
|
233
|
-
skip(context: APIContext) {
|
|
234
|
-
return context.url.pathname === 'foo';
|
|
235
|
-
},
|
|
236
|
-
});
|
|
237
|
-
|
|
238
|
-
expect(
|
|
239
|
-
middleware['disabled'](
|
|
240
|
-
createContext({
|
|
241
|
-
url: {
|
|
242
|
-
pathname: 'bar',
|
|
243
|
-
},
|
|
244
|
-
}),
|
|
245
|
-
createResponse()
|
|
246
|
-
)
|
|
247
|
-
).to.equal(false);
|
|
248
|
-
expect(
|
|
249
|
-
middleware['disabled'](
|
|
250
|
-
createContext({
|
|
251
|
-
url: {
|
|
252
|
-
pathname: 'foo',
|
|
253
|
-
},
|
|
254
|
-
}),
|
|
255
|
-
createResponse()
|
|
256
|
-
)
|
|
257
|
-
).to.equal(true);
|
|
258
|
-
});
|
|
259
|
-
});
|
|
260
|
-
|
|
261
|
-
describe('disabled in chain', () => {
|
|
262
|
-
it('should return false if skipMiddleware local variable is not set or false', () => {
|
|
263
|
-
const middleware = new SampleMiddleware({ sites: [] });
|
|
264
|
-
|
|
265
|
-
expect(
|
|
266
|
-
middleware['disabledInChain'](
|
|
267
|
-
createContext({
|
|
268
|
-
url: {
|
|
269
|
-
pathname: '/api/layout/render',
|
|
270
|
-
},
|
|
271
|
-
locals: {
|
|
272
|
-
skipMiddleware: false,
|
|
273
|
-
},
|
|
274
|
-
}),
|
|
275
|
-
createResponse()
|
|
276
|
-
)
|
|
277
|
-
).to.equal(false);
|
|
278
|
-
|
|
279
|
-
expect(
|
|
280
|
-
middleware['disabledInChain'](
|
|
281
|
-
createContext({
|
|
282
|
-
url: {
|
|
283
|
-
pathname: '/api/layout/render',
|
|
284
|
-
},
|
|
285
|
-
}),
|
|
286
|
-
createResponse()
|
|
287
|
-
)
|
|
288
|
-
).to.equal(false);
|
|
289
|
-
});
|
|
290
|
-
|
|
291
|
-
it('should return true if skipMiddleware local variable is true', () => {
|
|
292
|
-
const middleware = new SampleMiddleware({ sites: [] });
|
|
293
|
-
|
|
294
|
-
expect(
|
|
295
|
-
middleware['disabledInChain'](
|
|
296
|
-
createContext({
|
|
297
|
-
url: {
|
|
298
|
-
pathname: '/api/layout/render',
|
|
299
|
-
},
|
|
300
|
-
locals: {
|
|
301
|
-
skipMiddleware: true,
|
|
302
|
-
},
|
|
303
|
-
}),
|
|
304
|
-
createResponse()
|
|
305
|
-
)
|
|
306
|
-
).to.equal(true);
|
|
307
|
-
});
|
|
308
|
-
});
|
|
309
|
-
|
|
310
|
-
it('extractDebugHeaders', () => {
|
|
311
|
-
const middleware = new SampleMiddleware({ sites: [] });
|
|
312
|
-
|
|
313
|
-
const headers = new Headers({});
|
|
314
|
-
headers.set('foo', 'net');
|
|
315
|
-
headers.set('bar', 'one');
|
|
316
|
-
|
|
317
|
-
expect(middleware['extractDebugHeaders'](headers)).to.deep.equal({
|
|
318
|
-
foo: 'net',
|
|
319
|
-
bar: 'one',
|
|
320
|
-
});
|
|
321
|
-
});
|
|
322
|
-
|
|
323
|
-
describe('getHostHeader', () => {
|
|
324
|
-
it('should return default hostname when header is not present', () => {
|
|
325
|
-
const middleware = new SampleMiddleware({ sites: [] });
|
|
326
|
-
const context = createContext({
|
|
327
|
-
headerValues: {
|
|
328
|
-
foo: 'one',
|
|
329
|
-
},
|
|
330
|
-
});
|
|
331
|
-
|
|
332
|
-
expect(middleware['getHostHeader'](context)).to.equal(undefined);
|
|
333
|
-
});
|
|
334
|
-
|
|
335
|
-
it('should return host header', () => {
|
|
336
|
-
const middleware = new SampleMiddleware({ sites: [] });
|
|
337
|
-
const context = createContext({
|
|
338
|
-
headerValues: {
|
|
339
|
-
foo: 'one',
|
|
340
|
-
host: 'bar.net:9999',
|
|
341
|
-
},
|
|
342
|
-
});
|
|
343
|
-
|
|
344
|
-
expect(middleware['getHostHeader'](context)).to.equal('bar.net');
|
|
345
|
-
});
|
|
346
|
-
|
|
347
|
-
it('should return x-forwarded-host header when present', () => {
|
|
348
|
-
const middleware = new SampleMiddleware({ sites: [] });
|
|
349
|
-
|
|
350
|
-
const context = createContext({
|
|
351
|
-
headerValues: {
|
|
352
|
-
'x-forwarded-host': 'proxy.forwarded.com',
|
|
353
|
-
host: 'localhost:3000',
|
|
354
|
-
},
|
|
355
|
-
});
|
|
356
|
-
|
|
357
|
-
expect(middleware['getHostHeader'](context)).to.equal('proxy.forwarded.com');
|
|
358
|
-
});
|
|
359
|
-
});
|
|
360
|
-
|
|
361
|
-
describe('getLanguage', () => {
|
|
362
|
-
it('should return defined language', () => {
|
|
363
|
-
const middleware = new SampleMiddleware({ sites: [] });
|
|
364
|
-
const context = createContext({
|
|
365
|
-
currentLocale: 'be',
|
|
366
|
-
preferredLocale: 'fr',
|
|
367
|
-
});
|
|
368
|
-
|
|
369
|
-
expect(middleware['getLanguage'](context)).to.equal('be');
|
|
370
|
-
});
|
|
371
|
-
|
|
372
|
-
it('should return defined default language', () => {
|
|
373
|
-
const middleware = new SampleMiddleware({ sites: [] });
|
|
374
|
-
const context = createContext({
|
|
375
|
-
preferredLocale: 'fr',
|
|
376
|
-
});
|
|
377
|
-
|
|
378
|
-
expect(middleware['getLanguage'](context)).to.equal('fr');
|
|
379
|
-
});
|
|
380
|
-
|
|
381
|
-
it('should use fallback language from config when present', () => {
|
|
382
|
-
const middleware = new SampleMiddleware({
|
|
383
|
-
sites: [],
|
|
384
|
-
defaultLanguage: 'es-ES',
|
|
385
|
-
});
|
|
386
|
-
const context = createContext();
|
|
387
|
-
|
|
388
|
-
expect(middleware['getLanguage'](context)).to.equal('es-ES');
|
|
389
|
-
});
|
|
390
|
-
|
|
391
|
-
it('should return fallback language', () => {
|
|
392
|
-
const middleware = new SampleMiddleware({ sites: [] });
|
|
393
|
-
const context = createContext();
|
|
394
|
-
|
|
395
|
-
expect(middleware['getLanguage'](context)).to.equal('en');
|
|
396
|
-
});
|
|
397
|
-
});
|
|
398
|
-
|
|
399
|
-
describe('getSite', () => {
|
|
400
|
-
it('should get site by name when site cookie is provided', () => {
|
|
401
|
-
const context = createContext();
|
|
402
|
-
|
|
403
|
-
const res = createResponse({
|
|
404
|
-
headers: {
|
|
405
|
-
'Set-Cookie': 'sc_site=xxx',
|
|
406
|
-
},
|
|
407
|
-
});
|
|
408
|
-
|
|
409
|
-
const middleware = new SampleMiddleware({ sites: [] });
|
|
410
|
-
middleware['siteResolver'] = new MockSiteResolver([]);
|
|
411
|
-
|
|
412
|
-
expect(middleware['getSite'](context, res).name).to.equal('xxx');
|
|
413
|
-
expect(middleware['siteResolver'].getByName).to.be.calledWith('xxx');
|
|
414
|
-
});
|
|
415
|
-
|
|
416
|
-
it('should get default site info when site cookie is provided', () => {
|
|
417
|
-
class MockSiteResolver extends SiteResolver {
|
|
418
|
-
// eslint-disable-next-line no-unused-vars
|
|
419
|
-
getByName = sinon.stub().callsFake((_siteName: string) => undefined);
|
|
420
|
-
}
|
|
421
|
-
|
|
422
|
-
const context = createContext();
|
|
423
|
-
|
|
424
|
-
const res = createResponse({
|
|
425
|
-
headers: {
|
|
426
|
-
'Set-Cookie': 'sc_site=xxx',
|
|
427
|
-
},
|
|
428
|
-
});
|
|
429
|
-
|
|
430
|
-
const middleware = new SampleMiddleware({ sites: [] });
|
|
431
|
-
middleware['siteResolver'] = new MockSiteResolver([]);
|
|
432
|
-
|
|
433
|
-
expect(middleware['getSite'](context, res)).deep.equal({
|
|
434
|
-
name: 'xxx',
|
|
435
|
-
language: 'en',
|
|
436
|
-
hostName: '*',
|
|
437
|
-
});
|
|
438
|
-
expect(middleware['siteResolver'].getByName).to.be.calledWith('xxx');
|
|
439
|
-
});
|
|
440
|
-
});
|
|
441
|
-
|
|
442
|
-
it('should get site by host header', () => {
|
|
443
|
-
const context = createContext({
|
|
444
|
-
headerValues: {
|
|
445
|
-
host: 'xxx.net:9999',
|
|
446
|
-
},
|
|
447
|
-
});
|
|
448
|
-
const middleware = new SampleMiddleware({ sites: [] });
|
|
449
|
-
middleware['siteResolver'] = new MockSiteResolver([]);
|
|
450
|
-
|
|
451
|
-
expect(middleware['getSite'](context).hostName).to.equal('xxx.net');
|
|
452
|
-
expect(middleware['siteResolver'].getByHost).to.be.calledWith('xxx.net');
|
|
453
|
-
});
|
|
454
|
-
|
|
455
|
-
it('should get site by default host', () => {
|
|
456
|
-
const context = createContext();
|
|
457
|
-
const middleware = new SampleMiddleware({ sites: [] });
|
|
458
|
-
middleware['siteResolver'] = new MockSiteResolver([]);
|
|
459
|
-
|
|
460
|
-
expect(middleware['getSite'](context).hostName).to.equal('localhost');
|
|
461
|
-
expect(middleware['siteResolver'].getByHost).to.be.calledWith('localhost');
|
|
462
|
-
});
|
|
463
|
-
|
|
464
|
-
it('should get site by custom default host', () => {
|
|
465
|
-
const context = createContext();
|
|
466
|
-
|
|
467
|
-
const middleware = new SampleMiddleware({
|
|
468
|
-
sites: [],
|
|
469
|
-
defaultHostname: 'yyy.net',
|
|
470
|
-
});
|
|
471
|
-
middleware['siteResolver'] = new MockSiteResolver([]);
|
|
472
|
-
|
|
473
|
-
expect(middleware['getSite'](context).hostName).to.equal('yyy.net');
|
|
474
|
-
expect(middleware['siteResolver'].getByHost).to.be.calledWith('yyy.net');
|
|
475
|
-
});
|
|
476
|
-
|
|
477
|
-
describe('rewrite', () => {
|
|
478
|
-
it('should add header by default', async () => {
|
|
479
|
-
const middleware = new SampleMiddleware({ sites: [] });
|
|
480
|
-
const url = new URL('http://localhost:3000/not-found');
|
|
481
|
-
|
|
482
|
-
const context = createContext({
|
|
483
|
-
url: url,
|
|
484
|
-
});
|
|
485
|
-
|
|
486
|
-
const mockNext = async (rewritePath?: RewritePayload) => {
|
|
487
|
-
return createResponse({
|
|
488
|
-
url: rewritePath,
|
|
489
|
-
headers: [],
|
|
490
|
-
});
|
|
491
|
-
};
|
|
492
|
-
|
|
493
|
-
const response = await middleware['rewrite']('/new', context, mockNext);
|
|
494
|
-
|
|
495
|
-
expect(response.headers.get(REWRITE_HEADER_NAME)).to.equal('/new');
|
|
496
|
-
expect(response.url.toString()).to.endWith('/new');
|
|
497
|
-
});
|
|
498
|
-
|
|
499
|
-
it('should not rewrite header when skipHeader is true', async () => {
|
|
500
|
-
const middleware = new SampleMiddleware({ sites: [] });
|
|
501
|
-
const url = new URL('http://localhost:3000/not-found');
|
|
502
|
-
|
|
503
|
-
const context = createContext({
|
|
504
|
-
url: url,
|
|
505
|
-
});
|
|
506
|
-
|
|
507
|
-
const mockNext = async (rewritePath?: RewritePayload) => {
|
|
508
|
-
return createResponse({
|
|
509
|
-
url: rewritePath,
|
|
510
|
-
headers: [],
|
|
511
|
-
});
|
|
512
|
-
};
|
|
513
|
-
|
|
514
|
-
const response = await middleware['rewrite']('/new', context, mockNext, true);
|
|
515
|
-
|
|
516
|
-
expect(response.headers.get(REWRITE_HEADER_NAME)).to.be.undefined;
|
|
517
|
-
expect(response.url.toString()).to.endWith('/new');
|
|
518
|
-
});
|
|
519
|
-
});
|
|
520
|
-
});
|