Swag Docs
This commit is contained in:
190
test/program_test.go
Normal file
190
test/program_test.go
Normal file
@ -0,0 +1,190 @@
|
||||
package learsteam_quiz_test
|
||||
|
||||
import (
|
||||
"encoding/json"
|
||||
"learnsteam/learsteam-quiz-api/internal/controllers"
|
||||
"learnsteam/learsteam-quiz-api/internal/models"
|
||||
"learnsteam/learsteam-quiz-api/internal/repositories"
|
||||
"learnsteam/learsteam-quiz-api/internal/services"
|
||||
"os"
|
||||
"strconv"
|
||||
"testing"
|
||||
"time"
|
||||
|
||||
"github.com/google/uuid"
|
||||
"github.com/stretchr/testify/suite"
|
||||
"github.com/tj/assert"
|
||||
"gorm.io/datatypes"
|
||||
"gorm.io/driver/sqlite"
|
||||
"gorm.io/gorm"
|
||||
"gorm.io/gorm/schema"
|
||||
)
|
||||
|
||||
type ProgramTestSuite struct {
|
||||
suite.Suite
|
||||
db *gorm.DB
|
||||
repository repositories.ProgramRepository
|
||||
service services.ProgramService
|
||||
controller controllers.ProgramController
|
||||
}
|
||||
|
||||
func (suite *ProgramTestSuite) SetupSuite() {
|
||||
// err := os.Remove("test.db")
|
||||
// if err != nil {
|
||||
// suite.Fail("Failed to remove the test database file")
|
||||
// }
|
||||
|
||||
gorm_config := gorm.Config{NamingStrategy: schema.NamingStrategy{SingularTable: true}}
|
||||
db, _ := gorm.Open(sqlite.Open("test.db"), &gorm_config)
|
||||
db.AutoMigrate(&models.Program{})
|
||||
|
||||
repository := repositories.NewProgramRepository(db)
|
||||
service := services.NewProgramService(repository)
|
||||
controller := controllers.NewProgramController(service)
|
||||
|
||||
suite.db = db
|
||||
suite.service = service
|
||||
suite.repository = repository
|
||||
suite.controller = controller
|
||||
|
||||
suite.CreateSampleData()
|
||||
}
|
||||
|
||||
func (suite *ProgramTestSuite) CreateSampleData() {
|
||||
var programs []models.Program
|
||||
for i := 1; i < 101; i++ {
|
||||
t := []string{"tag" + strconv.Itoa(i), "taga", "tagb"}
|
||||
var j datatypes.JSON
|
||||
j, _ = json.Marshal(t)
|
||||
p := models.Program{
|
||||
ID: strconv.Itoa(i) + "_id",
|
||||
Subject: strconv.Itoa(i) + " subject",
|
||||
Content: strconv.Itoa(i) + " content",
|
||||
Tag: j,
|
||||
Tags: j.String(),
|
||||
Status: "on",
|
||||
PublishAt: time.Now(),
|
||||
UpdatedAt: time.Now(),
|
||||
CreatedAt: time.Now(),
|
||||
}
|
||||
programs = append(programs, p)
|
||||
}
|
||||
|
||||
for _, program := range programs {
|
||||
suite.db.Create(&program)
|
||||
}
|
||||
}
|
||||
|
||||
func (suite *ProgramTestSuite) TearDownSuite() {
|
||||
// DB 삭제
|
||||
suite.db.Migrator().DropTable(&models.Program{})
|
||||
err := os.Remove("test.db")
|
||||
if err != nil {
|
||||
suite.Fail("Failed to remove the test database file")
|
||||
}
|
||||
}
|
||||
|
||||
func (suite *ProgramTestSuite) SetupTest() {
|
||||
|
||||
}
|
||||
|
||||
func (suite *ProgramTestSuite) TearDownTest() {
|
||||
|
||||
}
|
||||
|
||||
func TestProgramSuite(t *testing.T) {
|
||||
suite.Run(t, new(ProgramTestSuite))
|
||||
}
|
||||
|
||||
// 목록 테스트 : 1page, 10개
|
||||
func (suite *ProgramTestSuite) TestListProgramSuccess() {
|
||||
programs, err := suite.repository.List("", "", 1, 10)
|
||||
assert.NoError(suite.T(), err)
|
||||
assert.NotNil(suite.T(), programs)
|
||||
assert.Equal(suite.T(), 10, len(*programs))
|
||||
program0 := (*programs)[0]
|
||||
assert.Equal(suite.T(), "100_id", program0.ID)
|
||||
|
||||
program9 := (*programs)[9]
|
||||
assert.Equal(suite.T(), "91_id", program9.ID)
|
||||
}
|
||||
|
||||
// 목록 테스트 : tag 검색
|
||||
func (suite *ProgramTestSuite) TestListProgramTagSearchSuccess() {
|
||||
programs, err := suite.repository.List("", "tag9", 1, 10)
|
||||
assert.NoError(suite.T(), err)
|
||||
assert.NotNil(suite.T(), programs)
|
||||
assert.Equal(suite.T(), 10, len(*programs))
|
||||
}
|
||||
|
||||
// Total 테스트
|
||||
func (suite *ProgramTestSuite) TestTotalSuccess() {
|
||||
total, err := suite.repository.Total("", "")
|
||||
assert.NoError(suite.T(), err)
|
||||
assert.Equal(suite.T(), int64(100), total)
|
||||
}
|
||||
|
||||
// Total 테스트 : tag 검색
|
||||
func (suite *ProgramTestSuite) TestTotalTagSuccess() {
|
||||
total, err := suite.repository.Total("", "tag2")
|
||||
assert.NoError(suite.T(), err)
|
||||
assert.Equal(suite.T(), int64(11), total)
|
||||
}
|
||||
|
||||
// 수정 테스트
|
||||
func (suite *ProgramTestSuite) TestUpdateProgramSuccess() {
|
||||
t := []string{"TAG"}
|
||||
var j datatypes.JSON
|
||||
j, _ = json.Marshal(t)
|
||||
p := &models.Program{
|
||||
ID: uuid.NewString(),
|
||||
Subject: "My Subject",
|
||||
Content: "My Content",
|
||||
Tag: j,
|
||||
Tags: j.String(),
|
||||
Status: "on",
|
||||
PublishAt: time.Now(),
|
||||
UpdatedAt: time.Now(),
|
||||
CreatedAt: time.Now(),
|
||||
}
|
||||
|
||||
program, err := suite.repository.Create(p)
|
||||
assert.NoError(suite.T(), err)
|
||||
|
||||
program.Subject = "My Subject Updated"
|
||||
program.Content = "My Content Updated"
|
||||
program.Tag = j
|
||||
program.Tags = j.String()
|
||||
program.Status = "draft"
|
||||
|
||||
updatedProgram, err := suite.repository.Update(program)
|
||||
assert.NoError(suite.T(), err)
|
||||
assert.Equal(suite.T(), program.Subject, updatedProgram.Subject)
|
||||
assert.Equal(suite.T(), program.Content, updatedProgram.Content)
|
||||
assert.Equal(suite.T(), program.Tag, updatedProgram.Tag)
|
||||
assert.Equal(suite.T(), program.Status, updatedProgram.Status)
|
||||
}
|
||||
|
||||
// 삭제 테스트
|
||||
func (suite *ProgramTestSuite) TestDeleteProgramSuccess() {
|
||||
t := []string{"TAG"}
|
||||
var j datatypes.JSON
|
||||
j, _ = json.Marshal(t)
|
||||
p := &models.Program{
|
||||
ID: uuid.NewString(),
|
||||
Subject: "My Subject",
|
||||
Content: "My Content",
|
||||
Tag: j,
|
||||
Tags: j.String(),
|
||||
Status: "on",
|
||||
PublishAt: time.Now(),
|
||||
UpdatedAt: time.Now(),
|
||||
CreatedAt: time.Now(),
|
||||
}
|
||||
_, err := suite.repository.Create(p)
|
||||
assert.NoError(suite.T(), err)
|
||||
err = suite.repository.Delete(p.ID)
|
||||
assert.NoError(suite.T(), err)
|
||||
_, err = suite.repository.Find(p.ID)
|
||||
assert.Error(suite.T(), err)
|
||||
}
|
183
test/quiz_test.go
Normal file
183
test/quiz_test.go
Normal file
@ -0,0 +1,183 @@
|
||||
package learsteam_quiz_test
|
||||
|
||||
import (
|
||||
"encoding/json"
|
||||
"learnsteam/learsteam-quiz-api/internal/controllers"
|
||||
"learnsteam/learsteam-quiz-api/internal/models"
|
||||
"learnsteam/learsteam-quiz-api/internal/repositories"
|
||||
"learnsteam/learsteam-quiz-api/internal/services"
|
||||
"os"
|
||||
"strconv"
|
||||
"testing"
|
||||
"time"
|
||||
|
||||
"github.com/google/uuid"
|
||||
"github.com/stretchr/testify/suite"
|
||||
"github.com/tj/assert"
|
||||
"gorm.io/datatypes"
|
||||
"gorm.io/driver/sqlite"
|
||||
"gorm.io/gorm"
|
||||
"gorm.io/gorm/schema"
|
||||
)
|
||||
|
||||
type QuizTestSuite struct {
|
||||
suite.Suite
|
||||
db *gorm.DB
|
||||
repository repositories.QuizRepository
|
||||
service services.QuizService
|
||||
controller controllers.QuizController
|
||||
}
|
||||
|
||||
func (suite *QuizTestSuite) SetupSuite() {
|
||||
// err := os.Remove("test.db")
|
||||
// if err != nil {
|
||||
// suite.Fail("Failed to remove the test database file")
|
||||
// }
|
||||
|
||||
gorm_config := gorm.Config{NamingStrategy: schema.NamingStrategy{SingularTable: true}}
|
||||
db, _ := gorm.Open(sqlite.Open("test.db"), &gorm_config)
|
||||
db.AutoMigrate(&models.Quiz{})
|
||||
|
||||
repository := repositories.NewQuizRepository(db)
|
||||
service := services.NewQuizService(repository)
|
||||
controller := controllers.NewQuizController(service)
|
||||
|
||||
suite.db = db
|
||||
suite.service = service
|
||||
suite.repository = repository
|
||||
suite.controller = controller
|
||||
|
||||
suite.CreateSampleData()
|
||||
}
|
||||
|
||||
func (suite *QuizTestSuite) CreateSampleData() {
|
||||
var quizzes []models.Quiz
|
||||
program_id := "1_id"
|
||||
|
||||
c := []string{"1", "2", "3", "4"}
|
||||
var j datatypes.JSON
|
||||
j, _ = json.Marshal(c)
|
||||
|
||||
for i := 1; i < 6; i++ {
|
||||
q := models.Quiz{
|
||||
ID: strconv.Itoa(i),
|
||||
ProgramID: program_id,
|
||||
Sequence: i,
|
||||
QuizType: "multiple",
|
||||
Question: strconv.Itoa(i) + " question",
|
||||
Choice: j,
|
||||
Answer: j,
|
||||
Hint: "힌트입니다.",
|
||||
Comment: "설명입니다.",
|
||||
UpdatedAt: time.Now(),
|
||||
CreatedAt: time.Now(),
|
||||
}
|
||||
quizzes = append(quizzes, q)
|
||||
}
|
||||
for _, quiz := range quizzes {
|
||||
suite.db.Create(&quiz)
|
||||
}
|
||||
}
|
||||
|
||||
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) TearDownTest() {
|
||||
|
||||
}
|
||||
|
||||
func TestQuizSuite(t *testing.T) {
|
||||
suite.Run(t, new(QuizTestSuite))
|
||||
}
|
||||
|
||||
// 목록 테스트
|
||||
func (suite *QuizTestSuite) TestListQuizSuccess() {
|
||||
quizzes, err := suite.repository.List("id_1", 1, 10)
|
||||
assert.NoError(suite.T(), err)
|
||||
assert.NotNil(suite.T(), quizzes)
|
||||
assert.Equal(suite.T(), 5, len(*quizzes))
|
||||
}
|
||||
|
||||
// Find 테스트
|
||||
func (suite *QuizTestSuite) TestFindQuizSuccess() {
|
||||
quiz, err := suite.repository.Find("1")
|
||||
assert.NoError(suite.T(), err)
|
||||
assert.Equal(suite.T(), "1", quiz.ID)
|
||||
}
|
||||
|
||||
// Find 테스트
|
||||
func (suite *QuizTestSuite) TestFindQuizFail() {
|
||||
_, err := suite.repository.Find("x")
|
||||
assert.Error(suite.T(), err)
|
||||
}
|
||||
|
||||
// 수정 테스트
|
||||
func (suite *QuizTestSuite) TestUpdateQuizFail() {
|
||||
c := []string{"1", "2", "3", "4"}
|
||||
var j datatypes.JSON
|
||||
j, _ = json.Marshal(c)
|
||||
q := &models.Quiz{
|
||||
ID: uuid.NewString(),
|
||||
ProgramID: uuid.NewString(),
|
||||
Sequence: 1,
|
||||
QuizType: "multiple",
|
||||
Question: "question",
|
||||
Choice: j,
|
||||
Answer: j,
|
||||
Hint: "힌트입니다.",
|
||||
Comment: "설명입니다.",
|
||||
UpdatedAt: time.Now(),
|
||||
CreatedAt: time.Now(),
|
||||
}
|
||||
|
||||
quiz, err := suite.repository.Create(q)
|
||||
assert.NoError(suite.T(), err)
|
||||
|
||||
quiz.QuizType = "check"
|
||||
quiz.Choice = j
|
||||
quiz.Answer = j
|
||||
quiz.Hint = "힌트입니다!"
|
||||
|
||||
updatedQuiz, err := suite.repository.Update(quiz)
|
||||
assert.NoError(suite.T(), err)
|
||||
|
||||
assert.Equal(suite.T(), updatedQuiz.QuizType, quiz.QuizType)
|
||||
assert.Equal(suite.T(), updatedQuiz.Choice, quiz.Choice)
|
||||
assert.Equal(suite.T(), updatedQuiz.Answer, quiz.Answer)
|
||||
}
|
||||
|
||||
// 삭제 테스트
|
||||
func (suite *QuizTestSuite) TestDeleteQuizSuccess() {
|
||||
c := []string{"1", "2", "3", "4"}
|
||||
var j datatypes.JSON
|
||||
j, _ = json.Marshal(c)
|
||||
q := &models.Quiz{
|
||||
ID: uuid.NewString(),
|
||||
ProgramID: uuid.NewString(),
|
||||
Sequence: 1,
|
||||
QuizType: "multiple",
|
||||
Question: "question",
|
||||
Choice: j,
|
||||
Answer: j,
|
||||
Hint: "힌트입니다.",
|
||||
Comment: "설명입니다.",
|
||||
UpdatedAt: time.Now(),
|
||||
CreatedAt: time.Now(),
|
||||
}
|
||||
_, err := suite.repository.Create(q)
|
||||
assert.NoError(suite.T(), err)
|
||||
err = suite.repository.Delete(q.ID)
|
||||
assert.NoError(suite.T(), err)
|
||||
_, err = suite.repository.Find(q.ID)
|
||||
assert.Error(suite.T(), err)
|
||||
}
|
245
test/token_test.go
Normal file
245
test/token_test.go
Normal file
@ -0,0 +1,245 @@
|
||||
package learsteam_quiz_test
|
||||
|
||||
// type TokenTestSuite struct {
|
||||
// suite.Suite
|
||||
// db *gorm.DB
|
||||
// repository repositories.TokenRepository
|
||||
// service services.TokenService
|
||||
// controller controllers.TokenController
|
||||
// }
|
||||
|
||||
// func (suite *TokenTestSuite) SetupSuite() {
|
||||
// err := os.Remove("test.db")
|
||||
// if err != nil {
|
||||
// suite.Fail("Failed to remove the test database file")
|
||||
// }
|
||||
|
||||
// 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)
|
||||
|
||||
// suite.db = db
|
||||
// suite.service = service
|
||||
// suite.repository = repository
|
||||
// suite.controller = controller
|
||||
|
||||
// suite.CreateSampleData()
|
||||
// }
|
||||
|
||||
// func (suite *TokenTestSuite) CreateSampleData() {
|
||||
// suite.db.AutoMigrate(&models.Token{})
|
||||
// var tokens []models.Token
|
||||
// for i := 1; i < 100; i++ {
|
||||
// expire_at := time.Now().Add(time.Hour * 24 * time.Duration(i+45))
|
||||
// tokenString, _ := suite.service.Generate("superrichquiz_octet", expire_at.Unix())
|
||||
// token := models.Token{
|
||||
// ID: uuid.NewString(),
|
||||
// Token: tokenString,
|
||||
// Status: "valid",
|
||||
// ExpireAt: expire_at,
|
||||
// UpdatedAt: time.Now(),
|
||||
// CreatedAt: time.Now(),
|
||||
// }
|
||||
// tokens = append(tokens, token)
|
||||
// }
|
||||
|
||||
// for _, token := range tokens {
|
||||
// suite.db.Create(&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")
|
||||
// }
|
||||
|
||||
// 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 (suite *TokenTestSuite) TestGenerateTokenString() {
|
||||
// user_id := "superrichquiz_octet"
|
||||
// expire_at := time.Now().Add(time.Hour * 24 * 365 * 100).Unix()
|
||||
// tokenString, err := suite.service.Generate(user_id, expire_at)
|
||||
// assert.NoError(suite.T(), err)
|
||||
|
||||
// jwtToken, err := suite.service.VerifyTokenString(tokenString)
|
||||
// assert.NoError(suite.T(), err)
|
||||
// assert.NotNil(suite.T(), jwtToken)
|
||||
// }
|
||||
|
||||
// // 토큰 검증 테스트
|
||||
// func (suite *TokenTestSuite) TestVerifyTokenString() {
|
||||
// user_id := "testuser"
|
||||
// expire_at := time.Now().Add(time.Hour * 24 * 365).Unix()
|
||||
// tokenString, err := suite.service.Generate(user_id, expire_at)
|
||||
// assert.NoError(suite.T(), err)
|
||||
|
||||
// jwtToken, err := suite.service.VerifyTokenString(tokenString)
|
||||
// assert.NoError(suite.T(), err)
|
||||
// assert.NotNil(suite.T(), jwtToken)
|
||||
// assert.Equal(suite.T(), tokenString, jwtToken.Raw)
|
||||
// }
|
||||
|
||||
// // 토큰 유효성 테스트
|
||||
// func (suite *TokenTestSuite) TestValidToken() {
|
||||
// user_id := "testuser"
|
||||
// expire_at := time.Now().Add(time.Hour * 24 * 365).Unix()
|
||||
// tokenString, err := suite.service.Generate(user_id, expire_at)
|
||||
// assert.NoError(suite.T(), err)
|
||||
|
||||
// jwtToken, err := suite.service.VerifyTokenString(tokenString)
|
||||
// assert.NoError(suite.T(), err)
|
||||
// assert.NotNil(suite.T(), jwtToken)
|
||||
|
||||
// valid, err := suite.service.ValidToken(jwtToken)
|
||||
// assert.NoError(suite.T(), err)
|
||||
// assert.True(suite.T(), valid)
|
||||
// }
|
||||
|
||||
// // 토큰 유효성 테스트 : Expire
|
||||
// func (suite *TokenTestSuite) TestExpiredToken() {
|
||||
// user_id := "testuser"
|
||||
// expire_at := time.Now().Add(time.Hour * 1).Unix()
|
||||
// tokenString, err := suite.service.Generate(user_id, expire_at)
|
||||
// assert.NoError(suite.T(), err)
|
||||
|
||||
// jwtToken, err := suite.service.GetJwtToken(tokenString)
|
||||
// assert.NoError(suite.T(), err)
|
||||
// // assert.Nil(suite.T(), jwtToken)
|
||||
|
||||
// expirationTime, err := jwtToken.Claims.GetExpirationTime()
|
||||
// assert.NoError(suite.T(), err)
|
||||
// assert.Greater(suite.T(), expirationTime.Time, time.Now())
|
||||
|
||||
// expire_at = time.Now().Add(-time.Hour * 1).Unix()
|
||||
// tokenString, err = suite.service.Generate(user_id, expire_at)
|
||||
// assert.NoError(suite.T(), err)
|
||||
|
||||
// jwtToken, err = suite.service.GetJwtToken(tokenString)
|
||||
// assert.Error(suite.T(), err)
|
||||
// // assert.Nil(suite.T(), jwtToken)
|
||||
|
||||
// expirationTime, err = jwtToken.Claims.GetExpirationTime()
|
||||
// assert.NoError(suite.T(), err)
|
||||
// assert.Greater(suite.T(), time.Now(), expirationTime.Time)
|
||||
// }
|
||||
|
||||
// func (suite *TokenTestSuite) TestCreateToken() {
|
||||
// dateString := "2023-08-15T01:50:08.706Z"
|
||||
// layout := "2006-01-02T15:04:05.000Z"
|
||||
// tokenString := "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlbklkeCI6MTc2NTQyLCJ0b2tlblR5cGUiOiJXQUxMRVQiLCJ0b2tlbkV4cGlyZWREYXRlIjoiMjAyMy0wOC0xNVQwMTo1MDowOC43MDZaIn0.skgP6ysLNx6KRDBYZy3miZW1Q95iV_Cw0ZVWXj1tJyw"
|
||||
// expire_at, _ := time.Parse(layout, dateString)
|
||||
// token := models.Token{
|
||||
// ID: uuid.NewString(),
|
||||
// Token: tokenString,
|
||||
// Status: "valid",
|
||||
// ExpireAt: expire_at,
|
||||
// }
|
||||
// result, err := suite.repository.Create(&token)
|
||||
|
||||
// assert.NoError(suite.T(), err)
|
||||
// assert.Equal(suite.T(), tokenString, result.Token)
|
||||
// }
|
||||
|
||||
// // 리프레시할 토큰 목록
|
||||
// func (suite *TokenTestSuite) TestListOfTokensToRefresh() {
|
||||
// tokens, err := suite.repository.ListRefresh()
|
||||
// assert.NoError(suite.T(), err)
|
||||
// assert.NotNil(suite.T(), tokens)
|
||||
// assert.Greater(suite.T(), len(*tokens), 0)
|
||||
// }
|
||||
|
||||
// // 토큰 리프레시
|
||||
// func (suite *TokenTestSuite) TestOldTokenRefresh() {
|
||||
// tokens, err := suite.repository.ListRefresh()
|
||||
// assert.NoError(suite.T(), err)
|
||||
// assert.NotNil(suite.T(), tokens)
|
||||
|
||||
// for _, token := range *tokens {
|
||||
// token.Status = "expired"
|
||||
// result, err := suite.repository.Update(&token)
|
||||
// assert.NoError(suite.T(), err)
|
||||
// assert.Equal(suite.T(), "expired", result.Status)
|
||||
|
||||
// user_id := "superrichquiz_octet"
|
||||
// expire_at := result.ExpireAt.Add(time.Hour * 24 * 90)
|
||||
// tokenString, err := suite.service.Generate(user_id, expire_at.Unix())
|
||||
// assert.NoError(suite.T(), err)
|
||||
|
||||
// refreshedToken := models.Token{
|
||||
// ID: uuid.NewString(),
|
||||
// Token: tokenString,
|
||||
// Status: "valid",
|
||||
// ExpireAt: expire_at,
|
||||
// }
|
||||
|
||||
// newToken, err := suite.repository.Create(&refreshedToken)
|
||||
// assert.NoError(suite.T(), err)
|
||||
// assert.Equal(suite.T(), tokenString, newToken.Token)
|
||||
// }
|
||||
// }
|
||||
|
||||
// func (suite *TokenTestSuite) TestResponseToken() {
|
||||
// respBody := []byte(`{
|
||||
// "token": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlbklkeCI6MTc1MzU4LCJ0b2tlblR5cGUiOiJXQUxMRVQiLCJ0b2tlbkV4cGlyZWREYXRlIjoiMjAyMy0wOC0xNFQwNToxMTo1Ni41MzhaIn0.e1i4_y8ItC8Vje13Ew8NHwZTElOMBObIZjpGLgRCdyE",
|
||||
// "tokenBody": {
|
||||
// "tokenExpiredDate": "2023-08-13T06:06:12.065Z",
|
||||
// "tokenIdx": 174025,
|
||||
// "tokenType": "WALLET"
|
||||
// }
|
||||
// }`)
|
||||
|
||||
// var response map[string]interface{}
|
||||
// err := json.Unmarshal(respBody, &response)
|
||||
// assert.NoError(suite.T(), err)
|
||||
// assert.NotNil(suite.T(), response)
|
||||
// assert.Equal(suite.T(), response["token"], "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlbklkeCI6MTc1MzU4LCJ0b2tlblR5cGUiOiJXQUxMRVQiLCJ0b2tlbkV4cGlyZWREYXRlIjoiMjAyMy0wOC0xNFQwNToxMTo1Ni41MzhaIn0.e1i4_y8ItC8Vje13Ew8NHwZTElOMBObIZjpGLgRCdyE")
|
||||
|
||||
// tokenBody := response["tokenBody"].(map[string]interface{})
|
||||
// tokenExpiredDate := tokenBody["tokenExpiredDate"].(string)
|
||||
// assert.Equal(suite.T(), "2023-08-13T06:06:12.065Z", tokenExpiredDate)
|
||||
// }
|
||||
|
||||
// func (suite *TokenTestSuite) TestResponseError() {
|
||||
// respBody := []byte(`{
|
||||
// "errorCode": "ERR_0105001",
|
||||
// "message": "Invalid token"
|
||||
// }`)
|
||||
|
||||
// var response map[string]interface{}
|
||||
// err := json.Unmarshal(respBody, &response)
|
||||
// assert.NoError(suite.T(), err)
|
||||
// assert.NotNil(suite.T(), response)
|
||||
|
||||
// assert.NotNil(suite.T(), response["errorCode"])
|
||||
// assert.Equal(suite.T(), "ERR_0105001", response["errorCode"].(string))
|
||||
|
||||
// if response["errorCode"] != nil && response["errorCode"].(string) == "ERR_0105001" {
|
||||
// assert.True(suite.T(), true)
|
||||
// }
|
||||
// }
|
Reference in New Issue
Block a user