Skip to content

Commit 957d42e

Browse files
committed
add encoding back with extra tests
1 parent 39419dd commit 957d42e

File tree

4 files changed

+108
-0
lines changed

4 files changed

+108
-0
lines changed

packages/artifact/__tests__/util.test.ts

Lines changed: 53 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -96,6 +96,59 @@ describe('maskSigUrl', () => {
9696
})
9797
})
9898

99+
describe('maskSigUrl handles special characters in signatures', () => {
100+
beforeEach(() => {
101+
jest.clearAllMocks()
102+
})
103+
104+
it('handles signatures with slashes', () => {
105+
const url = 'https://example.com/?sig=abc/123'
106+
maskSigUrl(url)
107+
expect(setSecret).toHaveBeenCalledWith('abc/123')
108+
expect(setSecret).toHaveBeenCalledWith('abc%2F123')
109+
})
110+
111+
it('handles signatures with plus signs', () => {
112+
const url = 'https://example.com/?sig=abc+123'
113+
maskSigUrl(url)
114+
expect(setSecret).toHaveBeenCalledWith('abc 123')
115+
expect(setSecret).toHaveBeenCalledWith('abc%20123')
116+
})
117+
118+
it('handles signatures with equals signs', () => {
119+
const url = 'https://example.com/?sig=abc=123'
120+
maskSigUrl(url)
121+
expect(setSecret).toHaveBeenCalledWith('abc=123')
122+
expect(setSecret).toHaveBeenCalledWith('abc%3D123')
123+
})
124+
125+
it('handles already percent-encoded signatures', () => {
126+
const url = 'https://example.com/?sig=abc%2F123%3D'
127+
maskSigUrl(url)
128+
expect(setSecret).toHaveBeenCalledWith('abc/123=')
129+
expect(setSecret).toHaveBeenCalledWith('abc%2F123%3D')
130+
})
131+
132+
it('handles complex Azure SAS signatures', () => {
133+
const url =
134+
'https://example.com/container/file.txt?sig=nXyQIUj%2F%2F06Cxt80pBRYiiJlYqtPYg5sz%2FvEh5iHAhw%3D&se=2023-12-31'
135+
maskSigUrl(url)
136+
expect(setSecret).toHaveBeenCalledWith(
137+
'nXyQIUj//06Cxt80pBRYiiJlYqtPYg5sz/vEh5iHAhw='
138+
)
139+
expect(setSecret).toHaveBeenCalledWith(
140+
'nXyQIUj%2F%2F06Cxt80pBRYiiJlYqtPYg5sz%2FvEh5iHAhw%3D'
141+
)
142+
})
143+
144+
it('handles signatures with multiple special characters', () => {
145+
const url = 'https://example.com/?sig=a/b+c=d&e=f'
146+
maskSigUrl(url)
147+
expect(setSecret).toHaveBeenCalledWith('a/b c=d')
148+
expect(setSecret).toHaveBeenCalledWith('a%2Fb%20c%3Dd')
149+
})
150+
})
151+
99152
describe('maskSecretUrls', () => {
100153
beforeEach(() => {
101154
jest.clearAllMocks()

packages/artifact/src/internal/shared/util.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -95,6 +95,7 @@ export function maskSigUrl(url: string): void {
9595
const signature = parsedUrl.searchParams.get('sig')
9696
if (signature) {
9797
setSecret(signature)
98+
setSecret(encodeURIComponent(signature))
9899
}
99100
} catch (error) {
100101
debug(

packages/cache/__tests__/util.test.ts

Lines changed: 53 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -35,6 +35,59 @@ describe('maskSigUrl', () => {
3535
})
3636
})
3737

38+
describe('maskSigUrl handles special characters in signatures', () => {
39+
beforeEach(() => {
40+
jest.clearAllMocks()
41+
})
42+
43+
it('handles signatures with slashes', () => {
44+
const url = 'https://example.com/?sig=abc/123'
45+
maskSigUrl(url)
46+
expect(setSecret).toHaveBeenCalledWith('abc/123')
47+
expect(setSecret).toHaveBeenCalledWith('abc%2F123')
48+
})
49+
50+
it('handles signatures with plus signs', () => {
51+
const url = 'https://example.com/?sig=abc+123'
52+
maskSigUrl(url)
53+
expect(setSecret).toHaveBeenCalledWith('abc 123')
54+
expect(setSecret).toHaveBeenCalledWith('abc%20123')
55+
})
56+
57+
it('handles signatures with equals signs', () => {
58+
const url = 'https://example.com/?sig=abc=123'
59+
maskSigUrl(url)
60+
expect(setSecret).toHaveBeenCalledWith('abc=123')
61+
expect(setSecret).toHaveBeenCalledWith('abc%3D123')
62+
})
63+
64+
it('handles already percent-encoded signatures', () => {
65+
const url = 'https://example.com/?sig=abc%2F123%3D'
66+
maskSigUrl(url)
67+
expect(setSecret).toHaveBeenCalledWith('abc/123=')
68+
expect(setSecret).toHaveBeenCalledWith('abc%2F123%3D')
69+
})
70+
71+
it('handles complex Azure SAS signatures', () => {
72+
const url =
73+
'https://example.com/container/file.txt?sig=nXyQIUj%2F%2F06Cxt80pBRYiiJlYqtPYg5sz%2FvEh5iHAhw%3D&se=2023-12-31'
74+
maskSigUrl(url)
75+
expect(setSecret).toHaveBeenCalledWith(
76+
'nXyQIUj//06Cxt80pBRYiiJlYqtPYg5sz/vEh5iHAhw='
77+
)
78+
expect(setSecret).toHaveBeenCalledWith(
79+
'nXyQIUj%2F%2F06Cxt80pBRYiiJlYqtPYg5sz%2FvEh5iHAhw%3D'
80+
)
81+
})
82+
83+
it('handles signatures with multiple special characters', () => {
84+
const url = 'https://example.com/?sig=a/b+c=d&e=f'
85+
maskSigUrl(url)
86+
expect(setSecret).toHaveBeenCalledWith('a/b c=d')
87+
expect(setSecret).toHaveBeenCalledWith('a%2Fb%20c%3Dd')
88+
})
89+
})
90+
3891
describe('maskSecretUrls', () => {
3992
beforeEach(() => {
4093
jest.clearAllMocks()

packages/cache/src/internal/shared/util.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,7 @@ export function maskSigUrl(url: string): void {
2424
const signature = parsedUrl.searchParams.get('sig')
2525
if (signature) {
2626
setSecret(signature)
27+
setSecret(encodeURIComponent(signature))
2728
}
2829
} catch (error) {
2930
debug(

0 commit comments

Comments
 (0)