Skip to content

Commit 891c1e5

Browse files
authored
fix: [DPS-41958] - Destination Form: omit empty tls_hostname from destination payload (#13524)
1 parent d4975ff commit 891c1e5

3 files changed

Lines changed: 64 additions & 1 deletion

File tree

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
---
2+
"@linode/manager": Fixed
3+
---
4+
5+
Destination Form: omit the tls_hostname field from the request if it is empty or contains only whitespace ([#13524](https://github.com/linode/manager/pull/13524))

packages/manager/src/features/Delivery/deliveryUtils.test.ts

Lines changed: 50 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -288,6 +288,56 @@ describe('delivery utils functions', () => {
288288
expect(result.content_type).toBeUndefined();
289289
expect(result.client_certificate_details).toBeUndefined();
290290
});
291+
292+
it('should omit tls_hostname from client_certificate_details when it is an empty string', () => {
293+
const details: CustomHTTPSDetailsExtended = {
294+
...baseCustomHTTPSDetails,
295+
client_certificate_details: {
296+
client_ca_certificate: 'ca-cert',
297+
client_certificate: 'cert',
298+
client_private_key: 'key',
299+
tls_hostname: '',
300+
},
301+
};
302+
303+
const result = getDestinationPayloadDetails(
304+
details,
305+
destinationType.CustomHttps
306+
) as CustomHTTPSDetailsExtended;
307+
308+
expect(result.client_certificate_details).toBeDefined();
309+
expect(result.client_certificate_details?.tls_hostname).toBeUndefined();
310+
expect(result.client_certificate_details).toEqual({
311+
client_ca_certificate: 'ca-cert',
312+
client_certificate: 'cert',
313+
client_private_key: 'key',
314+
});
315+
});
316+
317+
it('should omit tls_hostname from client_certificate_details when it is whitespace', () => {
318+
const details: CustomHTTPSDetailsExtended = {
319+
...baseCustomHTTPSDetails,
320+
client_certificate_details: {
321+
client_ca_certificate: 'ca-cert',
322+
client_certificate: 'cert',
323+
client_private_key: 'key',
324+
tls_hostname: ' ',
325+
},
326+
};
327+
328+
const result = getDestinationPayloadDetails(
329+
details,
330+
destinationType.CustomHttps
331+
) as CustomHTTPSDetailsExtended;
332+
333+
expect(result.client_certificate_details).toBeDefined();
334+
expect(result.client_certificate_details?.tls_hostname).toBeUndefined();
335+
expect(result.client_certificate_details).toEqual({
336+
client_ca_certificate: 'ca-cert',
337+
client_certificate: 'cert',
338+
client_private_key: 'key',
339+
});
340+
});
291341
});
292342
});
293343
});

packages/manager/src/features/Delivery/deliveryUtils.ts

Lines changed: 9 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -110,6 +110,7 @@ export const getDestinationPayloadDetails = (
110110
if (type === destinationType.CustomHttps) {
111111
const propsToRemove: any[] = [];
112112
const customHTTPSDetails = details as CustomHTTPSDetailsExtended;
113+
let finalCustomHTTPSDetails = customHTTPSDetails;
113114

114115
if (!customHTTPSDetails.content_type) {
115116
propsToRemove.push('content_type');
@@ -125,15 +126,22 @@ export const getDestinationPayloadDetails = (
125126

126127
if (shouldRemoveCertDetails) {
127128
propsToRemove.push('client_certificate_details');
129+
} else if (!certDetails.tls_hostname?.trim()) {
130+
finalCustomHTTPSDetails = {
131+
...customHTTPSDetails,
132+
client_certificate_details: omitProps(certDetails, ['tls_hostname']),
133+
};
128134
}
129135
}
130136

131137
if (propsToRemove.length > 0) {
132138
return omitProps(
133-
customHTTPSDetails,
139+
finalCustomHTTPSDetails,
134140
propsToRemove
135141
) as CustomHTTPSDetailsExtended;
136142
}
143+
144+
return finalCustomHTTPSDetails;
137145
} else if ('path' in details && details.path === '') {
138146
return omitProps(details, ['path']);
139147
}

0 commit comments

Comments
 (0)