public function testEditUserEmail() { $_COOKIE['epuser_id'] = '1.5ce7f6e2d7de4db00c297e1da0d48ac'; $u = new THEUSER(); $u->loggedin = 1; $this->assertEquals('*****@*****.**', $u->email()); $d = $u->update_self(array('firstname' => 'Experiment', 'lastname' => 'User', 'email' => '*****@*****.**', 'emailpublic' => '0', 'postcode' => 'EH1 99SP', 'password' => '', 'url' => '', 'optin' => '', 'user_id' => 1), false); // email should not change as user needs to confirm $this->assertEquals('*****@*****.**', $u->email()); $tokenCount = $this->getConnection()->getRowCount('tokens', 'data = "1::user@example.com"'); $this->assertEquals(1, $tokenCount, 'correct number of email confirm tokens'); // token is based on the time so we can't test for it $queryTable = $this->getConnection()->createQueryTable('tokens', 'SELECT type, data FROM tokens WHERE data = "1::user@example.com"'); $expectedTable = $this->createXmlDataSet(dirname(__FILE__) . '/_fixtures/expectedTokens.xml')->getTable("tokens"); $this->assertTablesEqual($expectedTable, $queryTable); $alertCount = $this->getConnection()->getRowCount('alerts', 'email = "*****@*****.**"'); $this->assertEquals(1, $alertCount, 'correct number of alerts'); $queryTable = $this->getConnection()->createQueryTable('tokens', 'SELECT token, type, data FROM tokens WHERE data = "1::user@example.com"'); $tokenRow = $queryTable->getRow(0); $token = '2-' . $tokenRow['token']; $u->confirm_email($token, false); $this->assertEquals('*****@*****.**', $u->email(), 'confirming with token updates email address'); $tokenCount = $this->getConnection()->getRowCount('tokens', 'data = "1::user@example.com"'); $this->assertEquals(0, $tokenCount, 'token deleted once email confirmed'); $alertCount = $this->getConnection()->getRowCount('alerts', 'email = "*****@*****.**"'); $this->assertEquals(1, $alertCount, 'one alert for new email address'); $alertCount = $this->getConnection()->getRowCount('alerts', 'email = "*****@*****.**"'); $this->assertEquals(0, $alertCount, 'no alerts for old email address'); }