2019-12-15 11:11:31 +03:00
// Copyright 2019 The Gitea Authors. All rights reserved.
// Use of this source code is governed by a MIT-style
// license that can be found in the LICENSE file.
package integrations
import (
"bytes"
"flag"
"io"
2019-12-17 04:49:07 +03:00
"net/url"
2019-12-15 11:11:31 +03:00
"os"
"testing"
"code.gitea.io/gitea/cmd"
"code.gitea.io/gitea/modules/setting"
2020-09-29 04:16:52 +03:00
"code.gitea.io/gitea/modules/util"
2019-12-15 11:11:31 +03:00
"github.com/urfave/cli"
)
func Test_CmdKeys ( t * testing . T ) {
2019-12-17 04:49:07 +03: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 20:46:10 +03:00
{
"with_key" ,
2019-12-17 04:49:07 +03: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+6SSXRM7AhftfQ0ZuoW5+gtinPrnmoOaSCEJbAiEiTO/BzOHgowiM=" } ,
false ,
2021-11-23 11:12:02 +03: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 04:49:07 +03: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 20:46:10 +03:00
realStdout := os . Stdout // Backup Stdout
2019-12-17 04:49:07 +03:00
r , w , _ := os . Pipe ( )
os . Stdout = w
2019-12-15 11:11:31 +03:00
2019-12-17 04:49:07 +03: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 20:46:10 +03:00
// Restore stdout
2019-12-17 04:49:07 +03:00
os . Stdout = realStdout
} )
}
} )
2019-12-15 11:11:31 +03:00
}