2020-09-30 13:04:04 +03:00
package acme
import (
"fmt"
2021-03-04 20:08:03 +01:00
"os"
2020-09-30 13:04:04 +03:00
"path/filepath"
"testing"
"time"
"github.com/stretchr/testify/assert"
"github.com/stretchr/testify/require"
)
func TestLocalStore_GetAccount ( t * testing . T ) {
acmeFile := filepath . Join ( t . TempDir ( ) , "acme.json" )
email := "some42@email.com"
filePayload := fmt . Sprintf ( ` {
"test" : {
"Account" : {
"Email" : "%s"
}
}
} ` , email )
2021-03-04 20:08:03 +01:00
err := os . WriteFile ( acmeFile , [ ] byte ( filePayload ) , 0 o600 )
2020-09-30 13:04:04 +03:00
require . NoError ( t , err )
testCases := [ ] struct {
desc string
filename string
expected * Account
} {
{
desc : "empty file" ,
filename : filepath . Join ( t . TempDir ( ) , "acme-empty.json" ) ,
expected : nil ,
} ,
{
desc : "file with data" ,
filename : acmeFile ,
expected : & Account { Email : "some42@email.com" } ,
} ,
}
for _ , test := range testCases {
t . Run ( test . desc , func ( t * testing . T ) {
s := NewLocalStore ( test . filename )
account , err := s . GetAccount ( "test" )
require . NoError ( t , err )
assert . Equal ( t , test . expected , account )
} )
}
}
func TestLocalStore_SaveAccount ( t * testing . T ) {
acmeFile := filepath . Join ( t . TempDir ( ) , "acme.json" )
s := NewLocalStore ( acmeFile )
email := "some@email.com"
err := s . SaveAccount ( "test" , & Account { Email : email } )
require . NoError ( t , err )
time . Sleep ( 100 * time . Millisecond )
2021-03-04 20:08:03 +01:00
file , err := os . ReadFile ( acmeFile )
2020-09-30 13:04:04 +03:00
require . NoError ( t , err )
expected := ` {
"test" : {
"Account" : {
"Email" : "some@email.com" ,
"Registration" : null ,
"PrivateKey" : null ,
"KeyType" : ""
} ,
"Certificates" : null
}
} `
assert . Equal ( t , expected , string ( file ) )
}