function testUrlFor() { $user = Test::get_test_user(); PA::$config->enable_fancy_url = TRUE; $this->assertEquals(url_for("user", array("login" => $user->login_name)), PA::$url . '/users/' . $user->login_name . '/'); $this->assertEquals(url_for("user", array("login" => $user->login_name, "one" => 1, "two" => 2)), PA::$url . '/users/' . $user->login_name . '/?one=1&two=2'); $this->assertEquals(url_for("user", array("login" => $user->login_name, "one" => 1, "two" => 2), array("one" => "asdf", "three" => "foo")), PA::$url . '/users/' . $user->login_name . '/?one=1&two=2&three=foo'); PA::$config->enable_fancy_url = FALSE; $this->assertEquals(url_for("user", array("login" => $user->login_name)), PA::$url . '/user.php?login='******'/user.php?login='******'&one=1&two=2'); $this->assertEquals(url_for("user", array("login" => $user->login_name, "one" => 1, "two" => 2), array("one" => "asdf", "three" => "foo")), PA::$url . '/user.php?login='******'&one=1&two=2&three=foo'); }
public function testAddDeleteShadowUser() { // Dal::register_query_callback("explain_query"); global $network_info; echo "getting a user\n"; $user = Test::get_test_user(); $testusername = $user->first_name . " " . $user->last_name; echo "test user = {$testusername}\n"; $namespace = 'php_unit'; // testuser data $testdata = array('user_id' => "pa_" . $user->user_id, 'login_name' => 'testuser', 'email' => $namespace . $user->email, 'first_name' => $user->first_name, 'last_name' => $user->last_name); echo "TEST DATA:\n"; print_r($testdata); $shadow_user = new ShadowUser($namespace); echo "Test load this shadow user, this should fail\n"; $sh = $shadow_user->load($testdata['user_id']); $this->assertNull($sh); echo "Create a shadow user\n"; $shadow_user = ShadowUser::create($namespace, $testdata, $network_info); echo "SHADOW USER DATA:\n"; print_r($shadow_user); $this->assertNotNull($shadow_user); echo "Test updating the data\n"; $testdata2 = $testdata; $testdata2['email'] = $namespace . "add" . $user->email; $testdata2['login_name'] = "newlogin"; $testdata2['first_name'] = "newName"; print_r($testdata2); $su2 = new ShadowUser($namespace); // load this with new data $su2->load($testdata2); unset($su2); Cache::reset(); // now load it only via the original remote uid $su3 = new ShadowUser($namespace); $su3->load($testdata['user_id']); echo "UPDATED SHADOW USER DATA:\n"; print_r($su3); echo "Delete it\n"; ShadowUser::delete($shadow_user->user_id); // there should not be a shadow user of this id anymore $this->assertNull($shadow_user->load($testdata['user_id'])); }
function testEmailNotification() { // test requires xdebug and xdebug_get_declared_vars(). if (!extension_loaded('xdebug')) { echo ($msg = "Need xdebug extension for email notification test") . "\n"; $this->markTestIncomplete($msg); } if (ini_get('xdebug.collect_vars') != 1) { echo ($msg = "need to set xdebug.collect_vars = 1") . "\n"; $this->markTestIncomplete($msg); } $this->assertEquals($GLOBALS['this_test_requires_globals'], "test", "xdebug not working - or need to update phpunit? see http://pear.php.net/bugs/bug.php?id=5053 for more info."); // hook mail() global $mail_testing_callback; $mail_testing_callback = array("EmailNotificationTest", "mail_hook"); // load main network and get a fake owner user global $network_info, $owner; $network_info = Network::get_mothership_info(); $owner = Test::get_test_user(); // override destination so we get an e-mail $extra = unserialize($network_info->extra); $extra['notify_owner']['announcement']['value'] = NET_EMAIL; $extra['notify_owner']['content_to_homepage']['value'] = NET_EMAIL; $network_info->extra = serialize($extra); $this->assertEquals(count(EmailNotificationTest::$messages), 0); // now trigger a fake network announcement $owner_name = 'John Q. NetworkOwner'; announcement(array('params' => array('aid' => "whatever"), 'owner_name' => $owner_name)); $this->assertEquals(count(EmailNotificationTest::$messages), 1); $msg = EmailNotificationTest::$messages[0]; $this->assertContains("nnouncement", $msg[1]); $this->assertContains("network", $msg[1]); $this->assertContains($owner_name, $msg[2]); $this->assertContains("nnouncement", $msg[2]); // now trigger a fake content posting to community blog $comm_blog_post = array('owner_name' => $owner_name, 'params' => array('first_name' => "Firstname", 'network_name' => "Network Name", 'user_id' => $owner->user_id, 'user_image' => $owner->picture, 'cid' => '1234', 'content_title' => 'Fake content title')); content_posted_to_comm_blog($comm_blog_post); $this->assertEquals(count(EmailNotificationTest::$messages), 2); $msg = EmailNotificationTest::$messages[1]; $this->assertContains("Community Blog", $msg[1]); $this->assertContains("posted", $msg[1]); $this->assertContains($owner_name, $msg[2]); $this->assertContains("Firstname has posted", $msg[2]); echo "The site name is " . PA::$site_name . "\n"; $this->assertContains(PA::$site_name, $msg[2]); /* The following test won't work yet -- as the site name is inserted in the messages early, so changing it now won't have any effect. // now change the site name and make sure it shows up properly $old_config_site_name = PA::$site_name; $new_config_site_name = PA::$site_name = "Test site name - for EmailNotificationTest"; content_posted_to_comm_blog($comm_blog_post); $this->assertEquals(count(EmailNotificationTest::$messages), 3); $msg = EmailNotificationTest::$messages[2]; $this->assertContains("Community Blog", $msg[1]); $this->assertContains("posted", $msg[1]); $this->assertContains($owner_name, $msg[2]); $this->assertContains("Firstname has posted", $msg[2]); echo "The site name is ". PA::$site_name ."\n"; $this->assertContains(PA::$site_name, $msg[2]); $this->assertNotContains($old_config_site_name, $msg[2]); $this->assertNotContains("PeopleAggregator", $msg[2]); */ }
function testNetworkCreation() { // check that we can create networks $can = Network::can_network_be_created(); $this->assertFalse($can['error'], $can['error_msg']); // get network owner user and figure out name etc $user = Test::get_test_user(); $name = "testnet" . rand(10000, 99999); $network_basic_controls = array(); // with crossed fingers, we hope that it will succeed without any of the detail here! // make a new network $net = new Network(); $net->set_params(array('user_id' => $user->user_id, 'name' => "auto-test network ({$name})", 'address' => $name, 'tagline' => "not much of a tagline", 'category_id' => 8, 'type' => 0, 'description' => "This network has been created automatically by a PHPUnit test. If the test succeeds, it will be deleted, too!", 'extra' => serialize($network_basic_controls), 'created' => time(), 'changed' => time())); $net->save(); //default_page_setting($net->address); // read it in again and see if it still works $net_read = Network::get_network_by_address($net->address); $this->assertEquals($net_read->network_id, $net->network_id); $this->assertEquals($net_read->type, 0); $this->assertEquals($net_read->member_count, 1); $this->assertEquals($net_read->owner_id, $user->user_id); // a user joins $user2 = Test::get_test_user(2); Network::join($net->network_id, $user2->user_id); $this->assertEquals(Network::get_network_by_address($net->address)->member_count, 2); // a user leaves Network::leave($net->network_id, $user2->user_id); $this->assertEquals(Network::get_network_by_address($net->address)->member_count, 1); // make it into a moderated network $net->type = 2; $net->save(); // check that it really is moderated $net_read = Network::get_network_by_address($net->address); $this->assertEquals($net_read->network_id, $net->network_id); $this->assertEquals($net_read->type, 2); // a user requests Network::join($net->network_id, $user2->user_id); $this->assertEquals(Network::get_network_by_address($net->address)->member_count, 1); // request approved Network::approve($net->network_id, $user2->user_id); $this->assertEquals(Network::get_network_by_address($net->address)->member_count, 2); // user leaves Network::leave($net->network_id, $user2->user_id); $this->assertEquals(Network::get_network_by_address($net->address)->member_count, 1); // user requests Network::join($net->network_id, $user2->user_id); $this->assertEquals(Network::get_network_by_address($net->address)->member_count, 1); // all requests accepted (of course, there will only be the one) Network::approve_all($net->network_id); $this->assertEquals(Network::get_network_by_address($net->address)->member_count, 2); // user leaves Network::leave($net->network_id, $user2->user_id); $this->assertEquals(Network::get_network_by_address($net->address)->member_count, 1); // user requests Network::join($net->network_id, $user2->user_id); $this->assertEquals(Network::get_network_by_address($net->address)->member_count, 1); // request denied Network::deny($net->network_id, $user2->user_id); $this->assertEquals(Network::get_network_by_address($net->address)->member_count, 1); // delete network Network::delete($net->network_id); }
function testAddDeleteContentComments() { // Dal::register_query_callback("explain_query"); echo "getting a user\n"; $user = Test::get_test_user(); echo "test user = {$user->first_name} {$user->last_name}\n"; echo "adding some content\n"; $post = new BlogPost(); $post->author_id = $user->user_id; $post->parent_collection_id = -1; $post->title = "Test blog post (from testAddDeleteContentComments)"; $post->body = "<p>This is the post body!</p><p>Foo <b>foo</b> foo</p>"; $post->allow_comments = 1; $post->is_active = 1; $post->display_on = DISPLAY_ON_HOMEPAGE; $post->save(); echo "... saved as content_id={$post->content_id}\n"; echo "testing that it is retrievable\n"; $post_retr = Content::load_content($post->content_id, $user->user_id); $this->assertEquals($post_retr->content_id, $post->content_id); $this->assertEquals($post_retr->title, $post->title); $this->assertEquals($post_retr->body, $post->body); $this->assertEquals($post_retr->author_id, $user->user_id); $this->assertEquals($post_retr->is_active, 1); echo "posting a comment\n"; $cmt = new Comment(); $cmt->content_id = $post->content_id; $cmt_comment = "This is an automatic comment - on an autogenerated post"; $cmt->comment = $cmt_comment; $cmt->user_id = $user->user_id; $cmt->name = $cmt->email = $cmt->homepage = ''; $cmt->ip_addr = '127.0.0.1'; $cmt->referrer = 'http://example.com/'; $cmt->user_agent = 'phpunit auto-test'; $cmt->save(); echo "... saved as comment_id={$cmt->comment_id}\n"; echo "testing that the comment is retrievable\n"; $cmt_retr = new Comment(); $cmt_retr->load($cmt->comment_id); $this->assertEquals($cmt_retr->comment_id, $cmt->comment_id); $this->assertEquals($cmt_retr->content_id, $post->content_id); $this->assertEquals($cmt_retr->comment, $cmt_comment); $this->assertEquals($cmt_retr->is_active, 1); echo "testing that we see one comment on the post\n"; $comments = Comment::get_comment_for_content($post->content_id); echo count($comments) . " comments\n"; //var_dump($comments); $this->assertEquals(count($comments), 1); echo "testing that we have no trackbacks on the post\n"; $trackbacks = Content::get_trackbacks_for_content($post->content_id); echo count($trackbacks) . " trackbacks\n"; //var_dump($trackbacks); $this->assertEquals(count($trackbacks), 0); echo "posting ANOTHER comment\n"; $cmt2 = new Comment(); $cmt2->content_id = $post->content_id; $cmt2_comment = "This is ANOTHER automatic comment - on the same autogenerated post"; $cmt2->comment = $cmt_comment; $cmt2->user_id = $user->user_id; $cmt2->name = $cmt2->email = $cmt2->homepage = ''; $cmt2->ip_addr = '127.0.0.1'; $cmt2->referrer = 'http://example.com/'; $cmt2->user_agent = 'phpunit auto-test'; $cmt2->save(); echo "... saved as comment_id={$cmt2->comment_id}\n"; echo "testing that we see two comments on the post\n"; $comments = Comment::get_comment_for_content($post->content_id); $this->assertEquals(count($comments), 2); echo "deleting the first comment\n"; $cmt_retr->delete(); echo "testing that we see one comment on the post again (not seeing the deleted one)\n"; $comments = Comment::get_comment_for_content($post->content_id); $this->assertEquals(count($comments), 1); echo "testing that the first comment (now deleted) is not retrievable\n"; $cmt_retr_fail = new Comment(); try { $cmt_retr_fail->load($cmt->comment_id); $this->assertTrue(FALSE); // shouldn't get here } catch (PAException $e) { $this->assertEquals($e->getCode(), COMMENT_NOT_EXIST); } echo "deleting the post\n"; Content::delete_by_id($post->content_id); echo "testing that the post is not retrievable\n"; try { $post_retr_fail = Content::load_content($post->content_id, $user->user_id); $this->assertTrue(FALSE); // shouldn't get here } catch (PAException $e) { $this->assertEquals($e->getCode(), CONTENT_NOT_FOUND); } echo "testing that the last comment is not retrievable\n"; $cmt_retr_fail = new Comment(); try { $cmt_retr_fail->load($cmt->comment_id); $this->assertTrue(FALSE); // shouldn't get here } catch (PAException $e) { $this->assertEquals($e->getCode(), COMMENT_NOT_EXIST); } // summarize_timed_queries(); }
public function testAddUpdateDeleteEvent() { // Dal::register_query_callback("explain_query"); echo "getting a user\n"; $user = Test::get_test_user(); $testusername = $user->first_name . " " . $user->last_name; echo "test user = {$testusername}\n"; /* setup some times and time strings */ $today = mktime(0, 0, 0, date("m"), date("d"), date("Y")); $tomorrow = mktime(0, 0, 0, date("m"), date("d") + 1, date("Y")); $yesterday = mktime(0, 0, 0, date("m"), date("d") - 1, date("Y")); $lastmonth = mktime(0, 0, 0, date("m") - 1, date("d"), date("Y")); $nextmonth = mktime(0, 0, 0, date("m") + 1, date("d"), date("Y")); $nextyear = mktime(0, 0, 0, date("m"), date("d"), date("Y") + 1); $oneday = 60 * 60 * 24; $simple_dateformat = "Y-m-d"; /* use the constants in the format parameter */ // something like: Mon, 15 Aug 2005 15:12:46 UTC $now_rfc822 = date(DATE_RFC822); // something like: 2000-07-01T00:00:00+00:00 // $now_atom = date(DATE_ATOM); // create an Event echo "create and save Event\n"; $e = new Event(); $e->content_id = "http://myevent.info/1"; // anything basically $e->user_id = $user->user_id; $e->event_title = "Test Event for {$testusername}"; $now = time(); $nowplusoneday = $now + $oneday; $e->start_time = date(DATE_ATOM, $now); $e->end_time = date(DATE_ATOM, $now + 60 * 60); // duration 1h $e->event_data = array('description' => "This Event takes place to test the class Event", 'start' => $now, 'end' => $now + 60 * 60); $e->save(); // print_r($e); // see if we got it echo "Retrieving Event {$e->event_id}\n"; $e2 = new Event(); $e2->load($e->event_id); echo "Testing integrity of dates\n"; // print_r($e2); // see if the stored timestamps match $this->assertEquals($now, $e2->event_data['start']); // see if our dates survived the DB conversion roundtrip $this->assertEquals($now, strtotime($e2->start_time)); $this->assertEquals($now + 60 * 60, strtotime($e2->end_time)); // create two EventAssociations $ea1 = new EventAssociation(); $ea2 = new EventAssociation(); $ea1->user_id = $user->user_id; $ea2->user_id = $user->user_id; // user EventAssocoiation $ea1->assoc_target_type = 'user'; $ea1->assoc_target_id = $user->user_id; // could very well be other user $ea1->assoc_target_name = $testusername; $ea1->event_id = $e->event_id; $ea1->save(); // network EventAssocoiation // find a network the user is member of // $networks = Network::get_user_networks($user->user_id); $network = Network::get_mothership_info(); // use the mothership // print_r($network); $ea2->assoc_target_type = 'network'; $ea2->assoc_target_id = $network->network_id; // could very well be other user $ea2->assoc_target_name = $network->name; $ea2->event_id = $e->event_id; $ea2->save(); echo "Testing EventAssociations for Event {$e->event_id}\n"; $assoc_ids = EventAssociation::find_for_event($e->event_id); // print_r($assoc_ids); $a_cnt = count($assoc_ids); $this->assertEquals($a_cnt, 2, "expected 2 assocs, got {$a_cnt}\n"); echo "Testing EventAssociations::find_for_target_and_delta for Network\n"; $assoc_ids = EventAssociation::find_for_target_and_delta('network', $network->network_id); // find_for_target_and_delta($target_type, $target_id, $range_start = NULL, $range_end = NULL) // print_r($assoc_ids); $a_cnt = count($assoc_ids); // we expect at least one (or more, the user might have others too) $this->assertTrue($a_cnt >= 1, "expected 1 or more assocs, got {$a_cnt}\n"); echo "Testing EventAssociations::find_for_target_and_delta for Today\n"; /* echo "yesterday = " . date(DATE_ATOM, $yesterday) . "\n"; echo "today = " . date(DATE_ATOM, $today) . "\n"; echo "event start_time = " . date(DATE_ATOM, strtotime($e2->start_time)) . "\n"; echo "event end_time = " . date(DATE_ATOM, strtotime($e2->end_time)) . "\n"; echo "tomorrow = " . date(DATE_ATOM, $tomorrow) . "\n"; */ $assoc_ids = EventAssociation::find_for_target_and_delta('network', $network->network_id, date(DATE_ATOM, $today), date(DATE_ATOM, $tomorrow)); print_r($assoc_ids); /* $assocs = EventAssociation::load_in_list($assoc_ids); print_r($assocs); */ $a_cnt = count($assoc_ids); // we expect at least one (or more, the user might have others too) $this->assertTrue($a_cnt >= 1, "expected 1 or more assocs, got {$a_cnt}\n"); echo "Testing if the EventAssociations now show up in Tomorrow's Calendar\n"; $assoc_ids = EventAssociation::find_for_target_and_delta('network', $network->network_id, date(DATE_ATOM, $tomorrow), date(DATE_ATOM, $tomorrow + $oneday)); print_r($assoc_ids); $a_cnt2 = count($assoc_ids); // we expect one less than before $this->assertTrue($a_cnt2 < $a_cnt, "expected " . $a_cnt - 1 . " assocs, got {$a_cnt2}\n"); echo "Modifying original Event\n"; $e2->title = "changed title"; $e2->end_time = date(DATE_ATOM, $nextmonth); $e2->save(); // see if we got it $e3 = new Event(); $e3->load($e->event_id); echo "Testing integrity of dates again in the Event\n"; // see if our dates survived the DB conversion roundtrip $this->assertEquals($now, strtotime($e3->start_time)); $this->assertEquals(date(DATE_ATOM, strtotime($e3->end_time)), date(DATE_ATOM, $nextmonth)); echo "Testing if modified dates made it to the EventAssociations\n"; $assoc_ids = EventAssociation::find_for_event($e3->event_id); $assocs = EventAssociation::load_in_list($assoc_ids); echo "e3 end_time: " . date(DATE_ATOM, strtotime($assocs[0]->end_time)) . "\nnextmonth: " . date(DATE_ATOM, $nextmonth) . "\n"; $this->assertEquals(date(DATE_ATOM, strtotime($assocs[0]->end_time)), date(DATE_ATOM, $nextmonth)); echo "Testing if the EventAssociations now show up in Tomorrow's Calendar\n"; echo "test range: " . date(DATE_ATOM, $tomorrow) . " - " . date(DATE_ATOM, $tomorrow + $oneday) . "\n"; echo "event duration: " . date(DATE_ATOM, strtotime($e3->start_time)) . " - " . date(DATE_ATOM, strtotime($e3->end_time)) . "\n"; // print_r($e3); $assoc_ids = EventAssociation::find_for_target_and_delta('network', $network->network_id, date(DATE_ATOM, $tomorrow), date(DATE_ATOM, $tomorrow + $oneday)); print_r($assoc_ids); $a_cnt = count($assoc_ids); // we expect at least one (or more, the user might have others too) $this->assertTrue($a_cnt >= 1, "expected 1 or more assocs, got {$a_cnt}\n"); echo "Deleting Event {$e->event_id}\n"; Event::delete($e->event_id); // try loading $this->assertNull($e3->load($e->event_id)); echo "Testing if all EventAssociations have been removed\n"; $assoc_ids = EventAssociation::find_for_event($e->event_id); $a_cnt = count($assoc_ids); $this->assertEquals($a_cnt, 0, "expected 0 assocs, got {$a_cnt}\n"); }