Files
s3uploader/cmd/service/service_test.go
T
2023-06-28 06:57:07 +02:00

70 lines
1.5 KiB
Go

package main
import (
"os"
"syscall"
"testing"
"time"
mocks "gitlab.com/unboundsoftware/apex-mocks"
)
func TestMainFunc_Success(t *testing.T) {
os.Args = []string{"s3uploader", "--port", "7777", "--bucket", "test-bucket-somewhere", "--return-url", "https://example.org"}
go func() {
time.Sleep(time.Second)
_ = syscall.Kill(syscall.Getpid(), syscall.SIGTERM)
}()
main()
}
func TestMainFunc_Invalid_AWS_Config(t *testing.T) {
os.Args = []string{"s3uploader", "--port", "7777", "--bucket", "test-bucket-somewhere", "--return-url", "https://example.org"}
_ = os.Setenv("AWS_MAX_ATTEMPTS", "invalid")
defer func() {
_ = os.Unsetenv("AWS_MAX_ATTEMPTS")
}()
main()
}
func Test_start(t *testing.T) {
type args struct {
port int
bucket string
url string
}
tests := []struct {
name string
args args
wantErr bool
wantLogged []string
}{
{
name: "invalid port",
args: args{
port: 77777,
bucket: "some-bucket",
url: "https://example.org",
},
wantErr: false,
wantLogged: []string{
"info: Serving HTTP API on :77777",
"error: HTTP server failed",
"info: Shutdown of HTTP server complete",
},
},
}
for _, tt := range tests {
t.Run(tt.name, func(t *testing.T) {
logger := mocks.New()
CLI.Port = tt.args.port
CLI.Bucket = tt.args.bucket
CLI.ReturnURL = tt.args.url
if err := start(logger); (err != nil) != tt.wantErr {
t.Errorf("start() error = %v, wantErr %v", err, tt.wantErr)
}
logger.Check(t, tt.wantLogged)
})
}
}