function TaxonomyImageTest::testTaxonomyImageAccess
File
-
core/
modules/ taxonomy/ tests/ src/ Functional/ TaxonomyImageTest.php, line 82
Class
- TaxonomyImageTest
- Tests access checks of private image fields.
Namespace
Drupal\Tests\taxonomy\FunctionalCode
public function testTaxonomyImageAccess() {
$user = $this->drupalCreateUser([
'administer site configuration',
'administer taxonomy',
'access user profiles',
]);
$this->drupalLogin($user);
// Create a term and upload the image.
$files = $this->drupalGetTestFiles('image');
$image = array_pop($files);
$edit['name[0][value]'] = $this->randomMachineName();
$edit['files[field_test_0]'] = \Drupal::service('file_system')->realpath($image->uri);
$this->drupalPostForm('admin/structure/taxonomy/manage/' . $this->vocabulary
->id() . '/add', $edit, t('Save'));
$this->drupalPostForm(NULL, [
'field_test[0][alt]' => $this->randomMachineName(),
], t('Save'));
$terms = \Drupal::entityTypeManager()->getStorage('taxonomy_term')
->loadByProperties([
'name' => $edit['name[0][value]'],
]);
$term = reset($terms);
$this->assertText(t('Created new term @name.', [
'@name' => $term->getName(),
]));
// Create a user that should have access to the file and one that doesn't.
$access_user = $this->drupalCreateUser([
'access content',
]);
$no_access_user = $this->drupalCreateUser();
$image = File::load($term->field_test->target_id);
// Ensure a user that should be able to access the file can access it.
$this->drupalLogin($access_user);
$this->drupalGet(file_create_url($image->getFileUri()));
$this->assertSession()
->statusCodeEquals(200);
// Ensure a user that should not be able to access the file cannot access
// it.
$this->drupalLogin($no_access_user);
$this->drupalGet(file_create_url($image->getFileUri()));
$this->assertSession()
->statusCodeEquals(403);
}
Buggy or inaccurate documentation? Please file an issue. Need support? Need help programming? Connect with the Drupal community.