diff --git a/src/internal/external_medias/external_medias_test.go b/src/internal/external_medias/external_medias_test.go index 2651ba3..519823a 100644 --- a/src/internal/external_medias/external_medias_test.go +++ b/src/internal/external_medias/external_medias_test.go @@ -37,13 +37,13 @@ func TestAddExternalMedias(t *testing.T) { } // Add it - if err := media.Add(db); err != nil { + if err := media.Upsert(db); err != nil { t.Fatalf("failed to add external media: %q", err) } // Update the IDs media.IDs = []string{"1", "2", "3", "4"} - if err := media.Update(db); err != nil { + if err := media.Upsert(db); err != nil { t.Fatalf("failed to update the external media: %q", err) } diff --git a/src/internal/movies/movies_test.go b/src/internal/movies/movies_test.go index d2797b1..d92fe39 100644 --- a/src/internal/movies/movies_test.go +++ b/src/internal/movies/movies_test.go @@ -1,6 +1,7 @@ package movies import ( + "database/sql" "fmt" "os" "testing" @@ -11,7 +12,9 @@ import ( _ "github.com/mattes/migrate/driver/postgres" "github.com/odwrtw/polochon/lib" "github.com/odwrtw/polochon/modules/mock" - "gitlab.quimbo.fr/odwrtw/canape-sql/sqly" + "gitlab.quimbo.fr/odwrtw/canape-sql/src/internal/config" + "gitlab.quimbo.fr/odwrtw/canape-sql/src/internal/sqly" + "gitlab.quimbo.fr/odwrtw/canape-sql/src/internal/web" ) var db *sqlx.DB @@ -31,6 +34,15 @@ func init() { func TestIntegrate(t *testing.T) { sqly.RunWithLastestMigration(db, pgdsn, t, func(db *sqlx.DB, t *testing.T) { + log := logrus.NewEntry(logrus.New()) + env := web.NewEnv(web.EnvParams{ + Database: db, + // Auth: authorizer, + Log: log, + Config: &config.Config{ + PublicDir: "/tmp", + }, + }) detailer, _ := mock.NewDetailer(nil) polochonConfig := polochon.MovieConfig{ Detailers: []polochon.Detailer{ @@ -41,11 +53,11 @@ func TestIntegrate(t *testing.T) { Movie: polochon.Movie{ MovieConfig: polochonConfig, ImdbID: "tt12345", + Genres: []string{}, }, } - log := logrus.NewEntry(logrus.New()) - err := movie.GetDetails(db, log) + err := movie.GetDetails(env, false) if err != nil { t.Fatal(err) } @@ -57,7 +69,7 @@ func TestIntegrate(t *testing.T) { ImdbID: "tt12345", }, } - err = movie.Get(db) + err = movie.Get(env) if err != nil { t.Fatal(err) } @@ -72,8 +84,8 @@ func TestIntegrate(t *testing.T) { } // Get it again - err = movie.Get(db) - if err != ErrNotFound { + err = movie.Get(env) + if err != sql.ErrNoRows { t.Fatalf("Unexpected error: %q", err) } }) diff --git a/src/internal/shows/shows_test.go b/src/internal/shows/shows_test.go index b7cdba9..7c411dd 100644 --- a/src/internal/shows/shows_test.go +++ b/src/internal/shows/shows_test.go @@ -5,15 +5,16 @@ import ( "os" "testing" - "gitlab.quimbo.fr/odwrtw/canape-sql/sqly" - "gitlab.quimbo.fr/odwrtw/canape-sql/users" - "github.com/Sirupsen/logrus" "github.com/jmoiron/sqlx" _ "github.com/lib/pq" _ "github.com/mattes/migrate/driver/postgres" "github.com/odwrtw/polochon/lib" "github.com/odwrtw/polochon/modules/mock" + "gitlab.quimbo.fr/odwrtw/canape-sql/src/internal/auth" + "gitlab.quimbo.fr/odwrtw/canape-sql/src/internal/sqly" + "gitlab.quimbo.fr/odwrtw/canape-sql/src/internal/users" + "gitlab.quimbo.fr/odwrtw/canape-sql/src/internal/web" ) var db *sqlx.DB @@ -89,8 +90,40 @@ func TestIntegrate(t *testing.T) { t.Fatalf("Unexpected error: %q", err) } }) - } + +// UserBackend represents the data backend to get the user +type UserBackend struct { + Database *sqlx.DB +} + +// Get gets the username from the UserBackend +func (b *UserBackend) Get(username string) (auth.User, error) { + return users.Get(b.Database, username) +} + +func getEnv(db *sqlx.DB) *web.Env { + uBackend := &UserBackend{Database: db} + + authParams := auth.Params{ + Backend: uBackend, + Pepper: "pepper", + Cost: 10, + Secret: "secret", + } + authorizer := auth.New(authParams) + + log := logrus.NewEntry(logrus.New()) + env := web.NewEnv(web.EnvParams{ + Database: db, + Auth: authorizer, + Log: log, + // Config: cf, + }) + + return env +} + func TestTrackedShow(t *testing.T) { sqly.RunWithLastestMigration(db, pgdsn, t, func(db *sqlx.DB, t *testing.T) { detailer, _ := mock.NewDetailer(nil) @@ -113,6 +146,18 @@ func TestTrackedShow(t *testing.T) { } u := &users.User{Name: "plop"} + env := getEnv(db) + + u.Hash, err = env.Auth.GenHash("pass") + if err != nil { + t.Fatal(err) + } + + err = u.NewConfig() + if err != nil { + t.Fatal(err) + } + err = u.Add(db) if err != nil { t.Fatal(err) diff --git a/src/internal/users/users_test.go b/src/internal/users/users_test.go index 385c883..b1add23 100644 --- a/src/internal/users/users_test.go +++ b/src/internal/users/users_test.go @@ -5,8 +5,11 @@ import ( "os" "testing" - "gitlab.quimbo.fr/odwrtw/canape-sql/sqly" + "gitlab.quimbo.fr/odwrtw/canape-sql/src/internal/auth" + "gitlab.quimbo.fr/odwrtw/canape-sql/src/internal/sqly" + "gitlab.quimbo.fr/odwrtw/canape-sql/src/internal/web" + "github.com/Sirupsen/logrus" "github.com/jmoiron/sqlx" "github.com/lib/pq" _ "github.com/mattes/migrate/driver/postgres" @@ -32,7 +35,19 @@ func TestUser(t *testing.T) { // Add a new user u := &User{Name: "plop", Hash: "plop"} - err := u.Add(db) + var err error + env := getEnv(db) + + u.Hash, err = env.Auth.GenHash("test") + if err != nil { + t.Fatal(err) + } + + err = u.NewConfig() + if err != nil { + t.Fatal(err) + } + err = u.Add(db) if err != nil { t.Fatal(err) } @@ -99,7 +114,19 @@ func TestTokenAddDelete(t *testing.T) { sqly.RunWithLastestMigration(db, pgdsn, t, func(db *sqlx.DB, t *testing.T) { // Add a new user u := &User{Name: "plop", Hash: "plop"} - err := u.Add(db) + var err error + env := getEnv(db) + + u.Hash, err = env.Auth.GenHash("test") + if err != nil { + t.Fatal(err) + } + + err = u.NewConfig() + if err != nil { + t.Fatal(err) + } + err = u.Add(db) if err != nil { t.Fatal(err) } @@ -155,11 +182,60 @@ func TestTokenAddDelete(t *testing.T) { }) } +// UserBackend represents the data backend to get the user +type UserBackend struct { + Database *sqlx.DB +} + +// Get gets the username from the UserBackend +func (b *UserBackend) Get(username string) (auth.User, error) { + return Get(b.Database, username) +} + +func getEnv(db *sqlx.DB) *web.Env { + uBackend := &UserBackend{Database: db} + + authParams := auth.Params{ + Backend: uBackend, + Pepper: "pepper", + Cost: 10, + Secret: "secret", + } + authorizer := auth.New(authParams) + + log := logrus.NewEntry(logrus.New()) + env := web.NewEnv(web.EnvParams{ + Database: db, + Auth: authorizer, + Log: log, + // Config: cf, + }) + + return env +} + func TestTokenCheck(t *testing.T) { sqly.RunWithLastestMigration(db, pgdsn, t, func(db *sqlx.DB, t *testing.T) { u := &User{Name: "plop", Hash: "plop"} - u.Add(db) + var err error + env := getEnv(db) + + u.Hash, err = env.Auth.GenHash("test") + if err != nil { + t.Fatal(err) + } + + err = u.NewConfig() + if err != nil { + t.Fatal(err) + } + if err = u.Add(db); err != nil { + t.Fatal(err) + } token, err := u.NewToken(db) + if err != nil { + t.Fatal(err) + } ok, err := u.CheckToken(db, token.Value) if err != nil { @@ -183,10 +259,29 @@ func TestTokenCheck(t *testing.T) { func TestAutoUpdateCols(t *testing.T) { sqly.RunWithLastestMigration(db, pgdsn, t, func(db *sqlx.DB, t *testing.T) { - u := &User{Name: "plop", Hash: "plop"} - u.Add(db) + u := &User{Name: "plop"} + var err error + env := getEnv(db) + + u.Hash, err = env.Auth.GenHash("pass") + if err != nil { + t.Fatal(err) + } + + err = u.NewConfig() + if err != nil { + t.Fatal(err) + } + + err = u.Add(db) + if err != nil { + t.Fatal(err) + } u.Name = "toto" - u.Update(db) + err = u.Update(db) + if err != nil { + t.Fatal(err) + } if !u.Created.Before(u.Updated) { t.Fatalf("colum updated not auto updated on table users") @@ -197,9 +292,25 @@ func TestAutoUpdateCols(t *testing.T) { func TestConfig(t *testing.T) { sqly.RunWithLastestMigration(db, pgdsn, t, func(db *sqlx.DB, t *testing.T) { u := &User{Name: "plop", Hash: "plop"} - u.Add(db) + env := getEnv(db) - u, err := Get(db, "plop") + var err error + u.Hash, err = env.Auth.GenHash("pass") + if err != nil { + t.Fatal(err) + } + + err = u.NewConfig() + if err != nil { + t.Fatal(err) + } + + err = u.Add(db) + if err != nil { + t.Fatal(err) + } + + u, err = Get(db, "plop") if err != nil { t.Fatal(err) }