Logout
This commit is contained in:
@ -2,8 +2,11 @@ package learsteam_quiz_test
|
||||
|
||||
import (
|
||||
"learnsteam/cslms-api/internal/controllers"
|
||||
"learnsteam/cslms-api/internal/models"
|
||||
"learnsteam/cslms-api/internal/repositories"
|
||||
"learnsteam/cslms-api/internal/services"
|
||||
"os"
|
||||
"testing"
|
||||
|
||||
"github.com/stretchr/testify/suite"
|
||||
"gorm.io/gorm"
|
||||
@ -36,7 +39,7 @@ type QuizTestSuite struct {
|
||||
// suite.repository = repository
|
||||
// suite.controller = controller
|
||||
|
||||
// suite.CreateSampleData()
|
||||
// // suite.CreateSampleData()
|
||||
// }
|
||||
|
||||
// func (suite *QuizTestSuite) CreateSampleData() {
|
||||
@ -68,26 +71,26 @@ type QuizTestSuite struct {
|
||||
// }
|
||||
// }
|
||||
|
||||
// func (suite *QuizTestSuite) TearDownSuite() {
|
||||
// // DB 삭제
|
||||
// suite.db.Migrator().DropTable(&models.Quiz{})
|
||||
// err := os.Remove("test.db")
|
||||
// if err != nil {
|
||||
// suite.Fail("Failed to remove the test database file")
|
||||
// }
|
||||
// }
|
||||
func (suite *QuizTestSuite) TearDownSuite() {
|
||||
// DB 삭제
|
||||
suite.db.Migrator().DropTable(&models.Quiz{})
|
||||
err := os.Remove("test.db")
|
||||
if err != nil {
|
||||
suite.Fail("Failed to remove the test database file")
|
||||
}
|
||||
}
|
||||
|
||||
// func (suite *QuizTestSuite) SetupTest() {
|
||||
// suite.CreateSampleData()
|
||||
// }
|
||||
func (suite *QuizTestSuite) SetupTest() {
|
||||
// suite.CreateSampleData()
|
||||
}
|
||||
|
||||
// func (suite *QuizTestSuite) TearDownTest() {
|
||||
func (suite *QuizTestSuite) TearDownTest() {
|
||||
|
||||
// }
|
||||
}
|
||||
|
||||
// func TestQuizSuite(t *testing.T) {
|
||||
// suite.Run(t, new(QuizTestSuite))
|
||||
// }
|
||||
func TestQuizSuite(t *testing.T) {
|
||||
suite.Run(t, new(QuizTestSuite))
|
||||
}
|
||||
|
||||
// // 목록 테스트
|
||||
// func (suite *QuizTestSuite) TestListQuizSuccess() {
|
||||
|
@ -1,33 +1,49 @@
|
||||
package learsteam_quiz_test
|
||||
|
||||
// type TokenTestSuite struct {
|
||||
// suite.Suite
|
||||
// db *gorm.DB
|
||||
// repository repositories.TokenRepository
|
||||
// service services.TokenService
|
||||
// controller controllers.TokenController
|
||||
// }
|
||||
import (
|
||||
"fmt"
|
||||
config "learnsteam/cslms-api/configs"
|
||||
"learnsteam/cslms-api/internal/controllers"
|
||||
"learnsteam/cslms-api/internal/repositories"
|
||||
"learnsteam/cslms-api/internal/services"
|
||||
"testing"
|
||||
"time"
|
||||
|
||||
// func (suite *TokenTestSuite) SetupSuite() {
|
||||
// err := os.Remove("test.db")
|
||||
// if err != nil {
|
||||
// suite.Fail("Failed to remove the test database file")
|
||||
// }
|
||||
"github.com/golang-jwt/jwt/v5"
|
||||
"github.com/stretchr/testify/suite"
|
||||
"github.com/tj/assert"
|
||||
"gorm.io/driver/sqlite"
|
||||
"gorm.io/gorm"
|
||||
"gorm.io/gorm/schema"
|
||||
)
|
||||
|
||||
// database.Init()
|
||||
// gorm_config := gorm.Config{NamingStrategy: schema.NamingStrategy{SingularTable: true}}
|
||||
// db, _ := gorm.Open(sqlite.Open("test.db"), &gorm_config)
|
||||
// repository := repositories.NewTokenRepository(db)
|
||||
// service := services.NewTokenService(repository)
|
||||
// controller := controllers.NewTokenController(service)
|
||||
type TokenTestSuite struct {
|
||||
suite.Suite
|
||||
db *gorm.DB
|
||||
repository repositories.TokenRepository
|
||||
service services.TokenService
|
||||
controller controllers.TokenController
|
||||
}
|
||||
|
||||
// suite.db = db
|
||||
// suite.service = service
|
||||
// suite.repository = repository
|
||||
// suite.controller = controller
|
||||
func (suite *TokenTestSuite) SetupSuite() {
|
||||
// err := os.Remove("test.db")
|
||||
// if err != nil {
|
||||
// suite.Fail("Failed to remove the test database file")
|
||||
// }
|
||||
|
||||
// suite.CreateSampleData()
|
||||
// }
|
||||
gorm_config := gorm.Config{NamingStrategy: schema.NamingStrategy{SingularTable: true}}
|
||||
db, _ := gorm.Open(sqlite.Open("test.db"), &gorm_config)
|
||||
repository := repositories.NewTokenRepository(db)
|
||||
service := services.NewTokenService(repository)
|
||||
controller := controllers.NewTokenController(service)
|
||||
|
||||
suite.db = db
|
||||
suite.service = service
|
||||
suite.repository = repository
|
||||
suite.controller = controller
|
||||
|
||||
// suite.CreateSampleData()
|
||||
}
|
||||
|
||||
// func (suite *TokenTestSuite) CreateSampleData() {
|
||||
// suite.db.AutoMigrate(&models.Token{})
|
||||
@ -51,34 +67,36 @@ package learsteam_quiz_test
|
||||
// }
|
||||
// }
|
||||
|
||||
// func (suite *TokenTestSuite) TearDownSuite() {
|
||||
// // suite.db.Migrator().DropTable(&models.Token{})
|
||||
func (suite *TokenTestSuite) TearDownSuite() {
|
||||
// suite.db.Migrator().DropTable(&models.Token{})
|
||||
|
||||
// // err := os.Remove("test.db")
|
||||
// // if err != nil {
|
||||
// // suite.Fail("Failed to remove the test database file")
|
||||
// // }
|
||||
// }
|
||||
// func (suite *TokenTestSuite) SetupTest() {
|
||||
// // suite.userRepository.DeleteByName("testUserName0001")
|
||||
// }
|
||||
// err := os.Remove("test.db")
|
||||
// if err != nil {
|
||||
// suite.Fail("Failed to remove the test database file")
|
||||
// }
|
||||
}
|
||||
|
||||
// func (suite *TokenTestSuite) TearDownTest() {
|
||||
func (suite *TokenTestSuite) SetupTest() {
|
||||
// suite.userRepository.DeleteByName("testUserName0001")
|
||||
}
|
||||
|
||||
// }
|
||||
func (suite *TokenTestSuite) TearDownTest() {
|
||||
|
||||
// func TestTokenSuite(t *testing.T) {
|
||||
// suite.Run(t, new(TokenTestSuite))
|
||||
// }
|
||||
}
|
||||
|
||||
// // 토큰 생성 테스트
|
||||
// func (suite *TokenTestSuite) TestGenerateTokenSuccess() {
|
||||
// user_id := "testuser"
|
||||
// expire_at := time.Now().Add(time.Hour * 24 * 365).Unix()
|
||||
// token, err := suite.service.Generate(user_id, expire_at)
|
||||
// assert.NoError(suite.T(), err)
|
||||
// assert.NotNil(suite.T(), token)
|
||||
// }
|
||||
func TestTokenSuite(t *testing.T) {
|
||||
suite.Run(t, new(TokenTestSuite))
|
||||
}
|
||||
|
||||
// 토큰 생성 테스트
|
||||
func (suite *TokenTestSuite) TestGenerateTokenSuccess() {
|
||||
user_id := int64(100000001)
|
||||
role := "admin"
|
||||
expire_at := time.Now().Add(time.Hour * 24 * 365).Unix()
|
||||
token, err := suite.service.Generate(user_id, expire_at, role)
|
||||
assert.NoError(suite.T(), err)
|
||||
assert.NotNil(suite.T(), token)
|
||||
}
|
||||
|
||||
// // 토큰 생성 테스트
|
||||
// func (suite *TokenTestSuite) TestGenerateTokenString() {
|
||||
@ -243,3 +261,37 @@ package learsteam_quiz_test
|
||||
// assert.True(suite.T(), true)
|
||||
// }
|
||||
// }
|
||||
|
||||
func (suite *TokenTestSuite) TestVerifyValidToken() {
|
||||
expire_at := time.Now().Add(time.Hour * 24 * 365 * 100).Unix()
|
||||
validToken, err := suite.service.Generate(10001, expire_at, "admin")
|
||||
assert.NoError(suite.T(), err)
|
||||
|
||||
jwtToken, err := jwt.Parse(validToken, func(jwtToken *jwt.Token) (interface{}, error) {
|
||||
if _, ok := jwtToken.Method.(*jwt.SigningMethodHMAC); !ok {
|
||||
return nil, fmt.Errorf("unexpected signing method: %v", jwtToken.Header["alg"])
|
||||
}
|
||||
return []byte(config.SECRET_KEY), nil
|
||||
})
|
||||
|
||||
assert.NoError(suite.T(), err)
|
||||
assert.True(suite.T(), jwtToken.Valid)
|
||||
}
|
||||
|
||||
func (suite *TokenTestSuite) TestVerifyExpiredToken() {
|
||||
expire_at := time.Now().Add(-time.Hour * 24 * 365 * 100).Unix()
|
||||
expiredToken, err := suite.service.Generate(10001, expire_at, "admin")
|
||||
assert.NoError(suite.T(), err)
|
||||
|
||||
assert.Equal(suite.T(), "1", expiredToken)
|
||||
|
||||
jwtToken, err := jwt.Parse(expiredToken, func(jwtToken *jwt.Token) (interface{}, error) {
|
||||
if _, ok := jwtToken.Method.(*jwt.SigningMethodHMAC); !ok {
|
||||
return nil, fmt.Errorf("unexpected signing method: %v", jwtToken.Header["alg"])
|
||||
}
|
||||
return []byte(config.SECRET_KEY), nil
|
||||
})
|
||||
|
||||
assert.Error(suite.T(), err)
|
||||
assert.False(suite.T(), jwtToken.Valid)
|
||||
}
|
||||
|
Reference in New Issue
Block a user