Permalink
Browse files

Merge branch '2.0' into 2.1

  • Loading branch information...
2 parents 7eda0af + fb3c3e4 commit d904ab00fa8902a9b77e01e71d4a21b68a7dacf0 @markstory markstory committed Jan 28, 2012
@@ -120,11 +120,12 @@ public function node($ref = null) {
return false;
}
} elseif (is_object($ref) && is_a($ref, 'Model')) {
- $ref = array('model' => $ref->alias, 'foreign_key' => $ref->id);
+ $ref = array('model' => $ref->name, 'foreign_key' => $ref->id);
} elseif (is_array($ref) && !(isset($ref['model']) && isset($ref['foreign_key']))) {
$name = key($ref);
+ list($plugin, $alias) = pluginSplit($name);
- $model = ClassRegistry::init(array('class' => $name, 'alias' => $name));
+ $model = ClassRegistry::init(array('class' => $name, 'alias' => $alias));
if (empty($model)) {
trigger_error(__d('cake_dev', "Model class '%s' not found in AclNode::node() when trying to bind %s object", $type, $this->alias), E_USER_WARNING);
@@ -136,7 +137,7 @@ public function node($ref = null) {
$tmpRef = $model->bindNode($ref);
}
if (empty($tmpRef)) {
- $ref = array('model' => $name, 'foreign_key' => $ref[$name][$model->primaryKey]);
+ $ref = array('model' => $alias, 'foreign_key' => $ref[$name][$model->primaryKey]);
} else {
if (is_string($tmpRef)) {
return $this->node($tmpRef);
@@ -111,6 +111,36 @@ public function testAuthorizeSuccess() {
}
/**
+ * testAuthorizeSettings
+ *
+ * @return void
+ */
+ public function testAuthorizeSettings() {
+ $request = new CakeRequest('/posts/index', false);
+ $request->addParams(array(
+ 'plugin' => null,
+ 'controller' => 'posts',
+ 'action' => 'index'
+ ));
+
+ $this->_mockAcl();
+
+ $this->auth->settings['userModel'] = 'TestPlugin.TestPluginAuthUser';
+ $user = array(
+ 'id' => 1,
+ 'user' => 'mariano'
+ );
+
+ $expected = array('TestPlugin.TestPluginAuthUser' => array('id' => 1, 'user' => 'mariano'));
+ $this->Acl->expects($this->once())
+ ->method('check')
+ ->with($expected, '/controllers/Posts/index')
+ ->will($this->returnValue(true));
+
+ $this->assertTrue($this->auth->authorize($user, $request));
+ }
+
+/**
* test action()
*
* @return void
@@ -316,7 +316,8 @@ public function testNodeArrayFind() {
$expected = array(4);
$this->assertEquals($expected, $result);
}
- /**
+
+/**
* testNodeObjectFind method
*
* @return void
@@ -359,4 +360,29 @@ public function testNodeAliasParenting() {
);
$this->assertEquals($expected, $result);
}
+
+/**
+ * testNodeActionAuthorize method
+ *
+ * @return void
+ */
+ public function testNodeActionAuthorize() {
+ App::build(array(
+ 'plugins' => array(CAKE . 'Test' . DS . 'test_app' . DS . 'Plugin' . DS)
+ ), App::RESET);
+ CakePlugin::load('TestPlugin');
+
+ $Aro = new DbAroTest();
+ $Aro->create();
+ $Aro->save(array('model' => 'TestPluginAuthUser', 'foreign_key' => 1));
+ $result = $Aro->id;
+ $expected = 5;
+ $this->assertEquals($expected, $result);
+
+ $node = $Aro->node(array('TestPlugin.TestPluginAuthUser' => array('id' => 1, 'user' => 'mariano')));
+ $result = Set::extract($node, '0.DbAroTest.id');
+ $expected = $Aro->id;
+ $this->assertEquals($expected, $result);
+ CakePlugin::unload('TestPlugin');
+ }
}

0 comments on commit d904ab0

Please sign in to comment.