2019-12-15 03:11:31 -05:00
// Copyright 2019 The Gitea Authors. All rights reserved.
2022-11-27 13:20:29 -05:00
// SPDX-License-Identifier: MIT
2019-12-15 03:11:31 -05:00
2022-09-02 15:18:23 -04:00
package integration
2019-12-15 03:11:31 -05:00
import (
"bytes"
"flag"
"io"
2019-12-16 20:49:07 -05:00
"net/url"
2019-12-15 03:11:31 -05:00
"os"
"testing"
"code.gitea.io/gitea/cmd"
"code.gitea.io/gitea/modules/setting"
2020-09-28 21:16:52 -04:00
"code.gitea.io/gitea/modules/util"
2019-12-15 03:11:31 -05:00
"github.com/urfave/cli"
)
func Test_CmdKeys ( t * testing . T ) {
2019-12-16 20:49:07 -05:00
onGiteaRun ( t , func ( * testing . T , * url . URL ) {
tests := [ ] struct {
name string
args [ ] string
wantErr bool
expectedOutput string
} {
{ "test_empty_1" , [ ] string { "keys" , "--username=git" , "--type=test" , "--content=test" } , true , "" } ,
{ "test_empty_2" , [ ] string { "keys" , "-e" , "git" , "-u" , "git" , "-t" , "test" , "-k" , "test" } , true , "" } ,
2022-01-20 12:46:10 -05:00
{
"with_key" ,
2019-12-16 20:49:07 -05:00
[ ] string { "keys" , "-e" , "git" , "-u" , "git" , "-t" , "ssh-rsa" , "-k" , " AAAAB3NzaC1yc2EAAAADAQABAAABgQDWVj0fQ5N8wNc0LVNA41wDLYJ89ZIbejrPfg / avyj3u / ZohAKsQclxG4Ju0VirduBFF9EOiuxoiFBRr3xRpqzpsZtnMPkWVWb + akZwBFAx8p + jKdy4QXR / SZqbVobrGwip2UjSrri1CtBxpJikojRIZfCnDaMOyd9Jp6KkujvniFzUWdLmCPxUE9zhTaPu0JsEP7MW0m6yx7ZUhHyfss + NtqmFTaDO + QlMR7L2QkDliN2Jl3Xa3PhuWnKJfWhdAq1Cw4oraKUOmIgXLkuiuxVQ6mD3AiFupkmfqdHq6h + uHHmyQqv3gU + / sD8GbGAhf6ftqhTsXjnv1Aj4R8NoDf9BS6KRkzkeun5UisSzgtfQzjOMEiJtmrep2ZQrMGahrXa + q4VKr0aKJfm + KlLfwm / JztfsBcqQWNcTURiCFqz + fgZw0Ey / de0eyMzldYTdXXNRYCKjs9bvBK + 6 SSXRM7AhftfQ0ZuoW5 + gtinPrnmoOaSCEJbAiEiTO / BzOHgowiM = " } ,
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 + 6 SSXRM7AhftfQ0ZuoW5 + gtinPrnmoOaSCEJbAiEiTO / BzOHgowiM = user2 @ localhost \ n " ,
2019-12-16 20:49:07 -05:00
} ,
{ "invalid" , [ ] string { "keys" , "--not-a-flag=git" } , true , "Incorrect Usage: flag provided but not defined: -not-a-flag\n\n" } ,
}
for _ , tt := range tests {
t . Run ( tt . name , func ( t * testing . T ) {
2022-01-20 12:46:10 -05:00
realStdout := os . Stdout // Backup Stdout
2019-12-16 20:49:07 -05:00
r , w , _ := os . Pipe ( )
os . Stdout = w
2019-12-15 03:11:31 -05:00
2019-12-16 20:49:07 -05:00
set := flag . NewFlagSet ( "keys" , 0 )
_ = set . Parse ( tt . args )
context := cli . NewContext ( & cli . App { Writer : os . Stdout } , set , nil )
err := cmd . CmdKeys . Run ( context )
if ( err != nil ) != tt . wantErr {
t . Errorf ( "CmdKeys.Run() error = %v, wantErr %v" , err , tt . wantErr )
}
w . Close ( )
var buf bytes . Buffer
io . Copy ( & buf , r )
commandOutput := buf . String ( )
if tt . expectedOutput != commandOutput {
t . Errorf ( "expectedOutput: %#v, commandOutput: %#v" , tt . expectedOutput , commandOutput )
}
2022-01-20 12:46:10 -05:00
// Restore stdout
2019-12-16 20:49:07 -05:00
os . Stdout = realStdout
} )
}
} )
2019-12-15 03:11:31 -05:00
}