Set a keyType to ACME if the account is stored with no KeyType
This commit is contained in:
parent
2d449f63e0
commit
d04b4fa2cc
3 changed files with 89 additions and 0 deletions
|
@ -202,6 +202,9 @@ func (a *ACME) leadershipListener(elected bool) error {
|
||||||
}
|
}
|
||||||
|
|
||||||
needRegister = true
|
needRegister = true
|
||||||
|
} else if len(account.KeyType) == 0 {
|
||||||
|
// Set the KeyType if not already defined in the account
|
||||||
|
account.KeyType = acmeprovider.GetKeyType(a.KeyType)
|
||||||
}
|
}
|
||||||
|
|
||||||
a.client, err = a.buildACMEClient(account)
|
a.client, err = a.buildACMEClient(account)
|
||||||
|
|
|
@ -309,6 +309,12 @@ func (p *Provider) initAccount() (*Account, error) {
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Set the KeyType if not already defined in the account
|
||||||
|
if len(p.account.KeyType) == 0 {
|
||||||
|
p.account.KeyType = GetKeyType(p.KeyType)
|
||||||
|
}
|
||||||
|
|
||||||
return p.account, nil
|
return p.account, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -8,6 +8,7 @@ import (
|
||||||
traefiktls "github.com/containous/traefik/tls"
|
traefiktls "github.com/containous/traefik/tls"
|
||||||
"github.com/containous/traefik/types"
|
"github.com/containous/traefik/types"
|
||||||
"github.com/stretchr/testify/assert"
|
"github.com/stretchr/testify/assert"
|
||||||
|
"github.com/xenolf/lego/acme"
|
||||||
)
|
)
|
||||||
|
|
||||||
func TestGetUncheckedCertificates(t *testing.T) {
|
func TestGetUncheckedCertificates(t *testing.T) {
|
||||||
|
@ -562,3 +563,82 @@ func TestUseBackOffToObtainCertificate(t *testing.T) {
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func TestInitAccount(t *testing.T) {
|
||||||
|
testCases := []struct {
|
||||||
|
desc string
|
||||||
|
account *Account
|
||||||
|
email string
|
||||||
|
keyType string
|
||||||
|
expectedAccount *Account
|
||||||
|
}{
|
||||||
|
{
|
||||||
|
desc: "Existing account with all information",
|
||||||
|
account: &Account{
|
||||||
|
Email: "foo@foo.net",
|
||||||
|
KeyType: acme.EC256,
|
||||||
|
},
|
||||||
|
expectedAccount: &Account{
|
||||||
|
Email: "foo@foo.net",
|
||||||
|
KeyType: acme.EC256,
|
||||||
|
},
|
||||||
|
},
|
||||||
|
{
|
||||||
|
desc: "Account nil",
|
||||||
|
email: "foo@foo.net",
|
||||||
|
keyType: "EC256",
|
||||||
|
expectedAccount: &Account{
|
||||||
|
Email: "foo@foo.net",
|
||||||
|
KeyType: acme.EC256,
|
||||||
|
},
|
||||||
|
},
|
||||||
|
{
|
||||||
|
desc: "Existing account with no email",
|
||||||
|
account: &Account{
|
||||||
|
KeyType: acme.RSA4096,
|
||||||
|
},
|
||||||
|
email: "foo@foo.net",
|
||||||
|
keyType: "EC256",
|
||||||
|
expectedAccount: &Account{
|
||||||
|
Email: "foo@foo.net",
|
||||||
|
KeyType: acme.EC256,
|
||||||
|
},
|
||||||
|
},
|
||||||
|
{
|
||||||
|
desc: "Existing account with no key type",
|
||||||
|
account: &Account{
|
||||||
|
Email: "foo@foo.net",
|
||||||
|
},
|
||||||
|
email: "bar@foo.net",
|
||||||
|
keyType: "EC256",
|
||||||
|
expectedAccount: &Account{
|
||||||
|
Email: "foo@foo.net",
|
||||||
|
KeyType: acme.EC256,
|
||||||
|
},
|
||||||
|
},
|
||||||
|
{
|
||||||
|
desc: "Existing account and provider with no key type",
|
||||||
|
account: &Account{
|
||||||
|
Email: "foo@foo.net",
|
||||||
|
},
|
||||||
|
email: "bar@foo.net",
|
||||||
|
expectedAccount: &Account{
|
||||||
|
Email: "foo@foo.net",
|
||||||
|
KeyType: acme.RSA4096,
|
||||||
|
},
|
||||||
|
},
|
||||||
|
}
|
||||||
|
for _, test := range testCases {
|
||||||
|
test := test
|
||||||
|
t.Run(test.desc, func(t *testing.T) {
|
||||||
|
t.Parallel()
|
||||||
|
|
||||||
|
acmeProvider := Provider{account: test.account, Configuration: &Configuration{Email: test.email, KeyType: test.keyType}}
|
||||||
|
|
||||||
|
actualAccount, err := acmeProvider.initAccount()
|
||||||
|
assert.Nil(t, err, "Init account in error")
|
||||||
|
assert.Equal(t, test.expectedAccount.Email, actualAccount.Email, "unexpected email account")
|
||||||
|
assert.Equal(t, test.expectedAccount.KeyType, actualAccount.KeyType, "unexpected keyType account")
|
||||||
|
})
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
Loading…
Add table
Reference in a new issue