43 lines
1.6 KiB
Go
43 lines
1.6 KiB
Go
package moderation
|
|
|
|
import (
|
|
"errors"
|
|
"testing"
|
|
|
|
"telesrv/internal/domain"
|
|
)
|
|
|
|
func TestValidateAppealRemedyActionsMatchesOnlyAppliedReversibleState(t *testing.T) {
|
|
detail := domain.ModerationCaseDetail{Actions: []domain.ModerationAction{
|
|
{ID: 2, Kind: domain.ModerationActionFreezeAccount, Status: domain.ModerationActionSucceeded},
|
|
{ID: 1, Kind: domain.ModerationActionMarkScam, Status: domain.ModerationActionSucceeded},
|
|
{ID: 3, Kind: domain.ModerationActionDeletePrivateMessage, Status: domain.ModerationActionFailed},
|
|
}}
|
|
remedies := []domain.ModerationActionDraft{
|
|
{Kind: domain.ModerationActionClearPeerFlags},
|
|
{Kind: domain.ModerationActionUnfreezeAccount},
|
|
}
|
|
if err := validateAppealRemedyActions(detail, remedies); err != nil {
|
|
t.Fatalf("valid remedies err=%v", err)
|
|
}
|
|
if err := validateAppealRemedyActions(
|
|
detail, remedies[:1],
|
|
); !errors.Is(err, domain.ErrModerationActionInvalid) {
|
|
t.Fatalf("missing unfreeze err=%v", err)
|
|
}
|
|
if err := validateAppealRemedyActions(detail, []domain.ModerationActionDraft{
|
|
{Kind: domain.ModerationActionMarkFake},
|
|
{Kind: domain.ModerationActionUnfreezeAccount},
|
|
}); !errors.Is(err, domain.ErrModerationActionInvalid) {
|
|
t.Fatalf("new punishment in appeal err=%v", err)
|
|
}
|
|
detail.Actions = append(detail.Actions, domain.ModerationAction{
|
|
ID: 4, Kind: domain.ModerationActionDeletePrivateMessage,
|
|
Status: domain.ModerationActionSucceeded,
|
|
})
|
|
if err := validateAppealRemedyActions(
|
|
detail, remedies,
|
|
); !errors.Is(err, domain.ErrModerationActionInvalid) {
|
|
t.Fatalf("irreversible grant err=%v", err)
|
|
}
|
|
}
|