t('Privatemsg API functionality.'), // 'description' should be one or more complete sentences that provide more details on what // exactly is being tested. 'description' => t('Test sending, receiving, listing, deleting messages and other features via API.'), // 'group' should be a logical grouping of test cases, like a category. In most cases, that // is the module the test case is for. 'group' => t('Privatemsg'), ); } /** * Implements setUp(). */ function setUp() { parent::setUp('privatemsg'); } function testPrivatemsgApiNewThread() { $author = $this->drupalCreateUser(array('write privatemsg', 'read privatemsg')); $recipient1 = $this->drupalCreateUser(array('read privatemsg')); $recipient2 = $this->drupalCreateUser(array('read privatemsg')); $recipient3 = $this->drupalCreateUser(array('read privatemsg')); // Reset user_access cache user_access('', $author, TRUE); $resultok1 = privatemsg_new_thread(array($recipient1, $recipient2, $recipient3), 'normal message', 'Body text', array('author' => $author)); $this->assertTrue($resultok1['success'], 'Private message could be sent successfully'); $message = $this->getMessageFromSubject('normal message'); $this->assertFalse(empty($message), 'Message was saved in database'); $this->assertEqual($message['author'], $author->uid, 'Message was sent by author'); $resultok2 = privatemsg_new_thread(array($recipient1, $recipient2, $recipient3), 'empty body', '', array('author' => $author)); $this->assertTrue($resultok2['success'], 'API allowed to send message without body'); $resultf1 = privatemsg_new_thread(array($recipient1, $recipient2, $recipient3), '', 'No subject', array('author' => $author)); $this->assertEqual('Disallowed to send a message without subject', $resultf1['messages']['error'][0], 'API denied to send message without subject'); $resultf2 = privatemsg_new_thread(array(), 'no recipients', 'Body text', array('author' => $author)); $this->assertEqual('Disallowed to send a message without at least one valid recipient', $resultf2['messages']['error'][0], 'API denied to send message without recipients'); $message = $this->getMessageFromSubject('no recipients'); $this->assertTrue(empty($message), 'Message was not saved in database'); $resultf3 = privatemsg_new_thread(array($recipient1, $recipient2, $recipient3), 'not allowed', 'Body text', array('author' => $recipient1)); $errormessage = 'User '. $recipient1->name .' is not allowed to write messages'; $this->assertEqual($errormessage, $resultf3['messages']['error'][0], 'API denied to send message from user without permission'); $message = $this->getMessageFromSubject('not allowed'); $this->assertTrue(empty($message), 'Message was not saved in database'); // Test with an input format that the author is not allowed to use. $resultf4 = privatemsg_new_thread(array($recipient1, $recipient2, $recipient3), 'input filter not allowed', 'Body text', array('author' => $author, 'format' => 2)); $errormessage = t('User @user is not allowed to use the specified input format.', array('@user' => $author->name)); $this->assertEqual($errormessage, $resultf4['messages']['error'][0], t('User is not allowed to use the specified input format.')); $message = $this->getMessageFromSubject('input filter not allowed'); $this->assertTrue(empty($message), 'Message was not saved in database'); // Send a message through the api to the same user and check if it marked // as new. privatemsg_new_thread(array($author), $subject = $this->randomName(10), $this->randomString(20), array('author' => $author)); $this->drupalLogin($author); $this->drupalGet('messages'); $this->clickLink($subject); $this->assertText(t('New'), t('Message is marked as new')); } function getMessageFromSubject($subject) { $result = db_query("SELECT * FROM {pm_message} WHERE subject = '%s'", $subject); return db_fetch_array($result); } function testPrivatemsgApiReply() { $author = $this->drupalCreateUser(array('write privatemsg')); $recipient1 = $this->drupalCreateUser(array('read privatemsg', 'write privatemsg')); $recipient2 = $this->drupalCreateUser(array('read privatemsg', 'write privatemsg')); $recipient3 = $this->drupalCreateUser(array('read privatemsg')); // Reset user_access cache user_access('', $author, TRUE); $resultok = privatemsg_new_thread( array($recipient2, $recipient1, $recipient3), 'test reply', 'body text', array('author' => $author)); $this->assertTrue($resultok['success'], 'Private message could be sent successfully'); $thread_row = $this->getMessageFromSubject('test reply'); $resultok = privatemsg_reply($thread_row['mid'], 'Test Body', array('author' => $author)); $this->assertTrue($resultok['success'], 'Reply could be sent successfully'); $resultok = privatemsg_reply($thread_row['mid'], 'Test Body', array('author' => $recipient1)); $this->assertTrue($resultok['success'], 'Reply could be sent successfully'); $resultf1 = privatemsg_reply($thread_row['mid'], '', array('author' => $recipient2)); $this->assertFalse($resultf1['success'], 'API denied to send message without body.'); $this->assertEqual($resultf1['messages']['error'][0], t('Disallowed to send reply without a message.'), 'Correct error returned when replying with an empty body.'); $resultf2 = privatemsg_reply($thread_row['mid'], 'Test Body', array('author' => $recipient3)); $errormessage = 'User '. $recipient3->name .' is not allowed to write messages'; $this->assertEqual($errormessage, $resultf2['messages']['error'][0], 'API denied to send message from user without permission'); } }