diff --git a/tests/mollom.test b/tests/mollom.test
index b3cf50c..fa77fda 100644
--- a/tests/mollom.test
+++ b/tests/mollom.test
@@ -1166,6 +1166,9 @@ class MollomInstallationTestCase extends MollomWebTestCase {
  * Tests low-level XML-RPC communication with Mollom servers.
  */
 class MollomResponseTestCase extends MollomWebTestCase {
+
+  protected $disableDefaultSetup = TRUE;
+
   public static function getInfo() {
     return array(
       'name' => 'Server responses',
@@ -1174,6 +1177,13 @@ class MollomResponseTestCase extends MollomWebTestCase {
     );
   }
 
+  function setUp() {
+    parent::setUp(array('mollom'));
+    $this->setKeys();
+    $this->assertValidKeys();
+    $this->admin_user = $this->drupalCreateUser();
+  }
+
   /**
    * Tests Site API.
    */
@@ -1374,48 +1384,119 @@ class MollomResponseTestCase extends MollomWebTestCase {
    */
   function testCheckContentSession() {
     $mollom = mollom();
-    $data = array(
+    $base_data = array(
       'authorName' => $this->admin_user->name,
       'authorMail' => $this->admin_user->mail,
       'authorId' => $this->admin_user->uid,
       'authorIp' => ip_address(),
     );
 
-    // Sequence: Post unsure spam, correct CAPTCHA, change post into spam,
-    // expect it to be ham (due to correct CAPTCHA).
-    $data['postBody'] = 'unsure';
-    $result = $mollom->checkContent($data);
+    // Sequence:
+    // - Post unsure content
+    // - Solve CAPTCHA
+    // - Post spam content
+    // - Expect spamClassification 'spam' (spam always trumps)
+    $this->resetResponseID();
+    $content_data = $base_data;
+    $content_data['postBody'] = 'unsure';
+    $result = $mollom->checkContent($content_data);
     $this->assertMollomWatchdogMessages();
     $this->assertSame('spamScore', $result['spamScore'], 0.5);
     $this->assertSame('spamClassification', $result['spamClassification'], 'unsure');
-    $data['id'] = $contentId = $this->assertResponseID('contentId', $result['id']);
+    $contentId = $this->assertResponseID('contentId', $result['id']);
+    $content_data['id'] = &$contentId;
 
     $captcha_data = array(
       'type' => 'image',
-      'contentId' => $contentId,
-      'authorIp' => $data['authorIp'],
+      'contentId' => &$contentId,
+      'authorIp' => $base_data['authorIp'],
     );
     $result = $mollom->createCaptcha($captcha_data);
     $this->assertMollomWatchdogMessages();
-    $data['captchaId'] = $captchaId = $this->assertResponseID('captchaId', $result['id']);
+    $captchaId = $this->assertResponseID('captchaId', $result['id']);
+    $content_data['captchaId'] = &$captchaId;
 
     $captcha_data = array(
-      'id' => $captchaId,
-      'contentId' => $contentId,
-      'authorIp' => $data['authorIp'],
-      'authorId' => $data['authorId'],
+      'id' => &$captchaId,
+      'contentId' => &$contentId,
+      'authorIp' => $base_data['authorIp'],
+      'authorId' => $base_data['authorId'],
       'solution' => 'correct',
     );
     $result = $mollom->checkCaptcha($captcha_data);
     $this->assertMollomWatchdogMessages();
     $this->assertSame('solved', $result['solved'], 1);
 
-    $data['postBody'] = 'spam';
-    $result = $mollom->checkContent($data);
+    $content_data['postBody'] = 'spam';
+    $result = $mollom->checkContent($content_data);
     $this->assertMollomWatchdogMessages();
-    $this->assertSame('spamScore', $result['spamScore'], 0.0);
+    $this->assertSame('spamScore', $result['spamScore'], 1.0);
+    $this->assertSame('spamClassification', $result['spamClassification'], 'spam');
+    $contentId = $this->assertResponseID('contentId', $result['id']);
+
+    // @todo Enable following sequence after fixing Testing API.
+    return;
+
+    // Sequence:
+    // - Post unsure content
+    // - Solve CAPTCHA
+    // - Post unsure content
+    // - Expect spamClassification 'ham'
+    // - Post ham content
+    // - Expect spamClassification 'ham'
+    // - Post unsure content
+    // - Expect spamClassification 'ham'
+    $this->resetResponseID();
+    $content_data = $base_data;
+    $content_data['postBody'] = 'unsure';
+    $result = $mollom->checkContent($content_data);
+    $this->assertMollomWatchdogMessages();
+    $this->assertSame('spamScore', $result['spamScore'], 0.5);
+    $this->assertSame('spamClassification', $result['spamClassification'], 'unsure');
+    $contentId = $this->assertResponseID('contentId', $result['id']);
+    $content_data['id'] = &$contentId;
+
+    $captcha_data = array(
+      'type' => 'image',
+      'contentId' => &$contentId,
+      'authorIp' => $base_data['authorIp'],
+    );
+    $result = $mollom->createCaptcha($captcha_data);
+    $this->assertMollomWatchdogMessages();
+    $captchaId = $this->assertResponseID('captchaId', $result['id']);
+    $content_data['captchaId'] = &$captchaId;
+
+    $captcha_data = array(
+      'id' => &$captchaId,
+      'contentId' => &$contentId,
+      'authorIp' => $base_data['authorIp'],
+      'authorId' => $base_data['authorId'],
+      'solution' => 'correct',
+    );
+    $result = $mollom->checkCaptcha($captcha_data);
+    $this->assertMollomWatchdogMessages();
+    $this->assertSame('solved', $result['solved'], 1);
+
+    $content_data['postBody'] = 'unsure';
+    $result = $mollom->checkContent($content_data);
+    $this->assertMollomWatchdogMessages();
+    //$this->assertSame('spamScore', $result['spamScore'], 0.0);
+    $this->assertSame('spamClassification', $result['spamClassification'], 'ham');
+    $contentId = $this->assertResponseID('contentId', $result['id']);
+
+    $content_data['postBody'] = 'ham';
+    $result = $mollom->checkContent($content_data);
+    $this->assertMollomWatchdogMessages();
+    //$this->assertSame('spamScore', $result['spamScore'], 0.0);
+    $this->assertSame('spamClassification', $result['spamClassification'], 'ham');
+    $contentId = $this->assertResponseID('contentId', $result['id']);
+
+    $content_data['postBody'] = 'unsure';
+    $result = $mollom->checkContent($content_data);
+    $this->assertMollomWatchdogMessages();
+    //$this->assertSame('spamScore', $result['spamScore'], 0.0);
     $this->assertSame('spamClassification', $result['spamClassification'], 'ham');
-    $data['contentId'] = $this->assertResponseID('contentId', $result['id']);
+    $contentId = $this->assertResponseID('contentId', $result['id']);
   }
 
   /**
diff --git a/tests/mollom_test_server.module b/tests/mollom_test_server.module
index f4bef2b..7135726 100644
--- a/tests/mollom_test_server.module
+++ b/tests/mollom_test_server.module
@@ -525,11 +525,13 @@ function mollom_test_server_check_content($data) {
       $qualityScore = NULL;
     }
     // In case a previous spam check was unsure and a CAPTCHA was solved, the
-    // result is supposed to be ham.
-    $captcha_sessions = variable_get('mollom_test_server_check_captcha_sessions', array());
-    if (!empty($data['captchaId']) && !empty($captcha_sessions[$data['captchaId']])) {
-      $response['spamScore'] = 0.0;
-      $response['spamClassification'] = 'ham';
+    // result is supposed to be ham - unless the new content is spam.
+    if ($response['spamClassification'] != 'spam') {
+      $captcha_sessions = variable_get('mollom_test_server_check_captcha_sessions', array());
+      if (!empty($data['captchaId']) && !empty($captcha_sessions[$data['captchaId']])) {
+        $response['spamScore'] = 0.0;
+        $response['spamClassification'] = 'ham';
+      }
     }
   }
 
