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