Index: modules/node/node.admin.inc
===================================================================
RCS file: /cvs/drupal/drupal/modules/node/node.admin.inc,v
retrieving revision 1.60
diff -u -p -r1.60 node.admin.inc
--- modules/node/node.admin.inc	30 Jul 2009 19:24:21 -0000	1.60
+++ modules/node/node.admin.inc	15 Aug 2009 09:38:55 -0000
@@ -145,7 +145,6 @@ function node_filter_form() {
     '#title' => t('Show only items where'),
     '#theme' => 'node_filters',
   );
-  $form['#submit'][] = 'node_filter_form_submit';
   foreach ($session as $filter) {
     list($type, $value) = $filter;
     if ($type == 'term') {
@@ -177,10 +176,22 @@ function node_filter_form() {
   }
 
   $form['filters']['filter'] = array('#type' => 'radios', '#options' => $names, '#default_value' => 'status');
-  $form['filters']['buttons']['submit'] = array('#type' => 'submit', '#value' => (count($session) ? t('Refine') : t('Filter')));
+  $form['filters']['buttons']['submit'] = array(
+    '#type' => 'submit',
+    '#value' => (count($session) ? t('Refine') : t('Filter')),
+    '#submit' => array('node_filter_form_submit'),
+  );
   if (count($session)) {
-    $form['filters']['buttons']['undo'] = array('#type' => 'submit', '#value' => t('Undo'));
-    $form['filters']['buttons']['reset'] = array('#type' => 'submit', '#value' => t('Reset'));
+    $form['filters']['buttons']['undo'] = array(
+      '#type' => 'submit',
+      '#value' => t('Undo'),
+      '#submit' => array('node_filter_form_submit'),
+    );
+    $form['filters']['buttons']['reset'] = array(
+      '#type' => 'submit',
+      '#value' => t('Reset'),
+      '#submit' => array('node_filter_form_submit'),
+   );
   }
 
   drupal_add_js('misc/form.js');
Index: modules/node/node.test
===================================================================
RCS file: /cvs/drupal/drupal/modules/node/node.test,v
retrieving revision 1.38
diff -u -p -r1.38 node.test
--- modules/node/node.test	28 Jul 2009 19:18:06 -0000	1.38
+++ modules/node/node.test	15 Aug 2009 11:47:02 -0000
@@ -840,3 +840,54 @@ class NodeAccessRebuildTestCase extends 
     $this->assertText(t('Content permissions have been rebuilt.'));
   }
 }
+
+/**
+ * Test node administration page functionality.
+ */
+class NodeAdminTestCase extends DrupalWebTestCase {
+  protected $web_user;
+
+  public static function getInfo() {
+    return array(
+      'name' => 'Node administration',
+      'description' => 'Test node administration page functionality.',
+      'group' => 'Node'
+    );
+  }
+
+  function setUp() {
+    parent::setUp();
+    $this->web_user = $this->drupalCreateUser(array('administer nodes', 'create article content', 'create page content'));
+    $this->drupalLogin($this->web_user);
+  }
+
+  function testNodeAdmin() {
+    $node1 = $this->drupalCreateNode(array('type' => 'article', 'status' => 1));
+    $node2 = $this->drupalCreateNode(array('type' => 'article', 'status' => 0));
+    $node3 = $this->drupalCreateNode(array('type' => 'page'));
+
+    $this->drupalGet('admin/content');
+    $this->assertText($node1->title, t('Node appears on the node administration listing.'));
+
+    // Filter the node listing by status.
+    $edit = array(
+      'filter' => 'status',
+      'status' => 'status-1',
+    );
+    $this->drupalPost('admin/content', $edit, t('Filter'));
+    $this->assertRaw(t('<strong>%a</strong> is <strong>%b</strong>', array('%a' => t('status'), '%b' => t('published'))), t('The node administration listing is filtered by status.'));
+    $this->assertText($node1->title, t('Published node appears on the node administration listing.'));
+    $this->assertNoText($node2->title, t('Unpublished node does not appear on the node administration listing.'));
+
+    // Filter the node listing by content type.
+    $edit = array(
+      'filter' => 'type',
+      'type' => 'article',
+    );
+    $this->drupalPost('admin/content', $edit, t('Refine'));
+    $this->assertRaw(t('<strong>%a</strong> is <strong>%b</strong>', array('%a' => t('status'), '%b' => t('published'))), t('The node administration listing is filtered by status.'));
+    $this->assertRaw(t('<strong>%a</strong> is <strong>%b</strong>', array('%a' => t('type'), '%b' => 'Article')), t('The node administration listing is filtered by content type.'));
+    $this->assertText($node1->title, t('Article node appears on the node administration listing.'));
+    $this->assertNoText($node3->title, t('Page node does not appear on the node administration listing.'));
+  }
+}
