mirror of
https://github.com/angular/angular
synced 2026-05-24 09:28:37 +00:00
fix(http): include transferCache when cloning HttpRequest (#54939)
Fixes a bug where HttpRequest.clone() does not include the transferCache property. Fixes #54924. PR Close #54939
This commit is contained in:
parent
3cf70e26ba
commit
cb433af0e1
3 changed files with 19 additions and 0 deletions
|
|
@ -2099,6 +2099,9 @@ export class HttpRequest<T> {
|
|||
params?: HttpParams;
|
||||
responseType?: 'arraybuffer' | 'blob' | 'json' | 'text';
|
||||
withCredentials?: boolean;
|
||||
transferCache?: {
|
||||
includeHeaders?: string[];
|
||||
} | boolean;
|
||||
body?: T | null;
|
||||
method?: string;
|
||||
url?: string;
|
||||
|
|
@ -2117,6 +2120,9 @@ export class HttpRequest<T> {
|
|||
params?: HttpParams;
|
||||
responseType?: 'arraybuffer' | 'blob' | 'json' | 'text';
|
||||
withCredentials?: boolean;
|
||||
transferCache?: {
|
||||
includeHeaders?: string[];
|
||||
} | boolean;
|
||||
body?: V | null;
|
||||
method?: string;
|
||||
url?: string;
|
||||
|
|
|
|||
|
|
@ -439,6 +439,7 @@ export class HttpRequest<T> {
|
|||
params?: HttpParams;
|
||||
responseType?: 'arraybuffer' | 'blob' | 'json' | 'text';
|
||||
withCredentials?: boolean;
|
||||
transferCache?: {includeHeaders?: string[]} | boolean;
|
||||
body?: T | null;
|
||||
method?: string;
|
||||
url?: string;
|
||||
|
|
@ -452,6 +453,7 @@ export class HttpRequest<T> {
|
|||
params?: HttpParams;
|
||||
responseType?: 'arraybuffer' | 'blob' | 'json' | 'text';
|
||||
withCredentials?: boolean;
|
||||
transferCache?: {includeHeaders?: string[]} | boolean;
|
||||
body?: V | null;
|
||||
method?: string;
|
||||
url?: string;
|
||||
|
|
@ -466,6 +468,7 @@ export class HttpRequest<T> {
|
|||
params?: HttpParams;
|
||||
responseType?: 'arraybuffer' | 'blob' | 'json' | 'text';
|
||||
withCredentials?: boolean;
|
||||
transferCache?: {includeHeaders?: string[]} | boolean;
|
||||
body?: any | null;
|
||||
method?: string;
|
||||
url?: string;
|
||||
|
|
@ -479,6 +482,10 @@ export class HttpRequest<T> {
|
|||
const url = update.url || this.url;
|
||||
const responseType = update.responseType || this.responseType;
|
||||
|
||||
// Carefully handle the transferCache to differentiate between
|
||||
// `false` and `undefined` in the update args.
|
||||
const transferCache = update.transferCache ?? this.transferCache;
|
||||
|
||||
// The body is somewhat special - a `null` value in update.body means
|
||||
// whatever current body is present is being overridden with an empty
|
||||
// body, whereas an `undefined` value in update.body implies no
|
||||
|
|
@ -526,6 +533,7 @@ export class HttpRequest<T> {
|
|||
reportProgress,
|
||||
responseType,
|
||||
withCredentials,
|
||||
transferCache,
|
||||
});
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -76,6 +76,7 @@ describe('HttpRequest', () => {
|
|||
reportProgress: true,
|
||||
responseType: 'text',
|
||||
withCredentials: true,
|
||||
transferCache: true,
|
||||
});
|
||||
it('in the base case', () => {
|
||||
const clone = req.clone();
|
||||
|
|
@ -87,6 +88,7 @@ describe('HttpRequest', () => {
|
|||
expect(clone.headers.get('Test')).toBe('Test header');
|
||||
|
||||
expect(clone.context).toBe(context);
|
||||
expect(clone.transferCache).toBe(true);
|
||||
});
|
||||
it('and updates the url', () => {
|
||||
expect(req.clone({url: '/changed'}).url).toBe('/changed');
|
||||
|
|
@ -101,6 +103,9 @@ describe('HttpRequest', () => {
|
|||
const newContext = new HttpContext();
|
||||
expect(req.clone({context: newContext}).context).toBe(newContext);
|
||||
});
|
||||
it('and updates the transferCache', () => {
|
||||
expect(req.clone({transferCache: false}).transferCache).toBe(false);
|
||||
});
|
||||
});
|
||||
describe('content type detection', () => {
|
||||
const baseReq = new HttpRequest('POST', '/test', null);
|
||||
|
|
|
|||
Loading…
Reference in a new issue