diff --git tests/node/views_node_argument_validator.test tests/node/views_node_argument_validator.test
new file mode 100644
index 0000000..32bb124
--- /dev/null
+++ tests/node/views_node_argument_validator.test
@@ -0,0 +1,121 @@
+<?php
+// $Id$
+module_load_include('inc', 'views', 'tests/views_query');
+
+class viewsNodeArgumentValidator extends ViewsSqlTest {
+
+  /**
+   * Store the current tested view.
+   */
+  private $view = NULL;
+
+  function getInfo() {
+    return array(
+    'name' => t('Node argument validator tests'),
+    'description' => t('Test the node argument validator plugins.'),
+    'group' => 'Views',
+    );
+  }
+
+  function testNodeArgumentValidator() {
+    $view = $this->view_node_argument_validator();
+
+    // Setup accounts.
+    $create_user = $this->drupalCreateUser();
+    $login_user = $this->drupalCreateUser();
+    $this->drupalLogin($login_user);
+
+    // @TODO Move this creation into a method
+    // Create two node types and some random nodes
+    $type1 = $this->drupalCreateContentType();
+    $type2 = $this->drupalCreateContentType();
+
+    $node2 = $node1 = array('uid' => $create_user->uid);
+    $node1['type'] = $type1->type;
+    $node2['type'] = $type2->type;
+    for ($i = 0; $i < 3; $i++) {
+      $node = $this->drupalCreateNode($node1);
+      $nodes1[$node->nid] = $node;
+      $node = $this->drupalCreateNode($node2);
+      $nodes2[$node->nid] = $node;
+    }
+    // Initialize view and the handlers
+    $view->set_display('default');
+    $view->pre_execute();
+    $view->init_handlers();
+
+    // Check single nid of the argument.
+    $view->argument['null']->options['validate_options']['nid_type'] = 'nid';
+    $this->assertFalse($view->argument['null']->validate_arg($this->randomString()), 'Node argument validator fails for non-numeric');
+    $view->argument['null']->argument_validated = NULL;
+    $this->assertFalse($view->argument['null']->validate_arg(1000), 'Non existing node should fail');
+    $view->argument['null']->argument_validated = NULL;
+    $this->assertTrue($view->argument['null']->validate_arg(key($nodes1)), 'Existing node should be valid');
+    $view->argument['null']->argument_validated = NULL;
+    debug($nodes1);
+    debug(key($nodes1));
+
+
+    // Check the access setting.
+    // Therefore check a node, which the current user has access, too.
+
+    $view->argument['null']->options['validate_options']['nid_type'] = 'nid';
+    $view->argument['null']->options['validate_options']['access'] = TRUE;
+    debug($view->argument['null']->options);
+
+    $node = $nodes1[key($nodes1)];
+    $this->assertTrue($view->argument['null']->validate_arg($node->nid), 'Published nodes are valid');
+    $view->argument['null']->argument_validated = NULL;    // Then unpublish the node, the current user has no access to it, so it has to fail.
+    $node = $nodes1[key($nodes1)];
+    node_unpublish_action($node);
+    node_save($node);
+    // Reset node object.
+    node_load($node->nid, NULL, TRUE);
+
+    $this->assertFalse($view->argument['null']->validate_arg($node->nid), 'Unpublished nodes are not valid');
+    $view->argument['null']->argument_validated = NULL;
+    // Check the nodetype setting.
+    $view->argument['null']->options['validate_options']['nid_type'] = 'nid';
+    $view->argument['null']->options['validate_options']['types'] = array($type1->type);
+    $view->argument['null']->options['validate_options']['access'] = FALSE;
+
+    $this->assertTrue($view->argument['null']->validate_arg(key($nodes1)), 'Select nodetypes shoudl be valid');
+    $view->argument['null']->argument_validated = NULL;
+    $this->assertFalse($view->argument['null']->validate_arg(key($nodes2)), 'Not-selected nodetypes shouldn\'t be valid');
+    $view->argument['null']->argument_validated = NULL;
+
+    // Check multiple nids connected with , or +
+  }
+
+  function view_node_argument_validator() {
+    $view = new view;
+    $view->name = 'view_node_argument_validator';
+    $view->description = '';
+    $view->tag = '';
+    $view->view_php = '';
+    $view->base_table = 'node';
+    $view->is_cacheable = FALSE;
+    $view->api_version = 2;
+    $view->disabled = FALSE; /* Edit this to true to make a default view disabled initially */
+
+    /* Display: Defaults */
+    $handler = $view->new_display('default', 'Defaults', 'default');
+    $handler->display->display_options['access']['type'] = 'none';
+    $handler->display->display_options['cache']['type'] = 'none';
+    $handler->display->display_options['exposed_form']['type'] = 'basic';
+    $handler->display->display_options['pager']['type'] = 'full';
+    $handler->display->display_options['style_plugin'] = 'default';
+    $handler->display->display_options['row_plugin'] = 'fields';
+    /* Argument: Global: Null */
+    $handler->display->display_options['arguments']['null']['id'] = 'null';
+    $handler->display->display_options['arguments']['null']['table'] = 'views';
+    $handler->display->display_options['arguments']['null']['field'] = 'null';
+    $handler->display->display_options['arguments']['null']['style_plugin'] = 'default_summary';
+    $handler->display->display_options['arguments']['null']['default_argument_type'] = 'fixed';
+    $handler->display->display_options['arguments']['null']['validate_type'] = 'node';
+    $handler->display->display_options['arguments']['null']['validate_options']['access'] = 0;
+    $handler->display->display_options['arguments']['null']['must_not_be'] = 0;
+
+    return $view;
+  }
+}
\ No newline at end of file
