本文整理汇总了Golang中github.com/ardanlabs/kit/db.NewMGO函数的典型用法代码示例。如果您正苦于以下问题:Golang NewMGO函数的具体用法?Golang NewMGO怎么用?Golang NewMGO使用的例子?那么恭喜您, 这里精选的函数代码示例或许可以为您提供帮助。
在下文中一共展示了NewMGO函数的15个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的Golang代码示例。
示例1: TestLoginUser
// TestLoginUser validates a user can login and not after changes.
func TestLoginUser(t *testing.T) {
tests.ResetLog()
defer tests.DisplayLog()
db, err := db.NewMGO(tests.Context, tests.TestSession)
if err != nil {
t.Fatalf("\t%s\tShould be able to get a Mongo session : %v", tests.Failed, err)
}
defer db.CloseMGO(tests.Context)
var publicID string
defer func() {
if err := removeUser(db, publicID); err != nil {
t.Fatalf("\t%s\tShould be able to remove the test user : %v", tests.Failed, err)
}
t.Logf("\t%s\tShould be able to remove the test user.", tests.Success)
}()
t.Log("Given the need to test user login.")
{
t.Log("\tWhen using a new user")
{
u1, err := auth.NewUser(auth.NUser{
Status: auth.StatusActive,
FullName: "Test Kennedy",
Email: "[email protected]",
Password: "_Password124",
})
if err != nil {
t.Fatalf("\t%s\tShould be able to build a new user : %v", tests.Failed, err)
}
t.Logf("\t%s\tShould be able to build a new user.", tests.Success)
if err := auth.CreateUser(tests.Context, db, u1); err != nil {
t.Fatalf("\t%s\tShould be able to create a user : %v", tests.Failed, err)
}
t.Logf("\t%s\tShould be able to create a user.", tests.Success)
// We need to do this so we can clean up after.
publicID = u1.PublicID
if _, err := auth.LoginUser(tests.Context, db, u1.Email, "_Password124"); err != nil {
t.Errorf("\t%s\tShould be able to login the user : %v", tests.Failed, err)
} else {
t.Logf("\t%s\tShould be able to login the user.", tests.Success)
}
if err := auth.UpdateUserPassword(tests.Context, db, u1, "password890"); err != nil {
t.Fatalf("\t%s\tShould be able to update the user password : %v", tests.Failed, err)
}
t.Logf("\t%s\tShould be able to update the user password.", tests.Success)
if _, err := auth.LoginUser(tests.Context, db, u1.Email, "_Password124"); err == nil {
t.Errorf("\t%s\tShould Not be able to login the user.", tests.Failed)
} else {
t.Logf("\t%s\tShould Not be able to login the user.", tests.Success)
}
}
}
}
示例2: runCreate
// runCreate is the code that implements the create command.
func runCreate(cmd *cobra.Command, args []string) {
cmd.Printf("Creating User : Name[%s] Email[%s] Pass[%s]\n", create.name, create.email, create.pass)
if create.name == "" && create.email == "" && create.pass == "" {
cmd.Help()
return
}
u, err := auth.NewUser(auth.NUser{
Status: auth.StatusActive,
FullName: create.name,
Email: create.email,
Password: create.pass,
})
if err != nil {
cmd.Println("Creating User : ", err)
return
}
db := db.NewMGO()
defer db.CloseMGO()
if err := auth.CreateUser("", db, u); err != nil {
cmd.Println("Creating User : ", err)
return
}
webTok, err := auth.CreateWebToken("", db, u, 24*365*time.Hour)
if err != nil {
cmd.Println("Creating User : ", err)
return
}
cmd.Printf("\nToken: %s\n\n", webTok)
}
示例3: TestInvalidWebTokens
// TestInvalidWebTokens tests create an invalid web token and tests it fails.
func TestInvalidWebTokens(t *testing.T) {
tests.ResetLog()
defer tests.DisplayLog()
db, err := db.NewMGO(tests.Context, tests.TestSession)
if err != nil {
t.Fatalf("\t%s\tShould be able to get a Mongo session : %v", tests.Failed, err)
}
defer db.CloseMGO(tests.Context)
tokens := []string{
"",
"6dcda2da-92c3-11e5-8994-feff819cdc9f",
"OGY4OGI3YWQtZjc5Ny00ODI1LWI0MmUtMjIwZTY5ZDQxYjMzOmFKT2U1b0pFZlZ4cWUrR0JONEl0WlhmQTY0K3JsN2VGcmM2MVNQMkV1WVE9",
}
t.Log("Given the need to validate bad web tokens don't validate.")
{
for _, token := range tokens {
t.Logf("\tWhen using token [%s]", token)
{
if _, err := auth.ValidateWebToken(tests.Context, db, token); err == nil {
t.Errorf("\t%s\tShould Not be able to validate the web token : %v", tests.Failed, err)
} else {
t.Logf("\t%s\tShould Not be able to validate the web token.", tests.Success)
}
}
}
}
}
示例4: Mongo
// Mongo handles session management.
func Mongo(h app.Handler) app.Handler {
// Check if mongodb is configured.
dbName, err := cfg.String(cfgMongoDB)
if err != nil {
return func(c *app.Context) error {
log.Dev(c.SessionID, "Mongo", "******> Mongo Not Configured")
return h(c)
}
}
// Wrap the handlers inside a session copy/close.
return func(c *app.Context) error {
mgoDB, err := db.NewMGO("Mongo", dbName)
if err != nil {
log.Error(c.SessionID, "Mongo", err, "Method[%s] URL[%s] RADDR[%s]", c.Request.Method, c.Request.URL.Path, c.Request.RemoteAddr)
return app.ErrDBNotConfigured
}
log.Dev(c.SessionID, "Mongo", "******> Capture Mongo Session")
c.DB = mgoDB
defer func() {
log.Dev(c.SessionID, "Mongo", "******> Release Mongo Session")
mgoDB.CloseMGO("Mongo")
}()
return h(c)
}
}
示例5: runStatus
// runStatus is the code that implements the status command.
func runStatus(cmd *cobra.Command, args []string) {
cmd.Printf("Status User : Pid[%s] Email[%s] Active[%v]\n", status.pid, status.email, status.active)
if status.pid == "" && status.email == "" {
cmd.Help()
return
}
db := db.NewMGO()
defer db.CloseMGO()
var publicID string
if status.pid != "" {
publicID = status.pid
} else {
u, err := auth.GetUserByEmail("", db, status.email, false)
if err != nil {
cmd.Println("Status User : ", err)
return
}
publicID = u.PublicID
}
st := auth.StatusDisabled
if status.active {
st = auth.StatusActive
}
if err := auth.UpdateUserStatus("", db, publicID, st); err != nil {
cmd.Println("Status User : ", err)
return
}
cmd.Println("Status User : Updated")
}
示例6: TestDisableUser
// TestDisableUser test the disabling of a user.
func TestDisableUser(t *testing.T) {
tests.ResetLog()
defer tests.DisplayLog()
db, err := db.NewMGO(tests.Context, tests.TestSession)
if err != nil {
t.Fatalf("\t%s\tShould be able to get a Mongo session : %v", tests.Failed, err)
}
defer db.CloseMGO(tests.Context)
var publicID string
defer func() {
if err := removeUser(db, publicID); err != nil {
t.Fatalf("\t%s\tShould be able to remove the test user : %v", tests.Failed, err)
}
t.Logf("\t%s\tShould be able to remove the test user.", tests.Success)
}()
t.Log("Given the need to update a user.")
{
t.Log("\tWhen using an existing user.")
{
u1, err := auth.NewUser(auth.NUser{
Status: auth.StatusActive,
FullName: "Test Kennedy",
Email: "[email protected]",
Password: "_Password124",
})
if err != nil {
t.Fatalf("\t%s\tShould be able to build a new user : %v", tests.Failed, err)
}
t.Logf("\t%s\tShould be able to build a new user.", tests.Success)
if err := auth.CreateUser(tests.Context, db, u1); err != nil {
t.Fatalf("\t%s\tShould be able to create a user : %v", tests.Failed, err)
}
t.Logf("\t%s\tShould be able to create a user.", tests.Success)
// We need to do this so we can clean up after.
publicID = u1.PublicID
u2, err := auth.GetUserByPublicID(tests.Context, db, u1.PublicID, true)
if err != nil {
t.Fatalf("\t%s\tShould be able to retrieve the user by PublicID : %v", tests.Failed, err)
}
t.Logf("\t%s\tShould be able to retrieve the user by PublicID.", tests.Success)
if err := auth.UpdateUserStatus(tests.Context, db, u2.PublicID, auth.StatusDisabled); err != nil {
t.Fatalf("\t%s\tShould be able to disable the user : %v", tests.Failed, err)
}
t.Logf("\t%s\tShould be able to disable the user.", tests.Success)
if _, err := auth.GetUserByPublicID(tests.Context, db, u1.PublicID, true); err == nil {
t.Fatalf("\t%s\tShould Not be able to retrieve the user by PublicID.", tests.Failed)
}
t.Logf("\t%s\tShould Not be able to retrieve the user by PublicID.", tests.Success)
}
}
}
示例7: TestExpiredWebToken
// TestExpiredWebToken tests create a web token and tests when it expires.
func TestExpiredWebToken(t *testing.T) {
tests.ResetLog()
defer tests.DisplayLog()
db, err := db.NewMGO(tests.Context, tests.TestSession)
if err != nil {
t.Fatalf("\t%s\tShould be able to get a Mongo session : %v", tests.Failed, err)
}
defer db.CloseMGO(tests.Context)
var publicID string
defer func() {
if err := removeUser(db, publicID); err != nil {
t.Fatalf("\t%s\tShould be able to remove the test user : %v", tests.Failed, err)
}
t.Logf("\t%s\tShould be able to remove the test user.", tests.Success)
}()
t.Log("Given the need to validate web tokens expire.")
{
t.Log("\tWhen using a new user.")
{
u1, err := auth.NewUser(auth.NUser{
Status: auth.StatusActive,
FullName: "Test Kennedy",
Email: "[email protected]",
Password: "_Password124",
})
if err != nil {
t.Fatalf("\t%s\tShould be able to build a new user : %v", tests.Failed, err)
}
t.Logf("\t%s\tShould be able to build a new user.", tests.Success)
if err := auth.CreateUser(tests.Context, db, u1); err != nil {
t.Fatalf("\t%s\tShould be able to create a user : %v", tests.Failed, err)
}
t.Logf("\t%s\tShould be able to create a user.", tests.Success)
// We need to do this so we can clean up after.
publicID = u1.PublicID
webTok, err := auth.CreateWebToken(tests.Context, db, u1, 1*time.Millisecond)
if err != nil {
t.Fatalf("\t%s\tShould be able to create a web token : %v", tests.Failed, err)
}
t.Logf("\t%s\tShould be able to create a web token.", tests.Success)
if _, err := auth.ValidateWebToken(tests.Context, db, webTok); err == nil {
t.Fatalf("\t%s\tShould Not be able to validate the web token : %v", tests.Failed, err)
}
t.Logf("\t%s\tShould Not be able to validate the web token.", tests.Success)
}
}
}
示例8: TestGetLatest
// TestGetLatest tests the retrieval of the latest session.
func TestGetLatest(t *testing.T) {
tests.ResetLog()
defer tests.DisplayLog()
db, err := db.NewMGO(tests.Context, tests.TestSession)
if err != nil {
t.Fatalf("\t%s\tShould be able to get a Mongo session : %v", tests.Failed, err)
}
defer db.CloseMGO(tests.Context)
defer func() {
if err := removeSessions(db); err != nil {
t.Errorf("\t%s\tShould be able to remove all sessions : %v", tests.Failed, err)
}
t.Logf("\t%s\tShould be able to remove all sessions.", tests.Success)
}()
t.Log("Given the need to get the latest sessions in the DB.")
{
t.Logf("\tWhen using PublicID %s", publicID)
{
if err := removeSessions(db); err != nil {
t.Fatalf("\t%s\tShould be able to remove all sessions : %v", tests.Failed, err)
}
t.Logf("\t%s\tShould be able to remove all sessions.", tests.Success)
if _, err := session.Create(tests.Context, db, publicID, 10*time.Second); err != nil {
t.Fatalf("\t%s\tShould be able to create a session : %v", tests.Failed, err)
}
t.Logf("\t%s\tShould be able to create a session.", tests.Success)
time.Sleep(time.Second)
s2, err := session.Create(tests.Context, db, publicID, 10*time.Second)
if err != nil {
t.Fatalf("\t%s\tShould be able to create another session : %v", tests.Failed, err)
}
t.Logf("\t%s\tShould be able to create another session.", tests.Success)
s3, err := session.GetByLatest(tests.Context, db, publicID)
if err != nil {
t.Fatalf("\t%s\tShould be able to retrieve the latest session : %v", tests.Failed, err)
}
t.Logf("\t%s\tShould be able to retrieve the latest session.", tests.Success)
if s2.SessionID != s3.SessionID {
t.Errorf("\t%s\tShould be able to get back the latest session.", tests.Failed)
} else {
t.Logf("\t%s\tShould be able to get back the latest session.", tests.Success)
}
}
}
}
示例9: Handle
// Handle is our mechanism for mounting Handlers for a given HTTP verb and path
// pair, this makes for really easy, convenient routing.
func (a *App) Handle(verb, path string, handler Handler, mw ...Middleware) {
// The function to execute for each request.
h := func(w http.ResponseWriter, r *http.Request, p map[string]string) {
start := time.Now()
var dbConn *db.DB
if app.useMongo {
dbConn = db.NewMGO()
}
c := Context{
DB: dbConn,
ResponseWriter: w,
Request: r,
Params: p,
SessionID: uuid.New(),
}
if app.useMongo {
defer c.DB.CloseMGO()
}
log.User(c.SessionID, "Request", "Started : Method[%s] URL[%s] RADDR[%s]", c.Request.Method, c.Request.URL.Path, c.Request.RemoteAddr)
// Wrap the handler in all associated middleware.
wrap := func(h Handler) Handler {
// Wrap up the application-wide first...
for i := len(a.mw) - 1; i >= 0; i-- {
h = a.mw[i](h)
}
// Then wrap with our route specific ones.
for i := len(mw) - 1; i >= 0; i-- {
h = mw[i](h)
}
return h
}
// Call the wrapped handler and handle any possible error.
if err := wrap(handler)(&c); err != nil {
c.Error(err)
}
log.User(c.SessionID, "Request", "Completed : Status[%d] Duration[%s]", c.Status, time.Since(start))
}
// Add this handler for the specified verb and route.
a.TreeMux.Handle(verb, path, h)
}
示例10: TestCreate
// TestCreate tests the creation of sessions.
func TestCreate(t *testing.T) {
tests.ResetLog()
defer tests.DisplayLog()
db := db.NewMGO()
defer db.CloseMGO()
defer func() {
if err := removeSessions(db); err != nil {
t.Errorf("\t%s\tShould be able to remove all sessions : %v", tests.Failed, err)
}
t.Logf("\t%s\tShould be able to remove all sessions.", tests.Success)
}()
t.Log("Given the need to create sessions in the DB.")
{
t.Logf("\tWhen using PublicID %s", publicID)
{
if err := removeSessions(db); err != nil {
t.Fatalf("\t%s\tShould be able to remove all sessions : %v", tests.Failed, err)
}
t.Logf("\t%s\tShould be able to remove all sessions.", tests.Success)
s1, err := session.Create(tests.Context, db, publicID, 10*time.Second)
if err != nil {
t.Fatalf("\t%s\tShould be able to create a session : %v", tests.Failed, err)
}
t.Logf("\t%s\tShould be able to create a session.", tests.Success)
s2, err := session.GetBySessionID(tests.Context, db, s1.SessionID)
if err != nil {
t.Fatalf("\t%s\tShould be able to retrieve the session : %v", tests.Failed, err)
}
t.Logf("\t%s\tShould be able to retrieve the session.", tests.Success)
if s1.SessionID != s2.SessionID {
t.Fatalf("\t%s\tShould be able to get back the same session.", tests.Failed)
} else {
t.Logf("\t%s\tShould be able to get back the same session.", tests.Success)
}
if s1.PublicID != s2.PublicID {
t.Fatalf("\t%s\tShould be able to get back the same user.", tests.Failed)
} else {
t.Logf("\t%s\tShould be able to get back the same user.", tests.Success)
}
}
}
}
示例11: TestCreateUserTwice
// TestCreateUserTwice tests the creation of the same user fails. This test
// requires an index on the collection.
func TestCreateUserTwice(t *testing.T) {
tests.ResetLog()
defer tests.DisplayLog()
db := db.NewMGO()
defer db.CloseMGO()
var publicID string
defer func() {
if err := removeUser(db, publicID); err != nil {
t.Fatalf("\t%s\tShould be able to remove the test user : %v", tests.Failed, err)
}
t.Logf("\t%s\tShould be able to remove the test user.", tests.Success)
}()
t.Log("Given the need to make sure the same user can't be created twice.")
{
t.Log("\tWhen using a test user.")
{
u1, err := auth.NewUser(auth.NUser{
Status: auth.StatusActive,
FullName: "Test Kennedy",
Email: "[email protected]",
Password: "_Password124",
})
if err != nil {
t.Fatalf("\t%s\tShould be able to build a new user : %v", tests.Failed, err)
}
t.Logf("\t%s\tShould be able to build a new user.", tests.Success)
if err := auth.CreateUser(tests.Context, db, u1); err != nil {
t.Fatalf("\t%s\tShould be able to create a user : %v", tests.Failed, err)
}
t.Logf("\t%s\tShould be able to create a user.", tests.Success)
// We need to do this so we can clean up after.
publicID = u1.PublicID
if err := auth.CreateUser(tests.Context, db, u1); err == nil {
t.Fatalf("\t%s\tShould Not be able to create a user", tests.Failed)
}
t.Logf("\t%s\tShould Not be able to create a user.", tests.Success)
}
}
}
示例12: TestGetNotFound
// TestGetNotFound tests when a session is not found.
func TestGetNotFound(t *testing.T) {
tests.ResetLog()
defer tests.DisplayLog()
db := db.NewMGO()
defer db.CloseMGO()
t.Log("Given the need to test finding a session and it is not found.")
{
t.Logf("\tWhen using SessionID %s", "NOT EXISTS")
{
if _, err := session.GetBySessionID(tests.Context, db, "NOT EXISTS"); err == nil {
t.Fatalf("\t%s\tShould Not be able to retrieve the session.", tests.Failed)
}
t.Logf("\t%s\tShould Not be able to retrieve the session.", tests.Success)
}
}
}
示例13: runGet
// runGet is the code that implements the get command.
func runGet(cmd *cobra.Command, args []string) {
cmd.Printf("Getting User : Pid[%s] Email[%s]\n", get.pid, get.email)
if get.pid == "" && get.email == "" {
cmd.Help()
return
}
db, err := db.NewMGO("", mgoSession)
if err != nil {
cmd.Println("Getting User : ", err)
return
}
defer db.CloseMGO("")
var u *auth.User
if get.pid != "" {
u, err = auth.GetUserByPublicID("", db, get.pid, false)
} else {
u, err = auth.GetUserByEmail("", db, get.email, false)
}
if err != nil {
cmd.Println("Getting User : ", err)
return
}
webTok, err := auth.GetUserWebToken("", db, u.PublicID)
if err != nil {
cmd.Println("Getting User : Unable to retrieve web token : ", err)
}
data, err := json.MarshalIndent(&u, "", " ")
if err != nil {
cmd.Println("Getting User : ", err)
return
}
cmd.Printf("\n%s\n\nToken: %s\n\n", string(data), webTok)
return
}
示例14: TestUpdateInvalidUserPassword
// TestUpdateInvalidUserPassword tests we can't update user password.
func TestUpdateInvalidUserPassword(t *testing.T) {
tests.ResetLog()
defer tests.DisplayLog()
db, err := db.NewMGO(tests.Context, tests.TestSession)
if err != nil {
t.Fatalf("\t%s\tShould be able to get a Mongo session : %v", tests.Failed, err)
}
defer db.CloseMGO(tests.Context)
t.Log("Given the need to validate an invalid update to a user.")
{
t.Log("\tWhen using an existing user.")
{
u1, err := auth.NewUser(auth.NUser{
Status: auth.StatusActive,
FullName: "Test Kennedy",
Email: "[email protected]",
Password: "_Password124",
})
if err != nil {
t.Fatalf("\t%s\tShould be able to build a new user : %v", tests.Failed, err)
}
t.Logf("\t%s\tShould be able to build a new user.", tests.Success)
if err := auth.UpdateUserPassword(tests.Context, db, u1, "_Pass"); err == nil {
t.Errorf("\t%s\tShould Not be able to update a user with bad password.", tests.Failed)
} else {
t.Logf("\t%s\tShould Not be able to update a user with bad password.", tests.Success)
}
u1.Status = auth.StatusDisabled
if err := auth.UpdateUserPassword(tests.Context, db, u1, "_Password789"); err == nil {
t.Errorf("\t%s\tShould Not be able to update a user with bad user value.", tests.Failed)
} else {
t.Logf("\t%s\tShould Not be able to update a user with bad user value.", tests.Success)
}
}
}
}
示例15: main
func main() {
if err := cfg.Init(cfg.EnvProvider{Namespace: cfgNamespace}); err != nil {
kit.Println("Unable to initialize configuration")
os.Exit(1)
}
logLevel := func() int {
ll, err := cfg.Int(cfgLoggingLevel)
if err != nil {
return log.NONE
}
return ll
}
log.Init(os.Stderr, logLevel)
cfg := mongo.Config{
Host: cfg.MustString(cfgMongoHost),
AuthDB: cfg.MustString(cfgMongoAuthDB),
DB: cfg.MustString(cfgMongoDB),
User: cfg.MustString(cfgMongoUser),
Password: cfg.MustString(cfgMongoPassword),
}
if err := db.RegMasterSession("startup", cfg.DB, cfg); err != nil {
kit.Println("Unable to initialize MongoDB")
os.Exit(1)
}
db, err := db.NewMGO("", cfg.DB)
if err != nil {
kit.Println("Unable to get MongoDB session")
os.Exit(1)
}
defer db.CloseMGO("")
kit.AddCommand(
cmdauth.GetCommands(db),
cmddb.GetCommands(db),
)
kit.Execute()
}