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  }