@'. */ private static function generateUsername(string $domain): string { $characters = '0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ'; $charactersLength = strlen($characters); $randomString = ''; for ($i = 0; $i < 16; $i++) { $randomString .= $characters[rand(0, $charactersLength - 1)]; } return 'user' . $randomString . '@' . $domain; } private static function registerUser(string $domain, string $displayName): SocialClient { $client = new SocialClient(self::generateUsername($domain)); $client->settingsSetPassword("password"); $client->settingsAddInformationField(InformationFieldName::DISPLAY_NAME, $displayName); return $client; } public function testRegistration(): void { $coffeeClient = new SocialClient(self::generateUsername(self::COFFEE_DOMAIN)); // Check initial session state $this->assertFalse($coffeeClient->getSessionState()->isAuthenticated()); $this->assertTrue($coffeeClient->getSessionState()->containsFlag(SessionFlags::REGISTRATION_REQUIRED)); $this->assertTrue($coffeeClient->getSessionState()->containsFlag(SessionFlags::SET_PASSWORD)); $this->assertTrue($coffeeClient->getSessionState()->containsFlag(SessionFlags::SET_DISPLAY_NAME)); // Check progressive session state $this->assertTrue($coffeeClient->settingsSetPassword('coffeePassword')); $this->assertFalse($coffeeClient->getSessionState()->containsFlag(SessionFlags::SET_PASSWORD)); $this->assertTrue($coffeeClient->settingsAddInformationField(InformationFieldName::DISPLAY_NAME, 'Coffee User')); $this->assertFalse($coffeeClient->getSessionState()->containsFlag(SessionFlags::SET_DISPLAY_NAME)); $this->assertFalse($coffeeClient->getSessionState()->containsFlag(SessionFlags::REGISTRATION_REQUIRED)); $this->assertTrue($coffeeClient->getSessionState()->isAuthenticated()); } public function testResolveDecentralizedPeer(): void { $coffeeUser = self::registerUser(self::COFFEE_DOMAIN, "Coffee Lover"); $this->assertTrue($coffeeUser->getSessionState()->isAuthenticated()); $teapotUser = self::registerUser(self::TEAPOT_DOMAIN, "Tea & Biscuits"); $this->assertTrue($teapotUser->getSessionState()->isAuthenticated()); $coffeePeer = $coffeeUser->resolvePeer($teapotUser->getIdentifiedAs()); } }