Skip to content

Commit

Permalink
add test
Browse files Browse the repository at this point in the history
  • Loading branch information
John-Lin committed Jul 26, 2018
1 parent 05fb6a7 commit 5c43647
Show file tree
Hide file tree
Showing 3 changed files with 82 additions and 13 deletions.
5 changes: 3 additions & 2 deletions src/server/core/authenticate.go
Original file line number Diff line number Diff line change
Expand Up @@ -15,12 +15,13 @@ func Authenticate(session *mongo.Session, credential entity.LoginCredential) (en
authenticatedUser := entity.User{}
if err := session.FindOne(
entity.UserCollectionName,
bson.M{"loginCredential.Email": credential.Email},
bson.M{"loginCredential.email": credential.Email},
&authenticatedUser,
); err != nil {
return entity.User{}, false, err
}
if CheckPasswordHash(credential.Password, authenticatedUser.LoginCredential.Password) {
hashedPassword := authenticatedUser.LoginCredential.Password
if CheckPasswordHash(credential.Password, hashedPassword) {
return authenticatedUser, true, nil
}
return entity.User{}, false, nil
Expand Down
84 changes: 78 additions & 6 deletions src/server/core/authenticate_test.go
Original file line number Diff line number Diff line change
@@ -1,14 +1,86 @@
package core

import (
"math/rand"
"testing"
"time"

"github.com/stretchr/testify/assert"
"github.com/linkernetworks/mongo"
"github.com/linkernetworks/vortex/src/config"
"github.com/linkernetworks/vortex/src/entity"
"github.com/linkernetworks/vortex/src/serviceprovider"
"github.com/stretchr/testify/suite"
"gopkg.in/mgo.v2/bson"
)

func TestAuthenticate(t *testing.T) {
roles := []string{"admin", "user"}
tokenString, err := GenerateToken("234243353535330", roles)
assert.NotNil(t, tokenString)
assert.NoError(t, err)
func init() {
rand.Seed(time.Now().UnixNano())
}

type AuthenticateTestSuite struct {
suite.Suite
session *mongo.Session
sp *serviceprovider.Container
plainTextPassword string
}

func (suite *AuthenticateTestSuite) SetupSuite() {
cf := config.MustRead("../../../config/testing.json")
sp := serviceprovider.NewForTesting(cf)

// init session
suite.session = sp.Mongo.NewSession()
suite.sp = sp

suite.plainTextPassword = "@uthentic@te"

hashedPassword, err := HashPassword(suite.plainTextPassword)
suite.NoError(err)

user := entity.User{
ID: bson.NewObjectId(),
LoginCredential: entity.LoginCredential{
Email: "[email protected]",
Password: hashedPassword,
},
Username: "John Doe",
FirstName: "John",
LastName: "Doe",
PhoneNumber: "091111l111",
}
err = suite.session.Insert(entity.UserCollectionName, &user)
suite.NoError(err)
}

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

func TestAuthenticateSuite(t *testing.T) {
suite.Run(t, new(AuthenticateTestSuite))
}

func (suite *AuthenticateTestSuite) TestAuthenticate() {
CorrectCred := entity.LoginCredential{
Email: "[email protected]",
Password: suite.plainTextPassword,
}
user, passed, err := Authenticate(suite.session, CorrectCred)
suite.NoError(err)
suite.True(passed)
suite.Equal(CorrectCred.Email, user.LoginCredential.Email)
}

func (suite *AuthenticateTestSuite) TestFailedAuthenticate() {
WrongCred := entity.LoginCredential{
Email: "[email protected]",
Password: "wrongPasswordOX",
}
_, passed, err := Authenticate(suite.session, WrongCred)
suite.NoError(err)
suite.False(passed)
}
6 changes: 1 addition & 5 deletions src/server/handler_user_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,6 @@ package server

import (
"encoding/json"
"fmt"
"math/rand"
"net/http"
"net/http/httptest"
Expand Down Expand Up @@ -223,13 +222,10 @@ func (suite *UserTestSuite) TestListUser() {
})
}

fmt.Printf("XXXX Slice Array Size: %d\n", len(users))

for _, u := range users {
err := suite.session.Insert(entity.UserCollectionName, &u)
suite.NoError(err)
fmt.Printf("XXXXX Insert %s\n", u.LoginCredential.Email)
defer suite.session.Remove(entity.UserCollectionName, "LoginCredential.email", u.LoginCredential.Email)
defer suite.session.Remove(entity.UserCollectionName, "loginCredential.email", u.LoginCredential.Email)
}

testCases := []struct {
Expand Down

0 comments on commit 5c43647

Please sign in to comment.