Skip to content

Commit

Permalink
create default user when server startup
Browse files Browse the repository at this point in the history
  • Loading branch information
John-Lin committed Aug 31, 2018
1 parent 2caf621 commit b5e267d
Show file tree
Hide file tree
Showing 5 changed files with 81 additions and 4 deletions.
8 changes: 5 additions & 3 deletions src/server/handler_user_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -400,7 +400,6 @@ func (suite *UserTestSuite) TestListUser() {
FirstName: "John",
LastName: "Doe",
PhoneNumber: "0914141414",
CreatedAt: &time.Time{},
})
}

Expand All @@ -415,6 +414,7 @@ func (suite *UserTestSuite) TestListUser() {
pageSize string
expectSize int
}{
// the extra 1 should include administrator user in database. Auto-insert when server startup
{"", "", count},
{"1", "1", count},
{"1", "3", count},
Expand All @@ -439,9 +439,11 @@ func (suite *UserTestSuite) TestListUser() {
retUsers := []entity.User{}
err = json.Unmarshal(httpWriter.Body.Bytes(), &retUsers)
suite.NoError(err)
// Pop out the first test user. test user is generated in main_test.go

// the propose of test user is for others api to get a JWT token
_, retUsers = retUsers[0], retUsers[1:]
// Pop out the first test user. test user is generated in main_test.go
_, _, retUsers = retUsers[0], retUsers[1], retUsers[2:]

suite.Equal(tc.expectSize, len(retUsers))
for i, u := range retUsers {
suite.Equal(users[i].DisplayName, u.DisplayName)
Expand Down
2 changes: 1 addition & 1 deletion src/server/main_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -32,7 +32,7 @@ func init() {
Username: "[email protected]",
Password: "test",
},
DisplayName: "John Doe",
DisplayName: "mainTestUser",
Role: "root",
FirstName: "John",
LastName: "Doe",
Expand Down
36 changes: 36 additions & 0 deletions src/serviceprovider/default_admin.go
Original file line number Diff line number Diff line change
@@ -0,0 +1,36 @@
package serviceprovider

import (
"github.com/linkernetworks/mongo"
"github.com/linkernetworks/utils/timeutils"
"github.com/linkernetworks/vortex/src/entity"
"gopkg.in/mgo.v2/bson"
)

func createDefaultUser(mongoService *mongo.Service) error {
session := mongoService.NewSession()
defer session.Close()
user := entity.User{
ID: bson.NewObjectId(),
LoginCredential: entity.LoginCredential{
Username: "[email protected]",
Password: "password",
},
DisplayName: "administrator",
Role: "root",
FirstName: "administrator",
LastName: "administrator",
PhoneNumber: "09521111111",
CreatedAt: timeutils.Now(),
}
q := bson.M{"loginCredential.username": user.LoginCredential.Username}

count, err := session.Count(entity.UserCollectionName, q)
if err != nil {
return err
} else if count > 0 {
// admin user has already exists. Do not insert
return nil
}
return session.Insert(entity.UserCollectionName, &user)
}
36 changes: 36 additions & 0 deletions src/serviceprovider/default_admin_test.go
Original file line number Diff line number Diff line change
@@ -0,0 +1,36 @@
package serviceprovider

import (
"testing"

"github.com/linkernetworks/mongo"
"github.com/linkernetworks/vortex/src/config"
"github.com/linkernetworks/vortex/src/entity"
"github.com/stretchr/testify/assert"
"github.com/stretchr/testify/suite"
)

type CreateDefaultUserSuite struct {
suite.Suite
cf config.Config
session *mongo.Session
service *mongo.Service
}

func (suite *CreateDefaultUserSuite) SetupSuite() {
suite.cf = config.MustRead("../../config/testing.json")
sp := NewForTesting(suite.cf)
suite.service = sp.Mongo

suite.session = suite.service.NewSession()
}

func (suite *CreateDefaultUserSuite) TearDownSuite() {
suite.session.Remove(entity.UserCollectionName, "loginCredential.username", "[email protected]")
defer suite.session.Close()
}

func (suite *CreateDefaultUserSuite) TestDefaultUserCreate(t *testing.T) {
err := createDefaultUser(suite.service)
assert.NoError(t, err)
}
3 changes: 3 additions & 0 deletions src/serviceprovider/serviceprovider.go
Original file line number Diff line number Diff line change
Expand Up @@ -70,6 +70,9 @@ func New(cf config.Config) *Container {
Validator: validate,
}

if err := createDefaultUser(sp.Mongo); err != nil {
logger.Infof("Create Default admin user failed: %v", err)
}
return sp
}

Expand Down

0 comments on commit b5e267d

Please sign in to comment.