fix: ignore custom port when converting ssh repo URL to https
This commit is contained in:
parent
dc19dfa2e9
commit
4af8548366
@ -48,9 +48,14 @@ module.exports = async ({cwd, env, options: {repositoryUrl, branch}}) => {
|
|||||||
if (gitCredentials) {
|
if (gitCredentials) {
|
||||||
// If credentials are set via environment variables, convert the URL to http/https and add basic auth, otherwise return `repositoryUrl` as is
|
// If credentials are set via environment variables, convert the URL to http/https and add basic auth, otherwise return `repositoryUrl` as is
|
||||||
const [match, auth, host, path] = /^(?!.+:\/\/)(?:(.*)@)?(.*?):(.*)$/.exec(repositoryUrl) || [];
|
const [match, auth, host, path] = /^(?!.+:\/\/)(?:(.*)@)?(.*?):(.*)$/.exec(repositoryUrl) || [];
|
||||||
|
const {port, hostname, ...parsed} = parse(
|
||||||
|
match ? `ssh://${auth ? `${auth}@` : ''}${host}/${path}` : repositoryUrl
|
||||||
|
);
|
||||||
|
|
||||||
return format({
|
return format({
|
||||||
...parse(match ? `ssh://${auth ? `${auth}@` : ''}${host}/${path}` : repositoryUrl),
|
...parsed,
|
||||||
auth: gitCredentials,
|
auth: gitCredentials,
|
||||||
|
host: `${hostname}${protocol === 'ssh:' ? '' : port ? `:${port}` : ''}`,
|
||||||
protocol: protocol && /http[^s]/.test(protocol) ? 'http' : 'https',
|
protocol: protocol && /http[^s]/.test(protocol) ? 'http' : 'https',
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
@ -140,6 +140,19 @@ test('Return the "http" formatted URL if "gitCredentials" is defined and reposit
|
|||||||
);
|
);
|
||||||
});
|
});
|
||||||
|
|
||||||
|
test('Return the "http" formatted URL if "gitCredentials" is defined and repositoryUrl is a "http" URL with custom port', async t => {
|
||||||
|
const {cwd} = await gitRepo();
|
||||||
|
|
||||||
|
t.is(
|
||||||
|
await getAuthUrl({
|
||||||
|
cwd,
|
||||||
|
env: {...env, GIT_CREDENTIALS: 'user:pass'},
|
||||||
|
options: {branch: 'master', repositoryUrl: 'http://host.null:8080/owner/repo.git'},
|
||||||
|
}),
|
||||||
|
'http://user:pass@host.null:8080/owner/repo.git'
|
||||||
|
);
|
||||||
|
});
|
||||||
|
|
||||||
test('Return the "https" formatted URL if "gitCredentials" is defined and repositoryUrl is a "git+https" URL', async t => {
|
test('Return the "https" formatted URL if "gitCredentials" is defined and repositoryUrl is a "git+https" URL', async t => {
|
||||||
const {cwd} = await gitRepo();
|
const {cwd} = await gitRepo();
|
||||||
|
|
||||||
@ -166,6 +179,19 @@ test('Return the "http" formatted URL if "gitCredentials" is defined and reposit
|
|||||||
);
|
);
|
||||||
});
|
});
|
||||||
|
|
||||||
|
test('Return the "http" formatted URL if "gitCredentials" is defined and repositoryUrl is a "ssh" URL', async t => {
|
||||||
|
const {cwd} = await gitRepo();
|
||||||
|
|
||||||
|
t.is(
|
||||||
|
await getAuthUrl({
|
||||||
|
cwd,
|
||||||
|
env: {...env, GIT_CREDENTIALS: 'user:pass'},
|
||||||
|
options: {branch: 'master', repositoryUrl: 'ssh://git@host.null:2222/owner/repo.git'},
|
||||||
|
}),
|
||||||
|
'https://user:pass@host.null/owner/repo.git'
|
||||||
|
);
|
||||||
|
});
|
||||||
|
|
||||||
test('Return the "https" formatted URL if "gitCredentials" is defined with "GH_TOKEN"', async t => {
|
test('Return the "https" formatted URL if "gitCredentials" is defined with "GH_TOKEN"', async t => {
|
||||||
const {cwd} = await gitRepo();
|
const {cwd} = await gitRepo();
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user