diff --git a/core/modules/views/src/Tests/NodeAccessTest.php b/core/modules/views/src/Tests/NodeAccessTest.php new file mode 100644 index 0000000..69397f4 --- /dev/null +++ b/core/modules/views/src/Tests/NodeAccessTest.php @@ -0,0 +1,110 @@ +setUpFieldStorages(1); + + // Attach the field to nodes only. + $field = array( + 'field_name' => $field_names[0], + 'entity_type' => 'node', + 'bundle' => 'page', + ); + entity_create('field_config', $field)->save(); + + // Create Entity Reference field. + $this->fieldStorages[] = entity_create('field_storage_config', array( + 'field_name' => 'field_related_pages', + 'entity_type' => 'node', + 'type' => 'entity_reference', + 'settings' => array('target_type' => 'node'), + )); + $this->fieldStorages[count($this->fieldStorages)]->save(); + + // Attach the entity_reference field to articles only. + $field = entity_create('field_config', array( + 'field_storage' => $this->fieldStorages[count($this->fieldStorages)], + 'bundle' => 'article', + 'settings' => array( + 'handler' => 'default', + 'handler_settings' => array( + 'target_bundles' => array('page'), + 'sort' => array('field' => '_none'), + ), + ), + )); + $field->save(); + + // Now create some example nodes/users for the view result. + for ($i = 0; $i < 2; $i++) { + $edit = array( + $field_names[0] => array((array('value' => $this->randomMachineName()))), + ); + if ($i > 1) { + $edit[0][] =['value' => $this->randomMachineName()] + } + $nodes[] = $this->drupalCreateNode($edit); + } + + $this->container->get('views.views_data')->clear(); + } + + /** + * Unit testing the view. + * + */ + function testViewsData() { + // TODO: Use an actual view that demonstrates the problem. + $view = Views::getView('archive'); + $view->setDisplay(); + + // Login as anonymous user. + + // Execute the view. + $view->execute(); + + // Assert the row count of the view. + $count = count($view->result); + debug($count); + $this->assertEqual(1, $count, 'The number of returned rows match.'); + + // Log in as admin user. + + // Execute the view. + + // Assert the row count of the view. + + // Enable the mynodeaccess module. + + // Rebuild node-access permissions at admin/reports/status/rebuild + + // Execute the view: admin and anonymous users will again see the same thing. + } + +} diff --git a/core/modules/views/tests/modules/mynodeaccess/mynodeaccess.info.yml b/core/modules/views/tests/modules/mynodeaccess/mynodeaccess.info.yml new file mode 100644 index 0000000..313025d --- /dev/null +++ b/core/modules/views/tests/modules/mynodeaccess/mynodeaccess.info.yml @@ -0,0 +1,8 @@ +name: My node access test module +description: Implement hook_node_grants and see what happens. +package: Aangstrom +type: module +version: 1.0 +core: 8.x +dependencies: + - node diff --git a/core/modules/views/tests/modules/mynodeaccess/mynodeaccess.module b/core/modules/views/tests/modules/mynodeaccess/mynodeaccess.module new file mode 100644 index 0000000..16bfe8d --- /dev/null +++ b/core/modules/views/tests/modules/mynodeaccess/mynodeaccess.module @@ -0,0 +1,30 @@ + array(0), + ); +} diff --git a/core/modules/views/tests/modules/viewsfix/test_views/views.view.articles.yml b/core/modules/views/tests/modules/viewsfix/test_views/views.view.articles.yml new file mode 100644 index 0000000..72101ff --- /dev/null +++ b/core/modules/views/tests/modules/viewsfix/test_views/views.view.articles.yml @@ -0,0 +1,234 @@ +uuid: dde073d6-5637-418f-945e-946a9926ab24 +langcode: en +status: true +dependencies: + config: + - node.type.article + module: + - node +id: articles +label: articles +module: views +description: '' +tag: '' +base_table: node +base_field: nid +core: 8.x +display: + default: + display_plugin: default + id: default + display_title: Master + position: 0 + display_options: + access: + type: none + options: { } + cache: + type: none + options: { } + query: + type: views_query + options: + disable_sql_rewrite: false + distinct: false + replica: false + query_comment: '' + query_tags: { } + exposed_form: + type: basic + options: + submit_button: Apply + reset_button: false + reset_button_label: Reset + exposed_sorts_label: 'Sort by' + expose_sort_order: true + sort_asc_label: Asc + sort_desc_label: Desc + pager: + type: full + options: + items_per_page: 10 + offset: 0 + id: 0 + total_pages: null + expose: + items_per_page: false + items_per_page_label: 'Items per page' + items_per_page_options: '5, 10, 25, 50' + items_per_page_options_all: false + items_per_page_options_all_label: '- All -' + offset: false + offset_label: Offset + tags: + previous: '‹ previous' + next: 'next ›' + first: '« first' + last: 'last »' + quantity: 9 + style: + type: table + options: + grouping: { } + row_class: '' + default_row_class: true + override: true + sticky: false + caption: '' + summary: '' + description: '' + columns: + title: title + info: + title: + sortable: false + default_sort_order: asc + align: '' + separator: '' + empty_column: false + responsive: '' + default: '-1' + empty_table: false + row: + type: fields + options: + inline: { } + separator: '' + hide_empty: false + default_field_elements: true + fields: + title: + id: title + table: node_field_data + field: title + entity_type: node + entity_field: title + label: '' + alter: + alter_text: false + make_link: false + absolute: false + trim: false + word_boundary: false + ellipsis: false + strip_tags: false + html: false + hide_empty: false + empty_zero: false + link_to_node: true + plugin_id: node + relationship: none + group_type: group + admin_label: '' + exclude: false + element_type: '' + element_class: '' + element_label_type: '' + element_label_class: '' + element_label_colon: true + element_wrapper_type: '' + element_wrapper_class: '' + element_default_classes: true + empty: '' + hide_alter_empty: true + title_1: + id: title_1 + table: node_field_data + field: title + relationship: field_related_pages + group_type: group + admin_label: '' + label: Title + exclude: false + alter: + alter_text: false + text: '' + make_link: false + path: '' + absolute: false + external: false + replace_spaces: false + path_case: none + trim_whitespace: false + alt: '' + rel: '' + link_class: '' + prefix: '' + suffix: '' + target: '' + nl2br: false + max_length: null + word_boundary: true + ellipsis: true + more_link: false + more_link_text: '' + more_link_path: '' + strip_tags: false + trim: false + preserve_tags: '' + html: false + element_type: '' + element_class: '' + element_label_type: '' + element_label_class: '' + element_label_colon: true + element_wrapper_type: '' + element_wrapper_class: '' + element_default_classes: true + empty: '' + hide_empty: false + empty_zero: false + hide_alter_empty: true + link_to_node: true + entity_type: node + entity_field: title + plugin_id: node + filters: + status: + value: true + table: node_field_data + field: status + plugin_id: boolean + entity_type: node + entity_field: status + id: status + expose: + operator: '' + group: 1 + type: + id: type + table: node + field: type + value: + article: article + entity_type: node + entity_field: type + plugin_id: bundle + sorts: { } + header: { } + footer: { } + empty: { } + relationships: + field_related_pages: + id: field_related_pages + table: node__field_related_pages + field: field_related_pages + relationship: none + group_type: group + admin_label: 'field_related_pages: Content' + required: false + plugin_id: standard + arguments: { } + display_extenders: { } + field_langcode: '***LANGUAGE_language_content***' + field_langcode_add_to_query: null + page_1: + display_plugin: page + id: page_1 + display_title: Page + position: 1 + display_options: + display_extenders: { } + field_langcode: '***LANGUAGE_language_content***' + field_langcode_add_to_query: null + path: articles \ No newline at end of file diff --git a/core/modules/views/tests/modules/viewsfix/viewsfix.info.yml b/core/modules/views/tests/modules/viewsfix/viewsfix.info.yml new file mode 100644 index 0000000..156eab4 --- /dev/null +++ b/core/modules/views/tests/modules/viewsfix/viewsfix.info.yml @@ -0,0 +1,8 @@ +name: Views fix test module +description: Heavy-handed fix for https://www.drupal.org/node/2273849. +package: Aangstrom +type: module +version: 1.0 +core: 8.x +dependencies: + - views diff --git a/core/modules/views/tests/modules/viewsfix/viewsfix.module b/core/modules/views/tests/modules/viewsfix/viewsfix.module new file mode 100644 index 0000000..7f7af04 --- /dev/null +++ b/core/modules/views/tests/modules/viewsfix/viewsfix.module @@ -0,0 +1,17 @@ +