<?php
use MediaWiki\Auth\AuthManager;
+use MediaWiki\Block\DatabaseBlock;
+use MediaWiki\Block\CompositeBlock;
+use MediaWiki\Block\SystemBlock;
/**
* @covers PasswordReset
'enableEmail' => true,
'allowsAuthenticationDataChange' => true,
'canEditPrivate' => true,
- 'block' => new Block( [ 'createAccount' => true ] ),
+ 'block' => new DatabaseBlock( [ 'createAccount' => true ] ),
'globalBlock' => null,
'isAllowed' => false,
],
'enableEmail' => true,
'allowsAuthenticationDataChange' => true,
'canEditPrivate' => true,
- 'block' => new Block( [] ),
+ 'block' => new DatabaseBlock( [] ),
'globalBlock' => null,
'isAllowed' => true,
],
'enableEmail' => true,
'allowsAuthenticationDataChange' => true,
'canEditPrivate' => true,
- 'block' => new Block( [ 'systemBlock' => 'proxy' ] ),
+ 'block' => new SystemBlock(
+ [ 'systemBlock' => 'proxy' ]
+ ),
'globalBlock' => null,
'isAllowed' => false,
],
- 'globally blocked with account creation disabled' => [
+ 'globally blocked with account creation not disabled' => [
'passwordResetRoutes' => [ 'username' => true ],
'enableEmail' => true,
'allowsAuthenticationDataChange' => true,
'canEditPrivate' => true,
'block' => null,
- 'globalBlock' => new Block( [ 'systemBlock' => 'global-block', 'createAccount' => true ] ),
- 'isAllowed' => false,
+ 'globalBlock' => new SystemBlock(
+ [ 'systemBlock' => 'global-block' ]
+ ),
+ 'isAllowed' => true,
],
- 'globally blocked with account creation not disabled' => [
+ 'blocked via wgSoftBlockRanges' => [
'passwordResetRoutes' => [ 'username' => true ],
'enableEmail' => true,
'allowsAuthenticationDataChange' => true,
'canEditPrivate' => true,
- 'block' => null,
- 'globalBlock' => new Block( [ 'systemBlock' => 'global-block', 'createAccount' => false ] ),
+ 'block' => new SystemBlock(
+ [ 'systemBlock' => 'wgSoftBlockRanges', 'anonOnly' => true ]
+ ),
+ 'globalBlock' => null,
'isAllowed' => true,
],
- 'blocked via wgSoftBlockRanges' => [
+ 'blocked with an unknown system block type' => [
'passwordResetRoutes' => [ 'username' => true ],
'enableEmail' => true,
'allowsAuthenticationDataChange' => true,
'canEditPrivate' => true,
- 'block' => new Block( [ 'systemBlock' => 'wgSoftBlockRanges', 'anonOnly' => true ] ),
+ 'block' => new SystemBlock( [ 'systemBlock' => 'unknown' ] ),
+ 'globalBlock' => null,
+ 'isAllowed' => false,
+ ],
+ 'blocked with multiple blocks, all allowing password reset' => [
+ 'passwordResetRoutes' => [ 'username' => true ],
+ 'enableEmail' => true,
+ 'allowsAuthenticationDataChange' => true,
+ 'canEditPrivate' => true,
+ 'block' => new CompositeBlock( [
+ 'originalBlocks' => [
+ new SystemBlock( [ 'systemBlock' => 'wgSoftBlockRanges', 'anonOnly' => true ] ),
+ new Block( [] ),
+ ]
+ ] ),
'globalBlock' => null,
'isAllowed' => true,
],
- 'blocked with an unknown system block type' => [
+ 'blocked with multiple blocks, not all allowing password reset' => [
'passwordResetRoutes' => [ 'username' => true ],
'enableEmail' => true,
'allowsAuthenticationDataChange' => true,
'canEditPrivate' => true,
- 'block' => new Block( [ 'systemBlock' => 'unknown' ] ),
+ 'block' => new CompositeBlock( [
+ 'originalBlocks' => [
+ new SystemBlock( [ 'systemBlock' => 'wgSoftBlockRanges', 'anonOnly' => true ] ),
+ new SystemBlock( [ 'systemBlock' => 'proxy' ] ),
+ ]
+ ] ),
'globalBlock' => null,
'isAllowed' => false,
],