2026-07-27 13:12:43 +08:00
package initdb
import (
"regexp"
"testing"
"github.com/DATA-DOG/go-sqlmock"
"gorm.io/driver/postgres"
"gorm.io/gorm"
)
func TestInitPlatformAccessSeedsEveryProtectedFrontendDomain ( t * testing . T ) {
sqlDatabase , mock , err := sqlmock . New ( )
if err != nil {
t . Fatal ( err )
}
t . Cleanup ( func ( ) { _ = sqlDatabase . Close ( ) } )
database , err := gorm . Open ( postgres . New ( postgres . Config { Conn : sqlDatabase } ) , & gorm . Config { } )
if err != nil {
t . Fatal ( err )
}
mock . ExpectQuery ( regexp . QuoteMeta ( ` SELECT * FROM "platform_role" WHERE role_code = $1 ORDER BY "platform_role"."id" LIMIT $2 ` ) ) .
WithArgs ( "root" , 1 ) .
WillReturnRows ( sqlmock . NewRows ( [ ] string { "id" , "identity" , "status" , "version" , "role_code" , "name" , "data_scope" , "is_system" } ) .
AddRow ( uint64 ( 1 ) , "root-role" , "enabled" , 1 , "root" , "Root" , "global" , true ) )
domains := [ ] string {
2026-07-27 15:49:51 +08:00
"dashboard" , "gas" , "delivery" , "staff" , "user" , "device" ,
2026-07-27 15:31:22 +08:00
"ec" , "finance" , "wallet" , "content" , "customer_service" , "platform" ,
2026-07-27 13:12:43 +08:00
}
for index , domain := range domains {
menuID := uint64 ( index + 10 )
mock . ExpectQuery ( regexp . QuoteMeta ( ` SELECT * FROM "platform_menu" WHERE menu_code = $1 ORDER BY "platform_menu"."id" LIMIT $2 ` ) ) .
WithArgs ( domain , 1 ) .
WillReturnRows ( sqlmock . NewRows ( [ ] string { "id" , "identity" , "status" , "version" , "parent_id" , "menu_code" , "name" , "icon" , "path" , "sort_no" } ) .
AddRow ( menuID , domain + "-menu" , "enabled" , 1 , uint64 ( 0 ) , domain , domain , "" , "/" + domain , index ) )
2026-07-28 13:35:59 +08:00
mock . ExpectQuery ( regexp . QuoteMeta ( ` SELECT * FROM "platform_role_menu" WHERE platform_role_id = $1 AND platform_menu_id = $2 ORDER BY "platform_role_menu"."id" LIMIT $3 ` ) ) .
2026-07-27 13:12:43 +08:00
WithArgs ( uint64 ( 1 ) , menuID , 1 ) .
WillReturnRows ( sqlmock . NewRows ( [ ] string { "id" , "platform_role_id" , "platform_menu_id" } ) .
AddRow ( uint64 ( index + 100 ) , uint64 ( 1 ) , menuID ) )
}
if err := InitPlatformAccess ( database ) ; err != nil {
t . Fatal ( err )
}
if err := mock . ExpectationsWereMet ( ) ; err != nil {
t . Fatal ( err )
}
}