'local']); extract(self::getCustomer()); self::$customer = $customer; self::$brand = $brand; self::$service = $service; self::$login = $login; self::$info = $info; config(['crm.token' => self::$service->bearer_token]); config(['crm.password' => self::$service->bearer_pwd]); config(['crm.endpoint' => "http://crm.local"]); } /** * Run in a loop customer get. * * @return void */ public function testSpamSingleOptin(): void { for ($i = 35; $i >= 0; $i--) { $this->assertTrue(SingleOptin::setStatus('singleoptinteststress@gmail.com', (bool) rand(0, 1))); } } /** * Run in a loop customer get. * * @return void */ public function testSpamCustomerGet(): void { for ($i = 35; $i >= 0; $i--) { $this->assertIsObject(Customer::find(self::$info->hashcode)); } } /** * Run in a loop customer get. * * @return void */ public function testSpamQuestionsGet(): void { for ($i = 35; $i >= 0; $i--) { $this->assertIsArray(Question::all()); } } /** * Run in a loop customer get. * * @return void */ public function testSpamCustomerGets(): void { for ($i = 35; $i >= 0; $i--) { $this->assertIsObject(Customer::findWithEmail(self::$customer->email)); } } /** * Get a customer. * * @param boolean $status * @return array */ protected static function getCustomer(bool $status = true): array { /** @var \App\Models\Costumer $customer */ $customer = ModelsCustomer::whereHas('logins', function ($q) use ($status) { $q->where('status', $status); })->inRandomOrder()->firstOrFail(); /** @var \App\Models\Brand $brand */ $login = $customer->logins()->where('status', $status)->firstOrFail(); /** @var \App\Models\CustomerLogin $login */ $brand = $login->brand; /** @var \App\Models\Service $service */ $service = $brand->services()->firstOrFail(); // Get customer info. $info = $customer->info($brand, ModelsCustomer::FIRST_OR_FAIL); // Regen bearer token to get the pwd in clear. $bearer_token = $service->bearer_token; $service->saveOrFail(); $service->bearer_token = $bearer_token; $service->bearer_pwd = Crypt::decryptString($service->bearer_pwd); return compact('customer', 'service', 'brand', 'login', 'info'); } }