Skip to content

Commit

Permalink
feat: docs and add upload fake api
Browse files Browse the repository at this point in the history
  • Loading branch information
DevNono committed Sep 20, 2023
1 parent 959632e commit 150e588
Show file tree
Hide file tree
Showing 5 changed files with 105 additions and 24 deletions.
22 changes: 5 additions & 17 deletions docs/doc_general/deadlines.md
Original file line number Diff line number Diff line change
@@ -1,32 +1,20 @@
# Deadlines (seuils du trépas)

## Nouveau site - 12 septembre
## Nouveau site - 25 septembre

- Contenu

- Title

## Billetterie - Equipe billetterie - 1 Octobre

- API : 18 Septembre

- Front 25 Septembre
## Billetterie - Equipe billetterie - 9 octobre

Principalement du front à faire

Discord

## Netgame - 21 octobre

- API : 17 Octobre

- Front : 24 Octobre

Panneau admin
## Netgame - début novembre

Dockeriser + réseau (mettre en place DNS, DHCP)
- Turbobouffe

## UA - 26 Novembre
## UA - 30 novemebre

- API : 7 Novembre

Expand Down
12 changes: 9 additions & 3 deletions docs/doc_general/getting_started.md
Original file line number Diff line number Diff line change
@@ -1,13 +1,13 @@
# Pour commencer

Salut aux nouveaux qui viennent de rejoindre le dev !
Vous êtes nombreux, aussi, vous allez avoir besoin d’autonomie pour progresser parce que je vais pas pouvoir tenir 10 personnes par la main. Je vais donc vous donner des ressources à consulter en fonction de votre niveau et en fonction de votre objectif (parce que vous n’avez pas besoin des mêmes connaissances sur le front et sur l’API).
Vous êtes nombreux, aussi, vous allez avoir besoin d’autonomie pour progresser parce qu'on va pas pouvoir tenir 10 personnes par la main. On va donc vous donner des ressources à consulter en fonction de votre niveau et en fonction de votre objectif (parce que vous n’avez pas besoin des mêmes connaissances sur le front et sur l’API).

Le paragraphe qui suit est important :

En cas de besoin, **contactez le respo dev**(=moi=Lucien Charleux). Je n’ai pas le temps de vous envoyer des mp tous les jours pour prendre de vos nouvelles, par contre, si c’est vous qui venez vers moi, soyez assuré que je prendrai le temps de répondre à vos questions et selon nos emplois du temps, de se poser en salle asso pour dev ensemble. J’ai dit que vous auriez besoin de détermination et d’autonomie pour vous lancer dans le dev, pas que vous étiez seul et dépourvu d’aide !
En cas de besoin, **contactez un respo dev**. On a pas le temps de vous envoyer des mp tous les jours pour prendre de vos nouvelles, par contre, si c’est vous qui venez vers nous, soyez assuré que nous prendrons le temps de répondre à vos questions et selon nos emplois du temps, de se poser en salle asso pour dev ensemble. On a dit que vous auriez besoin de détermination et d’autonomie pour vous lancer dans le dev, pas que vous étiez seul et dépourvu d’aide !

Donc le réflexe quand vous comprenez pas un truc c’est... chercher sur internet, c’est ce que font tous les devs. Le réflexe quand vous trouvez pas de réponse ou que vous sentez que vous allez y passer 3h là ou ça prendrait 3 minutes a un ancien de vous expliquer, c’est justement de contacter un ancien. Donc @Lachaux ou moi en l’occurence.
Donc le réflexe quand vous comprenez pas un truc c’est... chercher sur internet, c’est ce que font tous les devs. Le réflexe quand vous trouvez pas de réponse ou que vous sentez que vous allez y passer 3h là ou ça prendrait 3 minutes a un ancien de vous expliquer, c’est justement de contacter un ancien. Donc @Noé Landré ou @Teddy Roncin en l’occurence.
Voici donc les langages / framework / autres à connaître / maîtriser pour être capable d’aller dans le code du projet (vous n’avez pas besoin de lire la documentation en entier sur tout ce qui vient !) Il faut simplement connaître les principaux concepts afin de ne pas être complètement perdu en lisant du code. La compréhension fine viendra en pratiquant, c’est important que vous compreniez ça.

## Pour tout le monde :
Expand Down Expand Up @@ -53,6 +53,12 @@ Voici donc les langages / framework / autres à connaître / maîtriser pour êt
- N’allez pas jusqu’au bout de [ce cours](https://openclassrooms.com/fr/courses/1603881-apprenez-a-creer-votre-site-web-avec-html5-et-css3), arrêtez quand les mots clés ci-dessus vous évoquent quelque chose
Si vous trouver le temps de faire le cours en entier, vous avez MM01 dans la poche.

### Typescript

- Si vous connaissez Javascript, vous pourrez apprendre sur le tas

- Le [tuto officiel](https://www.typescriptlang.org/docs/handbook/intro.html) est en anglais, à vous de voir si vous y allez, contactez moi) [Can you English please ?](https://www.youtube.com/watch?v=ASdGtWSK6EU)

### React

- La partie la plus importante et la plus intéressante concernant le front
Expand Down
6 changes: 3 additions & 3 deletions docs/doc_general/installation.md
Original file line number Diff line number Diff line change
Expand Up @@ -10,9 +10,9 @@ On va commencer par installer WSL (Windows Sub-system for Linux). Il y a 2 méth

Dans le menu démarrer de Windows, cherchez `Invite de commandes`, et exécutez le en tant qu'administrateur.

> Si le nom de WSL vous dit déjà quelque chose et que vous l'avez déjà utilisé sur votre machine, exécutez `wsl -l -v`. La commande vous donnera le nom de la version utilisée (eg. _Ubuntu_ ou _Ubuntu-20.04_). Utilisez le maintenant dans la commande `wsl --set-version <version> 1`. [Passez ensuite à la section suivante](#setup-de-visual-studio-code) s'il n'y a pas d'erreur.
> Si le nom de WSL vous dit déjà quelque chose et que vous l'avez déjà utilisé sur votre machine, exécutez `wsl -l -v`. La commande vous donnera le nom de la version utilisée (eg. _Ubuntu_ ou _Ubuntu-20.04_). Utilisez le maintenant dans la commande `wsl --set-version <version> 2`. [Passez ensuite à la section suivante](#setup-de-visual-studio-code) s'il n'y a pas d'erreur.
Pour installer WSL 1, exécutez `wsl --set-default-version 1` **puis** `wsl --install`. Il est également possible d'utiliser WSL 2 mais ce sera plus compliqué pour installer la base de données _(et ce n'est pas détaillé dans cette doc)_
Pour installer WSL 1, exécutez `wsl --set-default-version 2` **puis** `wsl --install`. Il est également possible d'utiliser WSL 2 mais ce sera plus compliqué pour installer la base de données _(et ce n'est pas détaillé dans cette doc)_

> Si la méthode rapide a fonctionné, vous pouvez [passer à la section suivante](#setup-de-visual-studio-code).
Expand Down Expand Up @@ -47,7 +47,7 @@ Il faut maintenant indiquer le formateur par défaut. Appuyez simultanément sur

Retournez dans l'invite de commande Ubuntu, et tapez les commandes suivantes. Pour certaines commandes, l'invite de commande demandera le mot de passe administrateur : c'est celui que vous avez entré lors de la création du système. Comme la première fois, le mot de passe ne s'affichera pas quand vous le rentrerez.

1. `curl -fsSL https://deb.nodesource.com/setup_16.x | sudo -E bash -`
1. `curl -fsSL https://deb.nodesource.com/setup_18.x | sudo -E bash -`
2. `sudo apt-get install -y nodejs`
3. `sudo npm install -g pnpm`

Expand Down
6 changes: 5 additions & 1 deletion docs/index.md
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,11 @@ Bienvenue sur le Wiki de l'UTT Arena. Le but est d'expliquer les choix effectué

- [Drive Dev UA20](https://drive.google.com/drive/folders/1Htm-rXwDeEUZRa3dFO1fR3KzfMskGhkR?usp=sharing) (lecture uniquement)

- Drive Dev UA21 --> demander le lien sur Slack
- [Drive Dev UA21](https://drive.google.com/drive/folders/15A5NdDYEkUB3gYUm9UKAjYNWNv5tXqpS?usp=sharing) (lecture uniquement)

- [Drive Dev UA22](https://drive.google.com/drive/folders/1keVZQp7wjkA4zPmtCaxgmhqebpXTeUts?usp=sharing) (lecture uniquement)

- [Drive Dev UA23](https://drive.google.com/drive/folders/1rc2TyT8Y_b0v_CVwNHTAMN97CQA26wnj?usp=sharing)

- [Front](https://arena.utt.fr/)

Expand Down
83 changes: 83 additions & 0 deletions tests/upload.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,83 @@
import axios from 'axios';
import nock from 'nock';
import env from '../src/utils/env';

/**
* The so-called "fake debug upload server" is a local representation of the upload server
* using http interceptors to handle api requests. In order to add more features (ie. more
* routes of the upload api, check the {@link listen} function below)
*/

const existingFiles = [

Check warning on line 11 in tests/upload.ts

View workflow job for this annotation

GitHub Actions / lint (18)

Replace `⏎····'tournaments/lol-logo.png',⏎····'tournaments/lol-background.jpg',⏎]` with `'tournaments/lol-logo.png',·'tournaments/lol-background.jpg'];`
'tournaments/lol-logo.png',
'tournaments/lol-background.jpg',
]

const allowed_paths = ['tournaments', 'partners'];

Check failure on line 16 in tests/upload.ts

View workflow job for this annotation

GitHub Actions / lint (18)

Identifier 'allowed_paths' is not in camel case
const allowed_file_types = ['image/png', 'image/jpeg', 'application/pdf'];

Check failure on line 17 in tests/upload.ts

View workflow job for this annotation

GitHub Actions / lint (18)

Identifier 'allowed_file_types' is not in camel case
const allowed_extensions = ['png', 'jpg', 'pdf'];

Check failure on line 18 in tests/upload.ts

View workflow job for this annotation

GitHub Actions / lint (18)

Identifier 'allowed_extensions' is not in camel case

const max_file_size = 5000000;

Check failure on line 20 in tests/upload.ts

View workflow job for this annotation

GitHub Actions / lint (18)

Identifier 'max_file_size' is not in camel case

Check warning on line 20 in tests/upload.ts

View workflow job for this annotation

GitHub Actions / lint (18)

Delete `⏎`


/**
* Adds interceptors to the axios adapter. This function is called by {@link enableFakeDiscordApi}
* and enables/handles http requests to the 'fake discord api'.
*/
const listen = () => {
axios.defaults.adapter = 'http';
nock(`${env.front.website}/uploads/files/api`)
.persist()

// Upload file
.post('/')
.reply((_, body) => {
const bearer = (this! as nock.ReplyFnContext).req.headers.authorization;

Check warning on line 35 in tests/upload.ts

View workflow job for this annotation

GitHub Actions / lint (18)

Replace `········` with `······`
if(bearer !== env.upload.token) return [200, { status: 1, message: 'Authentification échouée' }];

Check warning on line 36 in tests/upload.ts

View workflow job for this annotation

GitHub Actions / lint (18)

Replace `··if` with `if·`

const { name, path, file } = body as {

Check warning on line 38 in tests/upload.ts

View workflow job for this annotation

GitHub Actions / lint (18)

Delete `··`
name: string;
path: string;
file: File;
};
if(!name || !path || !file) return [200, { status: 1, message: 'Paramètres manquants' }];
if(file.size > max_file_size) return [200, { status: 1, message: 'La taille maximale d\'un fichier est de 5MB' }];

Check failure on line 44 in tests/upload.ts

View workflow job for this annotation

GitHub Actions / lint (18)

Identifier 'max_file_size' is not in camel case
if(!allowed_file_types.includes(file.type)) return [200, { status: 1, message: 'Type de fichier non autorisé' }];

Check failure on line 45 in tests/upload.ts

View workflow job for this annotation

GitHub Actions / lint (18)

Identifier 'allowed_file_types' is not in camel case
const extension = file.name.split('.').pop();
if(!allowed_extensions.includes(extension!)) return [200, { status: 1, message: 'Extension de fichier non autorisée' }];

Check failure on line 47 in tests/upload.ts

View workflow job for this annotation

GitHub Actions / lint (18)

Identifier 'allowed_extensions' is not in camel case
if(!allowed_paths.includes(path)) return [200, { status: 1, message: 'Le chemin n\'est pas autorisé' }];

Check failure on line 48 in tests/upload.ts

View workflow job for this annotation

GitHub Actions / lint (18)

Identifier 'allowed_paths' is not in camel case
const index = existingFiles.indexOf(`${path}/${name}.${extension}`);

Check failure on line 49 in tests/upload.ts

View workflow job for this annotation

GitHub Actions / lint (18)

'index' is assigned a value but never used
existingFiles.push(`${path}/${name}.${extension}`);
return [200, { status: 0, message: 'Fichier téléversé avec succès' }];
})

// Delete file
.delete('/')
.reply((uri) => {
const bearer = (this! as nock.ReplyFnContext).req.headers.authorization;
if(bearer !== env.upload.token) return [200, { status: 1, message: 'Authentification échouée' }];

const path = uri.split('?')[1].split('=')[1];
if(!path) return [200, { status: 1, message: 'Paramètres manquants' }];
const index = existingFiles.indexOf(path);
if (index > -1) {
existingFiles.splice(index, 1);
return [200, { status: 0, message: 'Fichier supprimé avec succès' }];
}
return [200, { status: 1, message: 'Le fichier n\'existe pas' }];
});
};

/**
* Starts the 'fake upload api'.
*/
export const enableFakeUploadApi = () => {
listen();
};

/**
* Stops the 'fake upload api'. Removes all interceptors.
*/
export const disableFakeUploadApi = () => {
nock.cleanAll();
};

0 comments on commit 150e588

Please sign in to comment.