mirror of
https://github.com/jc21/nginx-proxy-manager.git
synced 2024-08-30 18:22:48 +00:00
205 lines
4.3 KiB
Go
205 lines
4.3 KiB
Go
|
package acme
|
||
|
|
||
|
import (
|
||
|
"fmt"
|
||
|
"testing"
|
||
|
|
||
|
"npm/internal/config"
|
||
|
"npm/internal/entity/certificateauthority"
|
||
|
"npm/internal/entity/dnsprovider"
|
||
|
|
||
|
"github.com/stretchr/testify/assert"
|
||
|
)
|
||
|
|
||
|
// Tear up/down
|
||
|
/*
|
||
|
func TestMain(m *testing.M) {
|
||
|
config.Init(&version, &commit, &sentryDSN)
|
||
|
code := m.Run()
|
||
|
os.Exit(code)
|
||
|
}
|
||
|
*/
|
||
|
|
||
|
// TODO configurable
|
||
|
const acmeLogFile = "/data/logs/acme.sh.log"
|
||
|
|
||
|
func TestBuildCertRequestArgs(t *testing.T) {
|
||
|
type want struct {
|
||
|
args []string
|
||
|
err error
|
||
|
}
|
||
|
|
||
|
wellknown := config.Configuration.Acmesh.GetWellknown()
|
||
|
exampleKey := fmt.Sprintf("%s/example.com.key", config.Configuration.Acmesh.CertHome)
|
||
|
exampleChain := fmt.Sprintf("%s/a.crt", config.Configuration.Acmesh.CertHome)
|
||
|
|
||
|
tests := []struct {
|
||
|
name string
|
||
|
domains []string
|
||
|
method string
|
||
|
outputFullchainFile string
|
||
|
outputKeyFile string
|
||
|
dnsProvider *dnsprovider.Model
|
||
|
ca *certificateauthority.Model
|
||
|
want want
|
||
|
}{
|
||
|
{
|
||
|
name: "http single domain",
|
||
|
domains: []string{"example.com"},
|
||
|
method: "http",
|
||
|
outputFullchainFile: exampleChain,
|
||
|
outputKeyFile: exampleKey,
|
||
|
dnsProvider: nil,
|
||
|
ca: nil,
|
||
|
want: want{
|
||
|
args: []string{
|
||
|
"--issue",
|
||
|
"--fullchain-file",
|
||
|
exampleChain,
|
||
|
"--key-file",
|
||
|
exampleKey,
|
||
|
"-d",
|
||
|
"example.com",
|
||
|
"-w",
|
||
|
wellknown,
|
||
|
"--log",
|
||
|
acmeLogFile,
|
||
|
"--debug",
|
||
|
"2",
|
||
|
},
|
||
|
err: nil,
|
||
|
},
|
||
|
},
|
||
|
{
|
||
|
name: "http multiple domains",
|
||
|
domains: []string{"example.com", "example-two.com", "example-three.com"},
|
||
|
method: "http",
|
||
|
outputFullchainFile: exampleChain,
|
||
|
outputKeyFile: exampleKey,
|
||
|
dnsProvider: nil,
|
||
|
ca: nil,
|
||
|
want: want{
|
||
|
args: []string{
|
||
|
"--issue",
|
||
|
"--fullchain-file",
|
||
|
exampleChain,
|
||
|
"--key-file",
|
||
|
exampleKey,
|
||
|
"-d",
|
||
|
"example.com",
|
||
|
"-w",
|
||
|
wellknown,
|
||
|
"-d",
|
||
|
"example-two.com",
|
||
|
"-d",
|
||
|
"example-three.com",
|
||
|
"--log",
|
||
|
acmeLogFile,
|
||
|
"--debug",
|
||
|
"2",
|
||
|
},
|
||
|
err: nil,
|
||
|
},
|
||
|
},
|
||
|
{
|
||
|
name: "http single domain with dns provider",
|
||
|
domains: []string{"example.com"},
|
||
|
method: "http",
|
||
|
outputFullchainFile: exampleChain,
|
||
|
outputKeyFile: exampleKey,
|
||
|
dnsProvider: &dnsprovider.Model{
|
||
|
AcmeshName: "dns_cf",
|
||
|
},
|
||
|
ca: nil,
|
||
|
want: want{
|
||
|
args: nil,
|
||
|
err: ErrHTTPHasDNSProvider,
|
||
|
},
|
||
|
},
|
||
|
{
|
||
|
name: "dns single domain",
|
||
|
domains: []string{"example.com"},
|
||
|
method: "dns",
|
||
|
outputFullchainFile: exampleChain,
|
||
|
outputKeyFile: exampleKey,
|
||
|
dnsProvider: &dnsprovider.Model{
|
||
|
AcmeshName: "dns_cf",
|
||
|
},
|
||
|
ca: nil,
|
||
|
want: want{
|
||
|
args: []string{
|
||
|
"--issue",
|
||
|
"--fullchain-file",
|
||
|
exampleChain,
|
||
|
"--key-file",
|
||
|
exampleKey,
|
||
|
"-d",
|
||
|
"example.com",
|
||
|
"--dns",
|
||
|
"dns_cf",
|
||
|
"--log",
|
||
|
acmeLogFile,
|
||
|
"--debug",
|
||
|
"2",
|
||
|
},
|
||
|
err: nil,
|
||
|
},
|
||
|
},
|
||
|
{
|
||
|
name: "dns multiple domains",
|
||
|
domains: []string{"example.com", "example-two.com", "example-three.com"},
|
||
|
method: "dns",
|
||
|
outputFullchainFile: exampleChain,
|
||
|
outputKeyFile: exampleKey,
|
||
|
dnsProvider: &dnsprovider.Model{
|
||
|
AcmeshName: "dns_cf",
|
||
|
},
|
||
|
ca: nil,
|
||
|
want: want{
|
||
|
args: []string{
|
||
|
"--issue",
|
||
|
"--fullchain-file",
|
||
|
exampleChain,
|
||
|
"--key-file",
|
||
|
exampleKey,
|
||
|
"-d",
|
||
|
"example.com",
|
||
|
"--dns",
|
||
|
"dns_cf",
|
||
|
"-d",
|
||
|
"example-two.com",
|
||
|
"-d",
|
||
|
"example-three.com",
|
||
|
"--log",
|
||
|
acmeLogFile,
|
||
|
"--debug",
|
||
|
"2",
|
||
|
},
|
||
|
err: nil,
|
||
|
},
|
||
|
},
|
||
|
{
|
||
|
name: "dns single domain no provider",
|
||
|
domains: []string{"example.com"},
|
||
|
method: "dns",
|
||
|
outputFullchainFile: exampleChain,
|
||
|
outputKeyFile: exampleKey,
|
||
|
dnsProvider: nil,
|
||
|
ca: nil,
|
||
|
want: want{
|
||
|
args: nil,
|
||
|
err: ErrDNSNeedsDNSProvider,
|
||
|
},
|
||
|
},
|
||
|
}
|
||
|
|
||
|
for _, tt := range tests {
|
||
|
t.Run(tt.name, func(t *testing.T) {
|
||
|
args, err := buildCertRequestArgs(tt.domains, tt.method, tt.outputFullchainFile, tt.outputKeyFile, tt.dnsProvider, tt.ca, false)
|
||
|
|
||
|
assert.Equal(t, tt.want.args, args)
|
||
|
assert.Equal(t, tt.want.err, err)
|
||
|
})
|
||
|
}
|
||
|
}
|