diff --git a/README.md b/README.md index 2dc1cb3..f8efda9 100644 --- a/README.md +++ b/README.md @@ -47,10 +47,10 @@ On vous recommande la [documentation complète](https://docu.réseau-constellati import Constellation # D'abord, lancer le nœud local -Constellation.avecServeur() do port +Constellation.avecServeur() do port, codeSecret # - Constellation.avecClient(port) do client + Constellation.avecClient(port, codeSecret) do client # Écrire tout le reste de son code ici # Par exemple : diff --git a/docu/src/guide/serveur.md b/docu/src/guide/serveur.md index a960377..4698917 100644 --- a/docu/src/guide/serveur.md +++ b/docu/src/guide/serveur.md @@ -15,7 +15,7 @@ Notez le numéro du port ; vous devrez le passer au client Julia. Vous pouvez également lancer un serveur à partir d'un processus Julia : ```julia -(port, fFermerServeur) = Constellation.lancerServeur() +(port, codeSecret, fFermerServeur) = Constellation.lancerServeur() # Lorsque vous en avez assez vu : fFermerServeur() @@ -32,8 +32,8 @@ Vous pouvez aussi lancer un nœud Constellation temporaire qui se fermera automa ```julia import Constellation -Constellation.avecServeur() do port - Constellation.avecClient(port) do client +Constellation.avecServeur() do port, codeSecret + Constellation.avecClient(port, codeSecret) do client # Écrire tout le reste de son code ici end end diff --git a/src/client.jl b/src/client.jl index 2603d9b..3f97431 100644 --- a/src/client.jl +++ b/src/client.jl @@ -8,15 +8,16 @@ include("utils/événements.jl") mutable struct Client port::Int + codeSecret::String émetteur::Émetteur ws::WebSockets.WebSocket{Sockets.TCPSocket} - Client(;port, émetteur) = new(port, émetteur) + Client(;port, codeSecret, émetteur) = new(port, codeSecret, émetteur) end -function avecClient(f::Function, port::Int) - client = Client(;port=port, émetteur=Émetteur()) +function avecClient(f::Function, port::Int, codeSecret::String) + client = Client(;port=port, codeSecret=codeSecret, émetteur=Émetteur()) - WebSockets.open(string("ws://localhost:", port)) do ws_client + WebSockets.open(string("ws://localhost:", port, "?code=", codeSecret)) do ws_client client.ws = ws_client @async begin while true @@ -135,7 +136,7 @@ function suivre( merge( Dict([("fOublier", fOublier)]), - retour == nothing ? Dict([]) : Dict(fn=>générerFRéponse(fn) for fn in retour if fn != "fOublier") + retour === nothing ? Dict([]) : Dict(fn=>générerFRéponse(fn) for fn in retour if fn != "fOublier") ) end diff --git a/src/serveur.jl b/src/serveur.jl index c839a97..5689299 100644 --- a/src/serveur.jl +++ b/src/serveur.jl @@ -35,7 +35,8 @@ function lancerServeur(;port::Int=0, exe::AbstractString="constl", dossier::Abst message = JSON.parse(split(sortie, "MESSAGE MACHINE :")[2]) if (message["type"] == "NŒUD PRÊT") portFinal = message["port"] - return (portFinal, fFermer) + codeSecret = message["codeSecret"] + return (portFinal, codeSecret, fFermer) end end end @@ -44,9 +45,11 @@ end function avecServeur( f::Function, - ;port::Int=0, exe::AbstractString="constl", dossier::AbstractString="" + ;port::Int=0, + exe::AbstractString="constl", + dossier::AbstractString="" ) - (port, fermerServeur) = lancerServeur(port=port, exe=exe, dossier=dossier) - f((port)) + (port, codeSecret, fermerServeur) = lancerServeur(port=port, exe=exe, dossier=dossier) + f(port, codeSecret) fermerServeur() end diff --git a/test/client/testActionSuivi.jl b/test/client/testActionSuivi.jl index 69c4807..ce8ac0d 100644 --- a/test/client/testActionSuivi.jl +++ b/test/client/testActionSuivi.jl @@ -1,7 +1,7 @@ include("../utils.jl") -avecServeurTest() do (port) - Constellation.avecClient(port) do client +avecServeurTest() do port, codeSecret + Constellation.avecClient(port, codeSecret) do client # Action sans arguments idCompte = Constellation.action(client, "obtIdCompte") diff --git "a/test/client/testFonctionsSp\303\251ciales.jl" "b/test/client/testFonctionsSp\303\251ciales.jl" index d50836f..b7f2db7 100644 --- "a/test/client/testFonctionsSp\303\251ciales.jl" +++ "b/test/client/testFonctionsSp\303\251ciales.jl" @@ -2,8 +2,8 @@ import DataFrames include("../utils.jl") -avecServeurTest() do (port) - Constellation.avecClient(port) do client +avecServeurTest() do port, codeSecret + Constellation.avecClient(port, codeSecret) do client idBd = Constellation.action(client, "bds.créerBd", Dict([("licence", "ODbl-1_0")])) idTableau = Constellation.action(client, "bds.ajouterTableauBd", Dict([("idBd", idBd)])) @@ -91,8 +91,8 @@ avecServeurTest() do (port) end end -avecServeurTest() do (port) - Constellation.avecClient(port) do client +avecServeurTest() do port, codeSecret + Constellation.avecClient(port, codeSecret) do client idCompte = Constellation.action(client, "obtIdCompte") idNuée = Constellation.action(client, "nuées.créerNuée") diff --git a/test/client/testRecherche.jl b/test/client/testRecherche.jl index eeb8adb..c7dffbe 100644 --- a/test/client/testRecherche.jl +++ b/test/client/testRecherche.jl @@ -1,7 +1,7 @@ include("../utils.jl") -avecServeurTest() do (port) - Constellation.avecClient(port) do client +avecServeurTest() do port, codeSecret + Constellation.avecClient(port, codeSecret) do client # Créer 5 variables pour rechercher variables = [Constellation.action(client, "variables.créerVariable", Dict([("catégorie", "numérique")])) for _ in 1:4] diff --git a/test/testServeur.jl b/test/testServeur.jl index dfc824b..28ae597 100644 --- a/test/testServeur.jl +++ b/test/testServeur.jl @@ -6,15 +6,17 @@ version = Constellation.obtVersionServeur() # Vérifier lancement du serveur sur port spécifié Base.Filesystem.mktempdir() do dossier - Constellation.avecServeur(port=5002, dossier=dossier) do port + Constellation.avecServeur(port=5002, dossier=dossier) do port, codeSecret @test port == 5002 + @test isa(codeSecret, String) end end # Vérifier lancement du serveur sur port libre et dossier spécifique Base.Filesystem.mktempdir() do dossier - Constellation.avecServeur(dossier=dossier) do port + Constellation.avecServeur(dossier=dossier) do port, codeSecret @test isa(port, Int) + @test isa(codeSecret, String) attendreDossierExiste(dossier) end end diff --git a/test/utils.jl b/test/utils.jl index 16c1d10..8c13781 100644 --- a/test/utils.jl +++ b/test/utils.jl @@ -12,13 +12,13 @@ function versionValide(version::AbstractString) end function estNumérique(x) - return tryparse(Float64, x) != nothing + return tryparse(Float64, x) !== nothing end function avecServeurTest(f::Function) Base.Filesystem.mktempdir() do dossier - Constellation.avecServeur(dossier=dossier) do port - f(port) + Constellation.avecServeur(dossier=dossier) do port, codeSecret + f(port, codeSecret) end end end