Tests: Add unit tests
This commit is contained in:
parent
470694e774
commit
f9ea868582
1 changed files with 148 additions and 0 deletions
|
@ -5,11 +5,84 @@ import (
|
||||||
"net/http/httptest"
|
"net/http/httptest"
|
||||||
"testing"
|
"testing"
|
||||||
|
|
||||||
|
"github.com/photoprism/photoprism/pkg/authn"
|
||||||
|
|
||||||
"github.com/gin-gonic/gin"
|
"github.com/gin-gonic/gin"
|
||||||
|
|
||||||
"github.com/photoprism/photoprism/internal/form"
|
"github.com/photoprism/photoprism/internal/form"
|
||||||
)
|
)
|
||||||
|
|
||||||
|
func TestAuthLocal(t *testing.T) {
|
||||||
|
t.Run("Alice", func(t *testing.T) {
|
||||||
|
|
||||||
|
m := FindSessionByRefID("sessxkkcabch")
|
||||||
|
|
||||||
|
u := FindUserByName("alice")
|
||||||
|
|
||||||
|
frm := form.Login{
|
||||||
|
UserName: "alice",
|
||||||
|
Password: "Alice123!",
|
||||||
|
}
|
||||||
|
|
||||||
|
if err := AuthLocal(u, frm, m); err != nil {
|
||||||
|
t.Fatal(err)
|
||||||
|
}
|
||||||
|
})
|
||||||
|
t.Run("Wrong credentials", func(t *testing.T) {
|
||||||
|
|
||||||
|
m := FindSessionByRefID("sessxkkcabch")
|
||||||
|
|
||||||
|
u := FindUserByName("alice")
|
||||||
|
|
||||||
|
frm := form.Login{
|
||||||
|
UserName: "alice",
|
||||||
|
Password: "photoprism",
|
||||||
|
}
|
||||||
|
|
||||||
|
if err := AuthLocal(u, frm, m); err == nil {
|
||||||
|
t.Fatal("auth should fail")
|
||||||
|
}
|
||||||
|
})
|
||||||
|
t.Run("No login rights", func(t *testing.T) {
|
||||||
|
|
||||||
|
m := &Session{}
|
||||||
|
|
||||||
|
u := FindUserByName("friend")
|
||||||
|
|
||||||
|
u.CanLogin = false
|
||||||
|
|
||||||
|
frm := form.Login{
|
||||||
|
UserName: "friend",
|
||||||
|
Password: "!Friend321",
|
||||||
|
}
|
||||||
|
|
||||||
|
if err := AuthLocal(u, frm, m); err == nil {
|
||||||
|
t.Fatal("auth should fail")
|
||||||
|
}
|
||||||
|
|
||||||
|
u.CanLogin = true
|
||||||
|
})
|
||||||
|
t.Run("Authentication disabled", func(t *testing.T) {
|
||||||
|
|
||||||
|
m := &Session{}
|
||||||
|
|
||||||
|
u := FindUserByName("friend")
|
||||||
|
|
||||||
|
u.SetProvider(authn.ProviderNone)
|
||||||
|
|
||||||
|
frm := form.Login{
|
||||||
|
UserName: "friend",
|
||||||
|
Password: "!Friend321",
|
||||||
|
}
|
||||||
|
|
||||||
|
if err := AuthLocal(u, frm, m); err == nil {
|
||||||
|
t.Fatal("auth should fail")
|
||||||
|
}
|
||||||
|
|
||||||
|
u.SetProvider(authn.ProviderLocal)
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
func TestSessionLogIn(t *testing.T) {
|
func TestSessionLogIn(t *testing.T) {
|
||||||
const clientIp = "1.2.3.4"
|
const clientIp = "1.2.3.4"
|
||||||
|
|
||||||
|
@ -68,6 +141,81 @@ func TestSessionLogIn(t *testing.T) {
|
||||||
ctx.Request = httptest.NewRequest(http.MethodPost, "/api/v1/session", form.AsReader(frm))
|
ctx.Request = httptest.NewRequest(http.MethodPost, "/api/v1/session", form.AsReader(frm))
|
||||||
ctx.Request.RemoteAddr = "1.2.3.4"
|
ctx.Request.RemoteAddr = "1.2.3.4"
|
||||||
|
|
||||||
|
// Try to log in.
|
||||||
|
if err := m.LogIn(frm, ctx); err == nil {
|
||||||
|
t.Fatal("login should fail")
|
||||||
|
}
|
||||||
|
})
|
||||||
|
t.Run("Unknown user with token", func(t *testing.T) {
|
||||||
|
m := NewSession(UnixDay, UnixHour*6)
|
||||||
|
m.SetClientIP(clientIp)
|
||||||
|
|
||||||
|
// Create login form.
|
||||||
|
frm := form.Login{
|
||||||
|
AuthToken: "1jxf3jfn2k",
|
||||||
|
}
|
||||||
|
|
||||||
|
// Create HTTP request.
|
||||||
|
ctx.Request = httptest.NewRequest(http.MethodPost, "/api/v1/session", form.AsReader(frm))
|
||||||
|
ctx.Request.RemoteAddr = "1.2.3.4"
|
||||||
|
|
||||||
|
// Try to log in.
|
||||||
|
if err := m.LogIn(frm, ctx); err != nil {
|
||||||
|
t.Fatal(err)
|
||||||
|
}
|
||||||
|
})
|
||||||
|
|
||||||
|
t.Run("Unknown user with invalid token", func(t *testing.T) {
|
||||||
|
m := NewSession(UnixDay, UnixHour*6)
|
||||||
|
m.SetClientIP(clientIp)
|
||||||
|
|
||||||
|
// Create login form.
|
||||||
|
frm := form.Login{
|
||||||
|
AuthToken: "1jxf3jfxxx",
|
||||||
|
}
|
||||||
|
|
||||||
|
// Create HTTP request.
|
||||||
|
ctx.Request = httptest.NewRequest(http.MethodPost, "/api/v1/session", form.AsReader(frm))
|
||||||
|
ctx.Request.RemoteAddr = "1.2.3.4"
|
||||||
|
|
||||||
|
// Try to log in.
|
||||||
|
if err := m.LogIn(frm, ctx); err == nil {
|
||||||
|
t.Fatal("login should fail")
|
||||||
|
}
|
||||||
|
})
|
||||||
|
|
||||||
|
t.Run("Known user with token", func(t *testing.T) {
|
||||||
|
m := FindSessionByRefID("sessxkkcabch")
|
||||||
|
m.SetClientIP(clientIp)
|
||||||
|
|
||||||
|
// Create login form.
|
||||||
|
frm := form.Login{
|
||||||
|
AuthToken: "1jxf3jfn2k",
|
||||||
|
}
|
||||||
|
|
||||||
|
// Create HTTP request.
|
||||||
|
ctx.Request = httptest.NewRequest(http.MethodPost, "/api/v1/session", form.AsReader(frm))
|
||||||
|
ctx.Request.RemoteAddr = "1.2.3.4"
|
||||||
|
|
||||||
|
// Try to log in.
|
||||||
|
if err := m.LogIn(frm, ctx); err != nil {
|
||||||
|
t.Fatal(err)
|
||||||
|
}
|
||||||
|
})
|
||||||
|
|
||||||
|
t.Run("Known user with invalid token", func(t *testing.T) {
|
||||||
|
m := FindSessionByRefID("sessxkkcabch")
|
||||||
|
m.SetClientIP(clientIp)
|
||||||
|
|
||||||
|
// Create login form.
|
||||||
|
frm := form.Login{
|
||||||
|
AuthToken: "1jxf3jfxxx",
|
||||||
|
}
|
||||||
|
|
||||||
|
// Create HTTP request.
|
||||||
|
ctx.Request = httptest.NewRequest(http.MethodPost, "/api/v1/session", form.AsReader(frm))
|
||||||
|
ctx.Request.RemoteAddr = "1.2.3.4"
|
||||||
|
|
||||||
// Try to log in.
|
// Try to log in.
|
||||||
if err := m.LogIn(frm, ctx); err == nil {
|
if err := m.LogIn(frm, ctx); err == nil {
|
||||||
t.Fatal("login should fail")
|
t.Fatal("login should fail")
|
||||||
|
|
Loading…
Reference in a new issue