Skip to content
Projects
Groups
Snippets
Help
This project
Loading...
Sign in / Register
Toggle navigation
Y
yii2
Project
Overview
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
PSDI Army
yii2
Commits
905e39ed
Commit
905e39ed
authored
May 07, 2014
by
Alexander Makarov
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
RBAC migration is now aware of custom table names, speeded up RBAC tests
parent
12732cfa
Hide whitespace changes
Inline
Side-by-side
Showing
12 changed files
with
91 additions
and
56 deletions
+91
-56
m140506_102106_rbac_init.php
framework/rbac/migrations/m140506_102106_rbac_init.php
+36
-17
TestCase.php
tests/unit/TestCase.php
+1
-1
ElasticSearchTestCase.php
...s/unit/extensions/elasticsearch/ElasticSearchTestCase.php
+2
-2
MongoDbTestCase.php
tests/unit/extensions/mongodb/MongoDbTestCase.php
+1
-1
RedisCacheTest.php
tests/unit/extensions/redis/RedisCacheTest.php
+1
-1
RedisTestCase.php
tests/unit/extensions/redis/RedisTestCase.php
+2
-2
SphinxTestCase.php
tests/unit/extensions/sphinx/SphinxTestCase.php
+1
-1
DbCacheTest.php
tests/unit/framework/caching/DbCacheTest.php
+1
-1
DatabaseTestCase.php
tests/unit/framework/db/DatabaseTestCase.php
+1
-1
DbManagerTestCase.php
tests/unit/framework/rbac/DbManagerTestCase.php
+43
-27
PgSQLManagerTest.php
tests/unit/framework/rbac/PgSQLManagerTest.php
+1
-1
SqliteManagerTest.php
tests/unit/framework/rbac/SqliteManagerTest.php
+1
-1
No files found.
framework/rbac/migrations/m140506_102106_rbac_init.php
View file @
905e39ed
<?php
use
yii\base\InvalidConfigException
;
use
yii\db\Schema
;
use
yii\rbac\DbManager
;
class
m140506_102106_rbac_init
extends
\yii\db\Migration
{
/**
* @throws yii\base\InvalidConfigException
* @return DbManager
*/
protected
function
getAuthManager
()
{
$authManager
=
Yii
::
$app
->
getAuthManager
();
if
(
!
$authManager
instanceof
DbManager
)
{
throw
new
InvalidConfigException
(
'You should configure "authManager" component to use database before executing this migration.'
);
}
return
$authManager
;
}
public
function
up
()
{
$authManager
=
$this
->
getAuthManager
();
$tableOptions
=
null
;
if
(
$this
->
db
->
driverName
===
'mysql'
)
{
$tableOptions
=
'CHARACTER SET utf8 COLLATE utf8_general_ci ENGINE=InnoDB'
;
}
$this
->
createTable
(
'{{%auth_rule}}'
,
[
$this
->
createTable
(
$authManager
->
ruleTable
,
[
'name'
=>
Schema
::
TYPE_STRING
.
'(64) NOT NULL'
,
'data'
=>
Schema
::
TYPE_TEXT
,
'created_at'
=>
Schema
::
TYPE_INTEGER
,
'updated_at'
=>
Schema
::
TYPE_INTEGER
,
],
$tableOptions
);
$this
->
addPrimaryKey
(
'pk-auth_rule'
,
'{{%auth_rule}}'
,
'name'
);
$this
->
addPrimaryKey
(
'pk-auth_rule'
,
$authManager
->
ruleTable
,
'name'
);
$this
->
createTable
(
'{{%auth_item}}'
,
[
$this
->
createTable
(
$authManager
->
itemTable
,
[
'name'
=>
Schema
::
TYPE_STRING
.
'(64) NOT NULL'
,
'type'
=>
Schema
::
TYPE_INTEGER
.
' NOT NULL'
,
'description'
=>
Schema
::
TYPE_TEXT
,
...
...
@@ -28,32 +45,34 @@ class m140506_102106_rbac_init extends \yii\db\Migration
'created_at'
=>
Schema
::
TYPE_INTEGER
,
'updated_at'
=>
Schema
::
TYPE_INTEGER
,
],
$tableOptions
);
$this
->
addPrimaryKey
(
'pk-auth_item'
,
'{{%auth_item}}'
,
'name'
);
$this
->
addForeignKey
(
'fk-auth_item-rule_name'
,
'{{%auth_item}}'
,
'rule_name'
,
'{{%auth_rule}}'
,
'name'
,
'SET NULL'
,
'CASCADE'
);
$this
->
createIndex
(
'idx-auth_item-type'
,
'{{%auth_item}}'
,
'type'
);
$this
->
addPrimaryKey
(
'pk-auth_item'
,
$authManager
->
itemTable
,
'name'
);
$this
->
addForeignKey
(
'fk-auth_item-rule_name'
,
$authManager
->
itemTable
,
'rule_name'
,
$authManager
->
ruleTable
,
'name'
,
'SET NULL'
,
'CASCADE'
);
$this
->
createIndex
(
'idx-auth_item-type'
,
$authManager
->
itemTable
,
'type'
);
$this
->
createTable
(
'{{%auth_item_child}}'
,
[
$this
->
createTable
(
$authManager
->
itemChildTable
,
[
'parent'
=>
Schema
::
TYPE_STRING
.
'(64) NOT NULL'
,
'child'
=>
Schema
::
TYPE_STRING
.
'(64) NOT NULL'
,
],
$tableOptions
);
$this
->
addPrimaryKey
(
'pk-auth_item_child'
,
'{{%auth_item_child}}'
,
[
'parent'
,
'child'
]);
$this
->
addForeignKey
(
'fk-auth_item_child-parent'
,
'{{%auth_item_child}}'
,
'parent'
,
'{{%auth_item}}'
,
'name'
,
'CASCADE'
,
'CASCADE'
);
$this
->
addForeignKey
(
'fk-auth_item_child-child'
,
'{{%auth_item_child}}'
,
'child'
,
'{{%auth_item}}'
,
'name'
,
'CASCADE'
,
'CASCADE'
);
$this
->
addPrimaryKey
(
'pk-auth_item_child'
,
$authManager
->
itemChildTable
,
[
'parent'
,
'child'
]);
$this
->
addForeignKey
(
'fk-auth_item_child-parent'
,
$authManager
->
itemChildTable
,
'parent'
,
$authManager
->
itemTable
,
'name'
,
'CASCADE'
,
'CASCADE'
);
$this
->
addForeignKey
(
'fk-auth_item_child-child'
,
$authManager
->
itemChildTable
,
'child'
,
$authManager
->
itemTable
,
'name'
,
'CASCADE'
,
'CASCADE'
);
$this
->
createTable
(
'{{%auth_assignment}}'
,
[
$this
->
createTable
(
$authManager
->
assignmentTable
,
[
'item_name'
=>
Schema
::
TYPE_STRING
.
'(64) NOT NULL'
,
'user_id'
=>
Schema
::
TYPE_STRING
.
'(64) NOT NULL'
,
'created_at'
=>
Schema
::
TYPE_INTEGER
,
],
$tableOptions
);
$this
->
addPrimaryKey
(
'pk-auth_assignment'
,
'{{%auth_assignment}}'
,
[
'item_name'
,
'user_id'
]);
$this
->
addForeignKey
(
'fk-auth_assignment-item_name'
,
'{{%auth_assignment}}'
,
'item_name'
,
'{{%auth_item}}'
,
'name'
,
'CASCADE'
,
'CASCADE'
);
$this
->
addPrimaryKey
(
'pk-auth_assignment'
,
$authManager
->
assignmentTable
,
[
'item_name'
,
'user_id'
]);
$this
->
addForeignKey
(
'fk-auth_assignment-item_name'
,
$authManager
->
assignmentTable
,
'item_name'
,
$authManager
->
itemTable
,
'name'
,
'CASCADE'
,
'CASCADE'
);
}
public
function
down
()
{
$this
->
dropTable
(
'{{%auth_assignment}}'
);
$this
->
dropTable
(
'{{%auth_item_child}}'
);
$this
->
dropTable
(
'{{%auth_item}}'
);
$this
->
dropTable
(
'{{%auth_rule}}'
);
$authManager
=
$this
->
getAuthManager
();
$this
->
dropTable
(
$authManager
->
assignmentTable
);
$this
->
dropTable
(
$authManager
->
itemChildTable
);
$this
->
dropTable
(
$authManager
->
itemTable
);
$this
->
dropTable
(
$authManager
->
ruleTable
);
}
}
tests/unit/TestCase.php
View file @
905e39ed
...
...
@@ -27,7 +27,7 @@ abstract class TestCase extends \PHPUnit_Framework_TestCase
* @param mixed $default default value to use when param is not set.
* @return mixed the value of the configuration param
*/
public
function
getParam
(
$name
,
$default
=
null
)
public
static
function
getParam
(
$name
,
$default
=
null
)
{
if
(
static
::
$params
===
null
)
{
static
::
$params
=
require
(
__DIR__
.
'/data/config.php'
);
...
...
tests/unit/extensions/elasticsearch/ElasticSearchTestCase.php
View file @
905e39ed
...
...
@@ -17,7 +17,7 @@ class ElasticSearchTestCase extends TestCase
{
$this
->
mockApplication
();
$databases
=
$this
->
getParam
(
'databases'
);
$databases
=
self
::
getParam
(
'databases'
);
$params
=
isset
(
$databases
[
'elasticsearch'
])
?
$databases
[
'elasticsearch'
]
:
null
;
if
(
$params
===
null
||
!
isset
(
$params
[
'dsn'
]))
{
$this
->
markTestSkipped
(
'No elasticsearch server connection configured.'
);
...
...
@@ -40,7 +40,7 @@ class ElasticSearchTestCase extends TestCase
*/
public
function
getConnection
(
$reset
=
true
)
{
$databases
=
$this
->
getParam
(
'databases'
);
$databases
=
self
::
getParam
(
'databases'
);
$params
=
isset
(
$databases
[
'elasticsearch'
])
?
$databases
[
'elasticsearch'
]
:
[];
$db
=
new
Connection
();
if
(
$reset
)
{
...
...
tests/unit/extensions/mongodb/MongoDbTestCase.php
View file @
905e39ed
...
...
@@ -34,7 +34,7 @@ class MongoDbTestCase extends TestCase
if
(
!
extension_loaded
(
'mongo'
))
{
$this
->
markTestSkipped
(
'mongo extension required.'
);
}
$config
=
$this
->
getParam
(
'mongodb'
);
$config
=
self
::
getParam
(
'mongodb'
);
if
(
!
empty
(
$config
))
{
$this
->
mongoDbConfig
=
$config
;
}
...
...
tests/unit/extensions/redis/RedisCacheTest.php
View file @
905e39ed
...
...
@@ -22,7 +22,7 @@ class RedisCacheTest extends CacheTestCase
*/
protected
function
getCacheInstance
()
{
$databases
=
$this
->
getParam
(
'databases'
);
$databases
=
self
::
getParam
(
'databases'
);
$params
=
isset
(
$databases
[
'redis'
])
?
$databases
[
'redis'
]
:
null
;
if
(
$params
===
null
)
{
$this
->
markTestSkipped
(
'No redis server connection configured.'
);
...
...
tests/unit/extensions/redis/RedisTestCase.php
View file @
905e39ed
...
...
@@ -15,7 +15,7 @@ abstract class RedisTestCase extends TestCase
{
protected
function
setUp
()
{
$databases
=
$this
->
getParam
(
'databases'
);
$databases
=
self
::
getParam
(
'databases'
);
$params
=
isset
(
$databases
[
'redis'
])
?
$databases
[
'redis'
]
:
null
;
if
(
$params
===
null
)
{
$this
->
markTestSkipped
(
'No redis server connection configured.'
);
...
...
@@ -36,7 +36,7 @@ abstract class RedisTestCase extends TestCase
*/
public
function
getConnection
(
$reset
=
true
)
{
$databases
=
$this
->
getParam
(
'databases'
);
$databases
=
self
::
getParam
(
'databases'
);
$params
=
isset
(
$databases
[
'redis'
])
?
$databases
[
'redis'
]
:
[];
$db
=
new
Connection
(
$params
);
if
(
$reset
)
{
...
...
tests/unit/extensions/sphinx/SphinxTestCase.php
View file @
905e39ed
...
...
@@ -48,7 +48,7 @@ class SphinxTestCase extends TestCase
if
(
!
extension_loaded
(
'pdo'
)
||
!
extension_loaded
(
'pdo_mysql'
))
{
$this
->
markTestSkipped
(
'pdo and pdo_mysql extension are required.'
);
}
$config
=
$this
->
getParam
(
'sphinx'
);
$config
=
self
::
getParam
(
'sphinx'
);
if
(
!
empty
(
$config
))
{
$this
->
sphinxConfig
=
$config
[
'sphinx'
];
$this
->
dbConfig
=
$config
[
'db'
];
...
...
tests/unit/framework/caching/DbCacheTest.php
View file @
905e39ed
...
...
@@ -40,7 +40,7 @@ class DbCacheTest extends CacheTestCase
public
function
getConnection
(
$reset
=
true
)
{
if
(
$this
->
_connection
===
null
)
{
$databases
=
$this
->
getParam
(
'databases'
);
$databases
=
self
::
getParam
(
'databases'
);
$params
=
$databases
[
'mysql'
];
$db
=
new
\yii\db\Connection
;
$db
->
dsn
=
$params
[
'dsn'
];
...
...
tests/unit/framework/db/DatabaseTestCase.php
View file @
905e39ed
...
...
@@ -16,7 +16,7 @@ abstract class DatabaseTestCase extends TestCase
protected
function
setUp
()
{
parent
::
setUp
();
$databases
=
$this
->
getParam
(
'databases'
);
$databases
=
self
::
getParam
(
'databases'
);
$this
->
database
=
$databases
[
$this
->
driverName
];
$pdo_database
=
'pdo_'
.
$this
->
driverName
;
...
...
tests/unit/framework/rbac/DbManagerTestCase.php
View file @
905e39ed
...
...
@@ -11,21 +11,25 @@ use yii\rbac\DbManager;
*/
abstract
class
DbManagerTestCase
extends
ManagerTestCase
{
protected
$database
;
protected
$driverName
=
'mysql'
;
protected
static
$database
;
protected
static
$driverName
=
'mysql'
;
/**
* @var Connection
*/
protected
$db
;
protected
static
$db
;
protected
function
getMigrator
()
/**
* @return MigrateController
*/
protected
static
function
getMigrator
()
{
$app
=
new
Application
([
'id'
=>
'Migrator'
,
'basePath'
=>
'@yiiunit'
,
'components'
=>
[
'db'
=>
$this
->
getConnection
(),
'db'
=>
static
::
getConnection
(),
'authManager'
=>
'\yii\rbac\DbManager'
,
],
]);
...
...
@@ -35,29 +39,41 @@ abstract class DbManagerTestCase extends ManagerTestCase
return
$migrator
;
}
p
rotected
function
setUp
()
p
ublic
static
function
setUpBeforeClass
()
{
parent
::
setUp
();
$databases
=
$this
->
getParam
(
'databases'
);
$this
->
database
=
$databases
[
$this
->
driverName
];
$pdo_database
=
'pdo_'
.
$this
->
driverName
;
parent
::
setUp
BeforeClass
();
$databases
=
static
::
getParam
(
'databases'
);
static
::
$database
=
$databases
[
static
::
$
driverName
];
$pdo_database
=
'pdo_'
.
static
::
$
driverName
;
if
(
!
extension_loaded
(
'pdo'
)
||
!
extension_loaded
(
$pdo_database
))
{
$this
->
markTestSkipped
(
'pdo and '
.
$pdo_database
.
' extension are required.'
);
static
::
markTestSkipped
(
'pdo and '
.
$pdo_database
.
' extension are required.'
);
}
static
::
getMigrator
()
->
run
(
'up'
);
}
public
static
function
tearDownAfterClass
()
{
static
::
getMigrator
()
->
run
(
'down'
);
if
(
static
::
$db
)
{
static
::
$db
->
close
();
}
\Yii
::
$app
=
null
;
parent
::
tearDownAfterClass
();
}
protected
function
setUp
()
{
parent
::
setUp
();
$this
->
auth
=
new
DbManager
([
'db'
=>
$this
->
getConnection
()]);
$this
->
getMigrator
()
->
run
(
'up'
);
}
protected
function
tearDown
()
{
parent
::
tearDown
();
$this
->
getMigrator
()
->
run
(
'down'
);
if
(
$this
->
db
)
{
$this
->
db
->
close
();
}
$this
->
destroyApplication
();
$this
->
auth
->
removeAll
();
}
/**
...
...
@@ -68,24 +84,24 @@ abstract class DbManagerTestCase extends ManagerTestCase
* @throws \yii\base\InvalidConfigException
* @return \yii\db\Connection
*/
public
function
getConnection
(
$reset
=
true
,
$open
=
true
)
public
static
function
getConnection
(
$reset
=
true
,
$open
=
true
)
{
if
(
!
$reset
&&
$this
->
db
)
{
return
$this
->
db
;
if
(
!
$reset
&&
static
::
$
db
)
{
return
static
::
$
db
;
}
$db
=
new
Connection
;
$db
->
dsn
=
$this
->
database
[
'dsn'
];
if
(
isset
(
$this
->
database
[
'username'
]))
{
$db
->
username
=
$this
->
database
[
'username'
];
$db
->
password
=
$this
->
database
[
'password'
];
$db
->
dsn
=
static
::
$
database
[
'dsn'
];
if
(
isset
(
static
::
$
database
[
'username'
]))
{
$db
->
username
=
static
::
$
database
[
'username'
];
$db
->
password
=
static
::
$
database
[
'password'
];
}
if
(
isset
(
$this
->
database
[
'attributes'
]))
{
$db
->
attributes
=
$this
->
database
[
'attributes'
];
if
(
isset
(
static
::
$
database
[
'attributes'
]))
{
$db
->
attributes
=
static
::
$
database
[
'attributes'
];
}
if
(
$open
)
{
$db
->
open
();
}
$this
->
db
=
$db
;
static
::
$
db
=
$db
;
return
$db
;
}
...
...
tests/unit/framework/rbac/PgSQLManagerTest.php
View file @
905e39ed
...
...
@@ -6,5 +6,5 @@ namespace yiiunit\framework\rbac;
*/
class
PgSQLManagerTest
extends
DbManagerTestCase
{
protected
$driverName
=
'pgsql'
;
protected
static
$driverName
=
'pgsql'
;
}
tests/unit/framework/rbac/SqliteManagerTest.php
View file @
905e39ed
...
...
@@ -6,5 +6,5 @@ namespace yiiunit\framework\rbac;
*/
class
SqliteManagerTest
extends
DbManagerTestCase
{
protected
$driverName
=
'sqlite'
;
protected
static
$driverName
=
'sqlite'
;
}
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment