package jwt import ( "testing" "github.com/DATA-DOG/go-sqlmock" "github.com/stretchr/testify/require" ) func TestCreateGenerator_Success_NoDB(t *testing.T) { gen, err := CreateGenerator( 15, 60, 5, "example.com", "secret", nil, ) require.NoError(t, err) require.NotNil(t, gen) } func TestCreateGenerator_Success_WithDB(t *testing.T) { db, mock, err := sqlmock.New() require.NoError(t, err) defer db.Close() gen, err := CreateGenerator( 15, 60, 5, "example.com", "secret", db, ) require.NoError(t, err) require.NotNil(t, gen) require.NoError(t, mock.ExpectationsWereMet()) } func TestCreateGenerator_InvalidInputs(t *testing.T) { tests := []struct { name string fn func() error }{ { "access expiry <= 0", func() error { _, err := CreateGenerator(0, 1, 1, "h", "s", nil) return err }, }, { "refresh expiry <= 0", func() error { _, err := CreateGenerator(1, 0, 1, "h", "s", nil) return err }, }, { "fresh expiry <= 0", func() error { _, err := CreateGenerator(1, 1, 0, "h", "s", nil) return err }, }, { "empty trustedHost", func() error { _, err := CreateGenerator(1, 1, 1, "", "s", nil) return err }, }, { "empty secretKey", func() error { _, err := CreateGenerator(1, 1, 1, "h", "", nil) return err }, }, } for _, tt := range tests { t.Run(tt.name, func(t *testing.T) { require.Error(t, tt.fn()) }) } }