This commit is contained in:
2023-12-29 00:27:12 +09:00
parent b4a0b72f66
commit c31a16843d
35 changed files with 451 additions and 261 deletions

View File

@ -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() {

View File

@ -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)
}