74 lines
1.7 KiB
Go
74 lines
1.7 KiB
Go
package api
|
|
|
|
import (
|
|
"context"
|
|
"encoding/json"
|
|
"net/http"
|
|
"net/http/httptest"
|
|
"testing"
|
|
|
|
"github.com/stretchr/testify/require"
|
|
)
|
|
|
|
func TestSettings_DefaultProviders(t *testing.T) {
|
|
api, _, err := setupAPIForTest()
|
|
require.NoError(t, err)
|
|
|
|
// Setup request
|
|
req := httptest.NewRequest(http.MethodGet, "http://localhost/settings", nil)
|
|
req.Header.Set("Content-Type", "application/json")
|
|
|
|
w := httptest.NewRecorder()
|
|
api.handler.ServeHTTP(w, req)
|
|
require.Equal(t, w.Code, http.StatusOK)
|
|
resp := Settings{}
|
|
require.NoError(t, json.NewDecoder(w.Body).Decode(&resp))
|
|
|
|
p := resp.ExternalProviders
|
|
|
|
require.False(t, p.Phone)
|
|
require.True(t, p.Email)
|
|
require.True(t, p.Azure)
|
|
require.True(t, p.Bitbucket)
|
|
require.True(t, p.Discord)
|
|
require.True(t, p.Facebook)
|
|
require.True(t, p.Notion)
|
|
require.True(t, p.Spotify)
|
|
require.True(t, p.Slack)
|
|
require.True(t, p.SlackOIDC)
|
|
require.True(t, p.Google)
|
|
require.True(t, p.Kakao)
|
|
require.True(t, p.Keycloak)
|
|
require.True(t, p.Linkedin)
|
|
require.True(t, p.LinkedinOIDC)
|
|
require.True(t, p.GitHub)
|
|
require.True(t, p.GitLab)
|
|
require.True(t, p.Twitch)
|
|
require.True(t, p.WorkOS)
|
|
require.True(t, p.Zoom)
|
|
|
|
}
|
|
|
|
func TestSettings_EmailDisabled(t *testing.T) {
|
|
api, config, err := setupAPIForTest()
|
|
require.NoError(t, err)
|
|
|
|
config.External.Email.Enabled = false
|
|
|
|
// Setup request
|
|
req := httptest.NewRequest(http.MethodGet, "http://localhost/settings", nil)
|
|
req.Header.Set("Content-Type", "application/json")
|
|
|
|
ctx := context.Background()
|
|
req = req.WithContext(ctx)
|
|
|
|
w := httptest.NewRecorder()
|
|
api.handler.ServeHTTP(w, req)
|
|
require.Equal(t, w.Code, http.StatusOK)
|
|
resp := Settings{}
|
|
require.NoError(t, json.NewDecoder(w.Body).Decode(&resp))
|
|
|
|
p := resp.ExternalProviders
|
|
require.False(t, p.Email)
|
|
}
|