Return errors on nil credentials, move code around

Signed-off-by: Vartan Benohanian <vartanbeno@gmail.com>
This commit is contained in:
Vartan Benohanian
2020-08-27 00:29:53 -04:00
parent c0f0cf8be6
commit c4faa00b94
6 changed files with 110 additions and 104 deletions
+24 -25
View File
@@ -3,65 +3,64 @@ package reddit
import (
"net/http"
"net/url"
"os"
"testing"
"github.com/stretchr/testify/require"
)
func TestWithHTTPClient(t *testing.T) {
_, err := NewClient(nil, WithHTTPClient(nil))
_, err := NewClient(&Credentials{}, WithHTTPClient(nil))
require.EqualError(t, err, "httpClient: cannot be nil")
_, err = NewClient(nil, WithHTTPClient(&http.Client{}))
_, err = NewClient(&Credentials{}, WithHTTPClient(&http.Client{}))
require.NoError(t, err)
}
func TestFromEnv(t *testing.T) {
os.Setenv("GO_REDDIT_CLIENT_ID", "id1")
defer os.Unsetenv("GO_REDDIT_CLIENT_ID")
// func TestFromEnv(t *testing.T) {
// os.Setenv("GO_REDDIT_CLIENT_ID", "id1")
// defer os.Unsetenv("GO_REDDIT_CLIENT_ID")
os.Setenv("GO_REDDIT_CLIENT_SECRET", "secret1")
defer os.Unsetenv("GO_REDDIT_CLIENT_SECRET")
// os.Setenv("GO_REDDIT_CLIENT_SECRET", "secret1")
// defer os.Unsetenv("GO_REDDIT_CLIENT_SECRET")
os.Setenv("GO_REDDIT_CLIENT_USERNAME", "username1")
defer os.Unsetenv("GO_REDDIT_CLIENT_USERNAME")
// os.Setenv("GO_REDDIT_CLIENT_USERNAME", "username1")
// defer os.Unsetenv("GO_REDDIT_CLIENT_USERNAME")
os.Setenv("GO_REDDIT_CLIENT_PASSWORD", "password1")
defer os.Unsetenv("GO_REDDIT_CLIENT_PASSWORD")
// os.Setenv("GO_REDDIT_CLIENT_PASSWORD", "password1")
// defer os.Unsetenv("GO_REDDIT_CLIENT_PASSWORD")
c, err := NewClient(nil, FromEnv)
require.NoError(t, err)
// c, err := NewClient(&Credentials{}, FromEnv)
// require.NoError(t, err)
type values struct {
id, secret, username, password string
}
// type values struct {
// id, secret, username, password string
// }
expect := values{"id1", "secret1", "username1", "password1"}
actual := values{c.ID, c.Secret, c.Username, c.Password}
require.Equal(t, expect, actual)
}
// expect := values{"id1", "secret1", "username1", "password1"}
// actual := values{c.ID, c.Secret, c.Username, c.Password}
// require.Equal(t, expect, actual)
// }
func TestWithBaseURL(t *testing.T) {
c, err := NewClient(nil, WithBaseURL(":"))
c, err := NewClient(&Credentials{}, WithBaseURL(":"))
urlErr, ok := err.(*url.Error)
require.True(t, ok)
require.Equal(t, "parse", urlErr.Op)
baseURL := "http://localhost:8080"
c, err = NewClient(nil, WithBaseURL(baseURL))
c, err = NewClient(&Credentials{}, WithBaseURL(baseURL))
require.NoError(t, err)
require.Equal(t, baseURL, c.BaseURL.String())
}
func TestWithTokenURL(t *testing.T) {
c, err := NewClient(nil, WithTokenURL(":"))
c, err := NewClient(&Credentials{}, WithTokenURL(":"))
urlErr, ok := err.(*url.Error)
require.True(t, ok)
require.Equal(t, "parse", urlErr.Op)
tokenURL := "http://localhost:8080/api/v1/access_token"
c, err = NewClient(nil, WithTokenURL(tokenURL))
c, err = NewClient(&Credentials{}, WithTokenURL(tokenURL))
require.NoError(t, err)
require.Equal(t, tokenURL, c.TokenURL.String())
}