(#3520) [cli] Hardened `auth add`: No longer fails with extraneous characters.

**The Solution:**
I have hardened `auth add` by stripping out everything from the third '/' to the end of the instance URL.

**The Problem:**
When adding an authorization for the peertube-cli, before this commit you could not have anything after the domain_name:port.

For instance, if there was a trailing / in your instance URL, before this commit it will always fail with

    expected 200 "OK", got 404 "Not Found".

It took me over 20 minutes to figure out that this was the problem.

See Issue #3091.
pull/3521/head
Theodore R. Smith 2020-12-27 09:13:11 -06:00
parent f88453e233
commit 8e76aa1d75
No known key found for this signature in database
GPG Key ID: EB24A91DD6125690
2 changed files with 23 additions and 0 deletions

View File

@ -66,6 +66,18 @@ describe('Test CLI wrapper', function () {
await execCLI(`${env} ${cmd} auth add -u ${server.url} -U user_1 -p super_password`)
})
it('Should not fail to add a user if there is a slash at the end of the instance URL', async function () {
this.timeout(60000)
const env = getEnvCli(server)
let fullServerURL
fullServerURL = server.url + '/'
await execCLI(`${env} ${cmd} auth add -u ${fullServerURL} -U user_1 -p super_password`)
fullServerURL = server.url + '/asdfasdf'
await execCLI(`${env} ${cmd} auth add -u ${fullServerURL} -U user_1 -p super_password`)
})
it('Should default to this user', async function () {
this.timeout(60000)

View File

@ -80,8 +80,19 @@ program
}
}
}, async (_, result) => {
const stripExtraneousFromPeerTubeUrl = function (url: string) {
// Get everything before the 3rd /.
const urlLength: number = url.includes('/', 8) ? url.indexOf('/', 8) : url.length
return url.substr(0, urlLength)
}
// Check credentials
try {
// Strip out everything after the domain:port.
// @see https://github.com/Chocobozzz/PeerTube/issues/3520
result.url = stripExtraneousFromPeerTubeUrl(result.url)
await getAccessToken(result.url, result.username, result.password)
} catch (err) {
console.error(err.message)