2019-12-15 09:11:31 +01:00
// Copyright 2019 The Gitea Authors. All rights reserved.
2022-11-27 13:20:29 -05:00
// SPDX-License-Identifier: MIT
2019-12-15 09:11:31 +01:00
2022-09-02 15:18:23 -04:00
package integration
2019-12-15 09:11:31 +01:00
import (
2024-03-27 22:02:51 +01:00
"errors"
2019-12-17 01:49:07 +00:00
"net/url"
2024-03-27 22:02:51 +01:00
"os/exec"
2019-12-15 09:11:31 +01:00
"testing"
2025-03-27 19:40:14 +00:00
"forgejo.org/modules/setting"
"forgejo.org/modules/util"
2019-12-15 09:11:31 +01:00
2023-07-21 17:28:19 +08:00
"github.com/stretchr/testify/assert"
2024-07-30 19:41:10 +00:00
"github.com/stretchr/testify/require"
2019-12-15 09:11:31 +01:00
)
func Test_CmdKeys ( t * testing . T ) {
2019-12-17 01:49:07 +00:00
onGiteaRun ( t , func ( * testing . T , * url . URL ) {
tests := [ ] struct {
name string
args [ ] string
wantErr bool
expectedOutput string
} {
2025-06-01 22:16:37 +02:00
{ "test_empty_1" , [ ] string { "--username=git" , "--type=test" , "--content=test" } , true , "Command error: internal API error response, status=500, err=public key does not exist [id: 0]\n" } ,
{ "test_empty_2" , [ ] string { "-e" , "git" , "-u" , "git" , "-t" , "test" , "-k" , "test" } , true , "Command error: internal API error response, status=500, err=public key does not exist [id: 0]\n" } ,
2022-01-20 18:46:10 +01:00
{
"with_key" ,
2024-03-27 22:02:51 +01:00
[ ] string { "-e" , "git" , "-u" , "git" , "-t" , "ssh-rsa" , "-k" , "AAAAB3NzaC1yc2EAAAADAQABAAABgQDWVj0fQ5N8wNc0LVNA41wDLYJ89ZIbejrPfg/avyj3u/ZohAKsQclxG4Ju0VirduBFF9EOiuxoiFBRr3xRpqzpsZtnMPkWVWb+akZwBFAx8p+jKdy4QXR/SZqbVobrGwip2UjSrri1CtBxpJikojRIZfCnDaMOyd9Jp6KkujvniFzUWdLmCPxUE9zhTaPu0JsEP7MW0m6yx7ZUhHyfss+NtqmFTaDO+QlMR7L2QkDliN2Jl3Xa3PhuWnKJfWhdAq1Cw4oraKUOmIgXLkuiuxVQ6mD3AiFupkmfqdHq6h+uHHmyQqv3gU+/sD8GbGAhf6ftqhTsXjnv1Aj4R8NoDf9BS6KRkzkeun5UisSzgtfQzjOMEiJtmrep2ZQrMGahrXa+q4VKr0aKJfm+KlLfwm/JztfsBcqQWNcTURiCFqz+fgZw0Ey/de0eyMzldYTdXXNRYCKjs9bvBK+6SSXRM7AhftfQ0ZuoW5+gtinPrnmoOaSCEJbAiEiTO/BzOHgowiM=" } ,
2019-12-17 01:49:07 +00:00
false ,
2021-11-23 03:12:02 -05:00
"# gitea public key\ncommand=\"" + setting . AppPath + " --config=" + util . ShellEscape ( setting . CustomConf ) + " serv key-1\",no-port-forwarding,no-X11-forwarding,no-agent-forwarding,no-pty,no-user-rc,restrict ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABgQDWVj0fQ5N8wNc0LVNA41wDLYJ89ZIbejrPfg/avyj3u/ZohAKsQclxG4Ju0VirduBFF9EOiuxoiFBRr3xRpqzpsZtnMPkWVWb+akZwBFAx8p+jKdy4QXR/SZqbVobrGwip2UjSrri1CtBxpJikojRIZfCnDaMOyd9Jp6KkujvniFzUWdLmCPxUE9zhTaPu0JsEP7MW0m6yx7ZUhHyfss+NtqmFTaDO+QlMR7L2QkDliN2Jl3Xa3PhuWnKJfWhdAq1Cw4oraKUOmIgXLkuiuxVQ6mD3AiFupkmfqdHq6h+uHHmyQqv3gU+/sD8GbGAhf6ftqhTsXjnv1Aj4R8NoDf9BS6KRkzkeun5UisSzgtfQzjOMEiJtmrep2ZQrMGahrXa+q4VKr0aKJfm+KlLfwm/JztfsBcqQWNcTURiCFqz+fgZw0Ey/de0eyMzldYTdXXNRYCKjs9bvBK+6SSXRM7AhftfQ0ZuoW5+gtinPrnmoOaSCEJbAiEiTO/BzOHgowiM= user2@localhost\n" ,
2019-12-17 01:49:07 +00:00
} ,
2024-03-27 22:02:51 +01:00
{ "invalid" , [ ] string { "--not-a-flag=git" } , true , "Incorrect Usage: flag provided but not defined: -not-a-flag\n\n" } ,
2019-12-17 01:49:07 +00:00
}
for _ , tt := range tests {
t . Run ( tt . name , func ( t * testing . T ) {
2024-03-27 22:02:51 +01:00
out , err := runMainApp ( "keys" , tt . args ... )
var exitErr * exec . ExitError
if errors . As ( err , & exitErr ) {
t . Log ( string ( exitErr . Stderr ) )
}
2023-07-21 17:28:19 +08:00
if tt . wantErr {
2024-07-30 19:41:10 +00:00
require . Error ( t , err )
2025-06-01 22:16:37 +02:00
assert . Equal ( t , tt . expectedOutput , string ( exitErr . Stderr ) )
2023-07-21 17:28:19 +08:00
} else {
2024-07-30 19:41:10 +00:00
require . NoError ( t , err )
2025-06-01 22:16:37 +02:00
assert . Equal ( t , tt . expectedOutput , out )
2019-12-17 01:49:07 +00:00
}
} )
}
} )
2019-12-15 09:11:31 +01:00
}