. */ namespace Tests\Feature; use App\Admin; use App\Account; use App\ExternalAccount; use Illuminate\Foundation\Testing\RefreshDatabase; use Tests\TestCase; class ApiExternalAccountTest extends TestCase { use RefreshDatabase; protected $route = '/api/accounts'; protected $provisioningRoute = '/provisioning/me'; protected $method = 'POST'; public function testExternalAccountAttachOnCreate() { $admin = Admin::factory()->create(); $password = $admin->account->passwords()->first(); $password->account->generateApiKey(); $password->account->save(); config()->set('app.consume_external_account_on_create', true); // Seed an ExternalAccount $externalAccount = ExternalAccount::factory()->create(); $externalAccount->save(); $response = $this->keyAuthenticated($password->account) ->json($this->method, $this->route, [ 'username' => 'test', 'domain' => 'example.com', 'algorithm' => 'SHA-256', 'password' => '123456', 'activated' => true, ]); $response->assertStatus(200); // No ExternalAccount left $response = $this->keyAuthenticated($password->account) ->json($this->method, $this->route, [ 'username' => 'test2', 'domain' => 'example.com', 'algorithm' => 'SHA-256', 'password' => '123456', ]); $response->assertStatus(403); $createdAccount = Account::where('username', 'test')->first(); $createdAccount->generateApiKey(); $createdAccount->save(); $response = $this->keyAuthenticated($createdAccount) ->get($this->provisioningRoute) ->assertStatus(200) ->assertHeader('Content-Type', 'application/xml') ->assertSee($externalAccount->identifier) ->assertSee('ha1') ->assertSee('idkey') ->assertSee('depends_on'); } }