@@ -868,7 +868,7 @@ void main() {
868868 group ('selfCanDeleteMessage' , () {
869869 /// Call the method, with setup from [params] .
870870 Future <bool > evaluate (CanDeleteMessageParams params) async {
871- final selfUser = eg.selfUser ;
871+ final selfUser = eg.user (role : params.selfUserRole) ;
872872 final botUserOwnedBySelf = eg.user (isBot: true , botOwnerId: selfUser.userId);
873873 final botUserNotOwnedBySelf = eg.user (isBot: true , botOwnerId: eg.otherUser.userId);
874874
@@ -1127,14 +1127,35 @@ void main() {
11271127 // doesn't exist, so we follow realmDeleteOwnMessagePolicy instead,
11281128 // and we don't error.
11291129
1130- test ('allowed' , () async {
1130+ test ('allowed (permissive policy, low role) ' , () async {
11311131 check (await evaluate (
11321132 CanDeleteMessageParams .pre291 (
11331133 senderConfig: CanDeleteMessageSenderConfig .self,
11341134 timeLimitConfig: CanDeleteMessageTimeLimitConfig .notLimited,
11351135 inRealmCanDeleteAnyMessageGroup: false ,
11361136 isChannelArchived: false ,
11371137 realmDeleteOwnMessagePolicy: RealmDeleteOwnMessagePolicy .everyone,
1138+ selfUserRole: UserRole .member,
1139+ )))
1140+ ..equals (await evaluate (
1141+ CanDeleteMessageParams .pre407 (
1142+ senderConfig: CanDeleteMessageSenderConfig .self,
1143+ timeLimitConfig: CanDeleteMessageTimeLimitConfig .notLimited,
1144+ inRealmCanDeleteAnyMessageGroup: false ,
1145+ inRealmCanDeleteOwnMessageGroup: true ,
1146+ isChannelArchived: false )))
1147+ ..isTrue ();
1148+ });
1149+
1150+ test ('allowed (strict policy, high role)' , () async {
1151+ check (await evaluate (
1152+ CanDeleteMessageParams .pre291 (
1153+ senderConfig: CanDeleteMessageSenderConfig .self,
1154+ timeLimitConfig: CanDeleteMessageTimeLimitConfig .notLimited,
1155+ inRealmCanDeleteAnyMessageGroup: false ,
1156+ isChannelArchived: false ,
1157+ realmDeleteOwnMessagePolicy: RealmDeleteOwnMessagePolicy .admins,
1158+ selfUserRole: UserRole .administrator,
11381159 )))
11391160 ..equals (await evaluate (
11401161 CanDeleteMessageParams .pre407 (
@@ -1154,6 +1175,7 @@ void main() {
11541175 inRealmCanDeleteAnyMessageGroup: false ,
11551176 isChannelArchived: false ,
11561177 realmDeleteOwnMessagePolicy: RealmDeleteOwnMessagePolicy .admins,
1178+ selfUserRole: UserRole .moderator,
11571179 )))..equals (await evaluate (
11581180 CanDeleteMessageParams .pre407 (
11591181 senderConfig: CanDeleteMessageSenderConfig .self,
@@ -1177,13 +1199,15 @@ void main() {
11771199 timeLimitConfig: CanDeleteMessageTimeLimitConfig .notLimited,
11781200 isChannelArchived: false ,
11791201 realmDeleteOwnMessagePolicy: RealmDeleteOwnMessagePolicy .everyone,
1202+ selfUserRole: UserRole .member,
11801203 )))..equals (await evaluate (
11811204 CanDeleteMessageParams .pre291 (
11821205 senderConfig: CanDeleteMessageSenderConfig .otherHuman,
11831206 timeLimitConfig: CanDeleteMessageTimeLimitConfig .notLimited,
11841207 inRealmCanDeleteAnyMessageGroup: false ,
11851208 isChannelArchived: false ,
1186- realmDeleteOwnMessagePolicy: RealmDeleteOwnMessagePolicy .everyone)))
1209+ realmDeleteOwnMessagePolicy: RealmDeleteOwnMessagePolicy .everyone,
1210+ selfUserRole: UserRole .member)))
11871211 ..isFalse ();
11881212 });
11891213 });
@@ -2006,6 +2030,7 @@ class CanDeleteMessageParams {
20062030 final bool ? inChannelCanDeleteAnyMessageGroup;
20072031 final bool ? inChannelCanDeleteOwnMessageGroup;
20082032 final RealmDeleteOwnMessagePolicy ? realmDeleteOwnMessagePolicy;
2033+ final UserRole ? selfUserRole;
20092034
20102035 CanDeleteMessageParams ._({
20112036 required this .senderConfig,
@@ -2016,6 +2041,7 @@ class CanDeleteMessageParams {
20162041 required this .inChannelCanDeleteAnyMessageGroup,
20172042 required this .inChannelCanDeleteOwnMessageGroup,
20182043 required this .realmDeleteOwnMessagePolicy,
2044+ required this .selfUserRole,
20192045 });
20202046
20212047 CanDeleteMessageParams .modern ({
@@ -2026,7 +2052,9 @@ class CanDeleteMessageParams {
20262052 required this .isChannelArchived,
20272053 required this .inChannelCanDeleteAnyMessageGroup,
20282054 required this .inChannelCanDeleteOwnMessageGroup,
2029- }) : realmDeleteOwnMessagePolicy = null ;
2055+ }) :
2056+ realmDeleteOwnMessagePolicy = null ,
2057+ selfUserRole = null ;
20302058
20312059 factory CanDeleteMessageParams .restrictiveForChannelMessageExcept ({
20322060 CanDeleteMessageSenderConfig ? senderConfig,
@@ -2110,6 +2138,7 @@ class CanDeleteMessageParams {
21102138 inChannelCanDeleteAnyMessageGroup: null ,
21112139 inChannelCanDeleteOwnMessageGroup: null ,
21122140 realmDeleteOwnMessagePolicy: null ,
2141+ selfUserRole: null ,
21132142 );
21142143
21152144 // TODO(server-10) delete
@@ -2119,6 +2148,7 @@ class CanDeleteMessageParams {
21192148 required bool inRealmCanDeleteAnyMessageGroup,
21202149 required bool ? isChannelArchived,
21212150 required RealmDeleteOwnMessagePolicy realmDeleteOwnMessagePolicy,
2151+ required UserRole selfUserRole,
21222152 }) => CanDeleteMessageParams ._(
21232153 senderConfig: senderConfig,
21242154 timeLimitConfig: timeLimitConfig,
@@ -2128,6 +2158,7 @@ class CanDeleteMessageParams {
21282158 inChannelCanDeleteAnyMessageGroup: null ,
21292159 inChannelCanDeleteOwnMessageGroup: null ,
21302160 realmDeleteOwnMessagePolicy: realmDeleteOwnMessagePolicy,
2161+ selfUserRole: selfUserRole,
21312162 );
21322163
21332164 // TODO(server-10) delete
@@ -2136,6 +2167,7 @@ class CanDeleteMessageParams {
21362167 required CanDeleteMessageTimeLimitConfig timeLimitConfig,
21372168 required bool ? isChannelArchived,
21382169 required RealmDeleteOwnMessagePolicy realmDeleteOwnMessagePolicy,
2170+ required UserRole selfUserRole,
21392171 }) => CanDeleteMessageParams ._(
21402172 senderConfig: senderConfig,
21412173 timeLimitConfig: timeLimitConfig,
@@ -2145,6 +2177,7 @@ class CanDeleteMessageParams {
21452177 inChannelCanDeleteAnyMessageGroup: null ,
21462178 inChannelCanDeleteOwnMessageGroup: null ,
21472179 realmDeleteOwnMessagePolicy: realmDeleteOwnMessagePolicy,
2180+ selfUserRole: selfUserRole,
21482181 );
21492182
21502183 String describe () {
0 commit comments