Revert "feat: ajout du provisionnement des comptes Gitea pour les utilisateurs lors de la soumission de suggestions"
CI - Intégration continue / quality-and-tests (push) Successful in 3m13s
CD - Déploiement continu / deploy (push) Successful in 3m2s

This reverts commit 85572bd258.
This commit is contained in:
Azmog
2026-07-07 23:59:47 +02:00
parent 85572bd258
commit 1c26abfbc6
9 changed files with 16 additions and 364 deletions
+5 -122
View File
@@ -31,25 +31,10 @@ class SuggestionTest extends TestCase
config([
'services.gitea.url' => 'https://gitea.test',
'services.gitea.token' => 'fake-token',
'services.gitea.admin_token' => 'fake-admin-token',
'services.gitea.repo' => 'Groupe1/Ressources-relationnel',
]);
}
/**
* Fakes par défaut : aucun compte existant, création de compte et de ticket OK.
*
* @param array<string, mixed> $overrides
*/
private function fakesGitea(array $overrides = []): void
{
Http::fake($overrides + [
'gitea.test/api/v1/admin/emails/search*' => Http::response([]),
'gitea.test/api/v1/admin/users' => Http::response(['id' => 42], 201),
'gitea.test/api/v1/repos/*/issues' => Http::response(['number' => 42], 201),
]);
}
public function test_le_formulaire_de_suggestion_exige_une_authentification(): void
{
$this->get('/suggestions/nouveau')->assertRedirect('/login');
@@ -58,7 +43,9 @@ class SuggestionTest extends TestCase
public function test_une_suggestion_valide_cree_un_ticket_gitea(): void
{
$this->configurerGitea();
$this->fakesGitea();
Http::fake([
'*/api/v1/repos/*/issues' => Http::response(['number' => 42], 201),
]);
$response = $this->actingAs($this->utilisateur())->post('/suggestions', [
'type' => 'Correction',
@@ -76,110 +63,6 @@ class SuggestionTest extends TestCase
});
}
public function test_le_premier_envoi_cree_un_compte_gitea_pour_l_utilisateur(): void
{
$this->configurerGitea();
$this->fakesGitea();
$utilisateur = $this->utilisateur();
$response = $this->actingAs($utilisateur)->post('/suggestions', [
'type' => 'Ajout',
'titre' => 'Une nouvelle fonctionnalité',
'description' => 'Description suffisamment longue de la fonctionnalité.',
]);
$usernameAttendu = 'jeantest-'.$utilisateur->ID_Utilisateur;
$response->assertSessionHas('success');
// Les identifiants sont flashés une seule fois pour affichage
$response->assertSessionHas('gitea_compte', fn ($compte) => $compte['username'] === $usernameAttendu
&& $compte['mot_de_passe'] !== null);
$this->assertSame($usernameAttendu, $utilisateur->fresh()->GiteaUsername);
// Le compte a été créé via l'API admin…
Http::assertSent(fn ($request) => str_contains($request->url(), '/api/v1/admin/users')
&& $request['username'] === $usernameAttendu
&& $request['email'] === 'jean.test@example.com'
&& $request['must_change_password'] === true);
// …et le ticket est ouvert au nom de l'utilisateur (en-tête Sudo)
Http::assertSent(fn ($request) => str_contains($request->url(), '/issues')
&& $request->header('Sudo') === [$usernameAttendu]);
}
public function test_un_compte_gitea_existant_est_reutilise(): void
{
$this->configurerGitea();
$this->fakesGitea();
$utilisateur = $this->utilisateur();
$utilisateur->GiteaUsername = 'jean-deja-la';
$utilisateur->save();
$response = $this->actingAs($utilisateur)->post('/suggestions', [
'type' => 'Modification',
'titre' => 'Changer un contenu',
'description' => 'Description suffisamment longue de la modification.',
]);
$response->assertSessionHas('success');
$response->assertSessionMissing('gitea_compte');
// Aucune création de compte ne doit être tentée
Http::assertNotSent(fn ($request) => str_contains($request->url(), '/api/v1/admin/users'));
Http::assertSent(fn ($request) => str_contains($request->url(), '/issues')
&& $request->header('Sudo') === ['jean-deja-la']);
}
public function test_le_ticket_est_cree_meme_si_la_creation_du_compte_echoue(): void
{
$this->configurerGitea();
// Token sans droits admin : la création de compte est refusée
$this->fakesGitea([
'gitea.test/api/v1/admin/emails/search*' => Http::response('Forbidden', 403),
'gitea.test/api/v1/admin/users' => Http::response('Forbidden', 403),
]);
$response = $this->actingAs($this->utilisateur())->post('/suggestions', [
'type' => 'Correction',
'titre' => 'Un bug à corriger',
'description' => 'Description suffisamment longue du bug rencontré.',
]);
// Repli : ticket créé avec le compte de service, sans en-tête Sudo
$response->assertSessionHas('success');
$response->assertSessionMissing('gitea_compte');
Http::assertSent(fn ($request) => str_contains($request->url(), '/issues')
&& $request->header('Sudo') === []);
}
public function test_un_sudo_refuse_retombe_sur_le_compte_de_service(): void
{
$this->configurerGitea();
$this->fakesGitea([
// 1er appel (Sudo) refusé, 2e appel (compte de service) accepté
'gitea.test/api/v1/repos/*/issues' => Http::sequence()
->push('Not Found', 404)
->push(['number' => 43], 201),
]);
$utilisateur = $this->utilisateur();
$utilisateur->GiteaUsername = 'jean-deja-la';
$utilisateur->save();
$response = $this->actingAs($utilisateur)->post('/suggestions', [
'type' => 'Ajout',
'titre' => 'Encore une idée géniale',
'description' => 'Description suffisamment longue de cette idée géniale.',
]);
$response->assertSessionHas('success');
}
public function test_une_suggestion_invalide_est_rejetee(): void
{
Http::fake();
@@ -197,8 +80,8 @@ class SuggestionTest extends TestCase
public function test_un_echec_gitea_affiche_une_erreur(): void
{
$this->configurerGitea();
$this->fakesGitea([
'gitea.test/api/v1/repos/*/issues' => Http::response(['message' => 'nope'], 500),
Http::fake([
'*/api/v1/repos/*/issues' => Http::response(['message' => 'nope'], 500),
]);
$response = $this->actingAs($this->utilisateur())->post('/suggestions', [