github.com/benoitkugler/goacve@v0.0.0-20201217100549-151ce6e55dc8/server/acvegestion/controller_test.go (about) 1 package acvegestion 2 3 import ( 4 "encoding/json" 5 "fmt" 6 "io/ioutil" 7 "net/http" 8 "net/http/httptest" 9 "path" 10 "testing" 11 12 "github.com/benoitkugler/goACVE/logs" 13 "github.com/benoitkugler/goACVE/server/core/apiserver" 14 rd "github.com/benoitkugler/goACVE/server/core/rawdata" 15 "github.com/benoitkugler/goACVE/server/core/utils/mails" 16 "github.com/labstack/echo" 17 ) 18 19 func setup(t *testing.T) Controller { 20 mails.InitTemplates("../../ressources") 21 22 db, err := rd.ConnectDB(logs.DBDev) 23 if err != nil { 24 t.Fatal(err) 25 } 26 var ct Controller 27 ct.DB = db 28 ct.SMTP = logs.SmtpDev 29 return ct 30 } 31 32 func TestUrl(t *testing.T) { 33 db, err := rd.ConnectDB(logs.DBDev) 34 if err != nil { 35 t.Fatal(err) 36 } 37 row := db.QueryRow("SELECT * FROM factures LIMIT 1") 38 fac, err := rd.ScanFacture(row) 39 if err != nil { 40 t.Fatal(err) 41 } 42 host := "localhost:1323" 43 fmt.Println(fac.UrlEspacePerso(path.Join(host, "espace_perso"))) 44 } 45 46 func TestPlaceLiberee(t *testing.T) { 47 ct := setup(t) 48 defer ct.DB.Close() 49 50 row := ct.DB.QueryRow("SELECT * FROM participants WHERE id_facture IS NOT NULL LIMIT 1") 51 part, err := rd.ScanParticipant(row) 52 if err != nil { 53 t.Fatal(err) 54 } 55 56 _, err = ct.notifiePlaceLiberee("localhost", apiserver.NotifiePlaceLibereeIn{ 57 IdParticipant: part.Id, 58 NewStatut: rd.AttenteReponse, 59 }) 60 if err != nil { 61 t.Fatal(err) 62 } 63 64 messages, err := rd.SelectMessagesByIdFactures(ct.DB, part.IdFacture.Int64) 65 if err != nil { 66 t.Fatal(err) 67 } 68 fmt.Println(messages) 69 70 } 71 72 func TestStreamJSON(t *testing.T) { 73 data := apiserver.StreamOut{ 74 Error: "slmdksmd", 75 Data: apiserver.NotifieManyOut{ 76 MessageMessage: rd.MessageMessage{Contenu: "lkmk"}, 77 }, 78 } 79 b, err := json.Marshal(data) 80 if err != nil { 81 t.Fatal(err) 82 } 83 84 var value apiserver.NotifieManyOut 85 out := apiserver.StreamOut{Data: &value} 86 err = json.Unmarshal(b, &out) 87 if err != nil { 88 t.Fatal(err) 89 } 90 fmt.Println(value) 91 } 92 93 func TestStreamMessages(t *testing.T) { 94 ct := setup(t) 95 defer ct.DB.Close() 96 97 r := httptest.NewRecorder() 98 resp := echo.NewResponse(r, echo.New()) 99 100 rows, err := ct.DB.Query("SELECT id FROM factures LIMIT 5") 101 if err != nil { 102 t.Fatal(err) 103 } 104 ids, err := rd.ScanIds(rows) 105 if err != nil { 106 t.Fatal(err) 107 } 108 109 err = ct.notifieManyMessages("localhost", streamMessage{ 110 contenu: "Chers amis, l'heure est grave !", 111 }, rd.Message{Kind: rd.MCentre}, ids, resp) 112 if err != nil { 113 t.Fatal(err) 114 } 115 116 res := r.Result() 117 if res.StatusCode != http.StatusOK { 118 t.Fatal(res.StatusCode) 119 } 120 defer res.Body.Close() 121 b, err := ioutil.ReadAll(res.Body) 122 if err != nil { 123 t.Fatal(err) 124 } 125 fmt.Println(string(b)) 126 127 } 128 129 func TestStreamDocuments(t *testing.T) { 130 ct := setup(t) 131 defer ct.DB.Close() 132 133 r := httptest.NewRecorder() 134 resp := echo.NewResponse(r, echo.New()) 135 136 rows, err := ct.DB.Query("SELECT id FROM factures LIMIT 5") 137 if err != nil { 138 t.Fatal(err) 139 } 140 ids, err := rd.ScanIds(rows) 141 if err != nil { 142 t.Fatal(err) 143 } 144 145 row := ct.DB.QueryRow("SELECT * FROM camps LIMIT 1") 146 camp, err := rd.ScanCamp(row) 147 if err != nil { 148 t.Fatal(err) 149 } 150 151 err = ct.notifieManyMessages("localhost", streamDocument{idCamp: camp.Id}, 152 rd.Message{Kind: rd.MDocuments}, ids, resp) 153 if err != nil { 154 t.Fatal(err) 155 } 156 157 res := r.Result() 158 if res.StatusCode != http.StatusOK { 159 t.Fatal(res.StatusCode) 160 } 161 defer res.Body.Close() 162 b, err := ioutil.ReadAll(res.Body) 163 if err != nil { 164 t.Fatal(err) 165 } 166 fmt.Println(string(b)) 167 } 168 169 func TestCheckListeAttente(t *testing.T) { 170 ct := setup(t) 171 s := streamDocument{idCamp: 11} 172 173 rows, err := ct.DB.Query("SELECT id FROM factures LIMIT 5 ") 174 if err != nil { 175 t.Fatal(err) 176 } 177 ids, err := rd.ScanIds(rows) 178 if err != nil { 179 t.Fatal(err) 180 } 181 err = s.checkListeAttente(ids, ct.DB) 182 fmt.Println(err) 183 184 err = s.checkListeAttente(nil, ct.DB) 185 fmt.Println(err) 186 187 ids = rd.Ids{5954, 5905, 5800, 5961, 6003, 5985, 6020, 6014} 188 err = s.checkListeAttente(ids, ct.DB) 189 fmt.Println(err) 190 191 ids = rd.Ids{5954} 192 err = s.checkListeAttente(ids, ct.DB) 193 fmt.Println(err) 194 } 195 196 type dummyNotifier struct{} 197 198 func (dummyNotifier) SendMailPartageFicheSanitaire(host string, respoMail string, participant rd.Personne) ([]string, error) { 199 fmt.Println(respoMail, participant.FicheSanitaire.Mails) 200 return nil, nil 201 } 202 203 func TestCheckFS(t *testing.T) { 204 ct := setup(t) 205 ct.FicheSanitaireNotifier = dummyNotifier{} 206 err := ct.checkNotifiePartageFicheSanitaire("localhost:1323", 6003) 207 if err != nil { 208 t.Fatal(err) 209 } 210 } 211 212 func TestMailDon(t *testing.T) { 213 ct := setup(t) 214 _, err := ct.createDon(apiserver.CreateDonIn{ 215 Don: rd.Don{Valeur: 45.789}, 216 Donateur: rd.DonDonateur{ 217 IdPersonne: rd.NewOptionnalId(1668), 218 }, 219 Notifie: true, 220 }) 221 if err != nil { 222 t.Fatal(err) 223 } 224 225 _, err = ct.createDon(apiserver.CreateDonIn{ 226 Don: rd.Don{Valeur: 45.789, ModePaiement: rd.MPHelloasso}, 227 Donateur: rd.DonDonateur{ 228 IdPersonne: rd.NewOptionnalId(1668), 229 }, 230 }) 231 if err != nil { 232 t.Fatal(err) 233 } 234 } 235 236 func TestRedirectSondages(t *testing.T) { 237 ct := setup(t) 238 out, err := moveSondages(apiserver.FusionneFacturesIn{From: 6835, To: 6846}, ct.DB) 239 if err != nil { 240 t.Fatal(err) 241 } 242 fmt.Println(out) 243 } 244 245 func TestFusionne(t *testing.T) { 246 ct := setup(t) 247 out, err := ct.fusionneFactures("localhost", apiserver.FusionneFacturesIn{ 248 From: 6835, 249 To: 6846, 250 Notifie: true, 251 }) 252 if err != nil { 253 t.Fatal(err) 254 } 255 if out.OldId != 6835 { 256 t.Error() 257 } 258 }