Hackaton: Add more unit tests, take 3 (#101525)
* serviceaccounts/secretscan: test Service more thoroughly * middleware/cookies: add tests for CookieOptions * anonymous/anonimpl: cover a couple more methods * components/imguploader: Implement WebDAV integration tests * components/apikeygen: also check IsValid method * bus: cover invalid callback signature cases * cloudmigration/objectstorage: add basic unit tests * login/social/connectors: add test case for GitHub OAuth fetch emails+orgs * expr/classic: cover more evaluator types in tests
This commit is contained in:
@@ -22,4 +22,8 @@ func TestApiKeyGen(t *testing.T) {
|
||||
keyHashed, err := util.EncodePassword(keyInfo.Key, keyInfo.Name)
|
||||
require.NoError(t, err)
|
||||
assert.Equal(t, result.HashedKey, keyHashed)
|
||||
|
||||
valid, err := IsValid(keyInfo, keyHashed)
|
||||
require.NoError(t, err)
|
||||
require.True(t, valid)
|
||||
}
|
||||
|
||||
@@ -2,43 +2,83 @@ package imguploader
|
||||
|
||||
import (
|
||||
"context"
|
||||
"net/http"
|
||||
"net/http/httptest"
|
||||
"strings"
|
||||
"testing"
|
||||
|
||||
"github.com/stretchr/testify/assert"
|
||||
"github.com/stretchr/testify/require"
|
||||
"golang.org/x/net/webdav"
|
||||
)
|
||||
|
||||
func TestUploadToWebdav(t *testing.T) {
|
||||
// Can be tested with this docker container: https://hub.docker.com/r/morrisjobke/webdav/
|
||||
t.Run("[Integration test] for external_image_store.webdav", func(t *testing.T) {
|
||||
t.Skip("Skip test [Integration test] for external_image_store.webdav")
|
||||
webdavUploader, _ := NewWebdavImageUploader("http://localhost:8888/webdav/", "test", "test", "")
|
||||
path, err := webdavUploader.Upload(context.Background(), "../../../public/img/logo_transparent_400x.png")
|
||||
t.Parallel()
|
||||
|
||||
t.Run("[Integration test] for external_image_store.webdav", func(t *testing.T) {
|
||||
t.Parallel()
|
||||
|
||||
handler := &webdav.Handler{
|
||||
FileSystem: webdav.Dir(t.TempDir()),
|
||||
LockSystem: webdav.NewMemLS(),
|
||||
Logger: func(r *http.Request, err error) {
|
||||
require.Equal(t, http.MethodPut, r.Method)
|
||||
require.NoError(t, err)
|
||||
},
|
||||
}
|
||||
|
||||
server := httptest.NewServer(handler)
|
||||
t.Cleanup(server.Close)
|
||||
|
||||
webdavUploader, err := NewWebdavImageUploader(server.URL, "test", "test", "")
|
||||
require.NoError(t, err)
|
||||
require.True(t, strings.HasPrefix(path, "http://localhost:8888/webdav/"))
|
||||
require.NotNil(t, webdavUploader)
|
||||
|
||||
path, err := webdavUploader.Upload(context.Background(), "../../../public/img/logo_transparent_400x.png")
|
||||
require.NoError(t, err)
|
||||
require.True(t, strings.HasPrefix(path, server.URL))
|
||||
})
|
||||
|
||||
t.Run("[Integration test] for external_image_store.webdav with public url", func(t *testing.T) {
|
||||
t.Skip("Skip test [Integration test] for external_image_store.webdav with public url")
|
||||
webdavUploader, _ := NewWebdavImageUploader("http://localhost:8888/webdav/", "test", "test", "http://publicurl:8888/webdav")
|
||||
path, err := webdavUploader.Upload(context.Background(), "../../../public/img/logo_transparent_400x.png")
|
||||
t.Parallel()
|
||||
|
||||
handler := &webdav.Handler{
|
||||
FileSystem: webdav.Dir(t.TempDir()),
|
||||
LockSystem: webdav.NewMemLS(),
|
||||
Logger: func(r *http.Request, err error) {
|
||||
require.Equal(t, http.MethodPut, r.Method)
|
||||
require.NoError(t, err)
|
||||
},
|
||||
}
|
||||
|
||||
server := httptest.NewServer(handler)
|
||||
t.Cleanup(server.Close)
|
||||
|
||||
webdavUploader, err := NewWebdavImageUploader(server.URL, "test", "test", "http://publicurl:8888/webdav")
|
||||
require.NoError(t, err)
|
||||
require.True(t, strings.HasPrefix(path, "http://publicurl:8888/webdav/"))
|
||||
require.NotNil(t, webdavUploader)
|
||||
|
||||
path, err := webdavUploader.Upload(context.Background(), "../../../public/img/logo_transparent_400x.png")
|
||||
require.NoError(t, err)
|
||||
require.True(t, strings.HasPrefix(path, "http://publicurl:8888/webdav/"))
|
||||
})
|
||||
}
|
||||
|
||||
func TestPublicURL(t *testing.T) {
|
||||
t.Parallel()
|
||||
|
||||
t.Run("Given a public URL with parameters, and no template", func(t *testing.T) {
|
||||
webdavUploader, _ := NewWebdavImageUploader("http://localhost:8888/webdav/", "test", "test", "http://cloudycloud.me/s/DOIFDOMV/download?files=")
|
||||
assert.Equal(t, "http://cloudycloud.me/s/DOIFDOMV/download/fileyfile.png?files=", webdavUploader.PublicURL("fileyfile.png"))
|
||||
t.Parallel()
|
||||
|
||||
webdavUploader, err := NewWebdavImageUploader("http://localhost:8888/webdav/", "test", "test", "http://cloudycloud.me/s/DOIFDOMV/download?files=")
|
||||
require.NoError(t, err)
|
||||
require.Equal(t, "http://cloudycloud.me/s/DOIFDOMV/download/fileyfile.png?files=", webdavUploader.PublicURL("fileyfile.png"))
|
||||
})
|
||||
|
||||
t.Run("Given a public URL with parameters, and a template", func(t *testing.T) {
|
||||
webdavUploader, _ := NewWebdavImageUploader("http://localhost:8888/webdav/", "test", "test", "http://cloudycloud.me/s/DOIFDOMV/download?files={{file}}")
|
||||
assert.Equal(t, "http://cloudycloud.me/s/DOIFDOMV/download?files=fileyfile.png", webdavUploader.PublicURL("fileyfile.png"))
|
||||
t.Parallel()
|
||||
|
||||
webdavUploader, err := NewWebdavImageUploader("http://localhost:8888/webdav/", "test", "test", "http://cloudycloud.me/s/DOIFDOMV/download?files={{file}}")
|
||||
require.NoError(t, err)
|
||||
require.Equal(t, "http://cloudycloud.me/s/DOIFDOMV/download?files=fileyfile.png", webdavUploader.PublicURL("fileyfile.png"))
|
||||
})
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user