25 lines
960 B
Go
25 lines
960 B
Go
package business
|
|
|
|
import (
|
|
"context"
|
|
"testing"
|
|
)
|
|
|
|
type directPromoteRepoFake struct{ calls int }
|
|
|
|
func (r *directPromoteRepoFake) ListDirect(context.Context, BusinessPromoteFilter, ...ListOption) (*BusinessPromotePage, error) {
|
|
r.calls++
|
|
return &BusinessPromotePage{Available: true}, nil
|
|
}
|
|
func TestDirectPromotesCheckUserScopeBeforeReadingChannels(t *testing.T) {
|
|
a := &accountRepoFake{accounts: map[uint]*Account{12: {ID: 12, Level: 1, IDPath: "0"}, 13: {ID: 13, Level: 2, IDPath: "0,12"}, 99: {ID: 99, Level: 2, IDPath: "0,123"}}}
|
|
r := &directPromoteRepoFake{}
|
|
uc := NewBusinessPromoteUsecase(r, NewAccountUsecase(a))
|
|
if _, err := uc.List(accountContext(12, 901), BusinessPromoteFilter{UserID: 99}); err != ErrAccountScope || r.calls != 0 {
|
|
t.Fatal("越权请求触达了渠道仓储")
|
|
}
|
|
if _, err := uc.List(accountContext(12, 901), BusinessPromoteFilter{UserID: 13}); err != nil || r.calls != 1 {
|
|
t.Fatal("下级渠道查询未执行")
|
|
}
|
|
}
|