bottin/client_test.go

151 lines
2.9 KiB
Go

package main
import (
"net/http"
"testing"
"codeberg.org/vlbeaudoin/voki/v3"
"github.com/spf13/viper"
)
func init() {
initConfig()
}
func TestAPI(t *testing.T) {
var cfg Config
if err := viper.Unmarshal(&cfg); err != nil {
t.Error(err)
return
}
httpClient := http.DefaultClient
defer httpClient.CloseIdleConnections()
var protocol string
switch cfg.API.TLS.Enabled {
case true:
protocol = "https"
case false:
protocol = "http"
}
vokiClient := voki.New(httpClient, "localhost", cfg.API.Key, cfg.API.Port, protocol)
apiClient := APIClient{vokiClient}
t.Run("get API health", func(t *testing.T) {
health, err := apiClient.GetHealth()
if err != nil {
t.Error(err)
}
want := "ok"
got := health
if want != got {
t.Errorf("want=%s got=%s", want, got)
}
})
t.Run("insert programmes",
func(t *testing.T) {
programmes := []Programme{
{"404.42", "Cool programme"},
{"200.10", "Autre programme"},
}
t.Log("programmes:", programmes)
_, err := apiClient.InsertProgrammes(programmes...)
if err != nil {
t.Error(err)
}
})
testMembres := []Membre{
{
ID: "0000000",
FirstName: "Test",
LastName: "User",
ProgrammeID: "404.42",
},
{
ID: "1234567",
FirstName: "Deadname",
LastName: "User",
PreferedName: "User, Test-Name",
ProgrammeID: "200.10",
},
}
t.Run("get programmes, max 50",
func(t *testing.T) {
programmes, err := apiClient.GetProgrammes(50)
if err != nil {
t.Error(err)
}
t.Log(programmes)
})
t.Run("insert membres",
func(t *testing.T) {
_, err := apiClient.InsertMembres(testMembres...)
if err != nil {
t.Error(err)
}
})
t.Run("get membre",
func(t *testing.T) {
membre, err := apiClient.GetMembre(testMembres[0].ID)
if err != nil {
t.Error(err)
}
want := testMembres[0].LastName
got := membre.LastName
if want != got {
t.Errorf("want=%s got=%s", want, got)
}
})
t.Run("get invalid membre",
func(t *testing.T) {
_, err := apiClient.GetMembre("invalid")
if err == nil {
t.Error("`invalid` should not have been accepted as value to GetMembre, but did")
}
})
t.Run("update membre prefered name",
func(t *testing.T) {
if err := apiClient.UpdateMembrePreferedName(testMembres[0].ID, "User, Galaxy"); err != nil {
t.Error(err)
}
})
t.Run("get membres, max 50",
func(t *testing.T) {
membres, err := apiClient.GetMembres(50)
if err != nil {
t.Error(err)
}
t.Log(membres)
})
t.Run("get membre for display",
func(t *testing.T) {
membre, err := apiClient.GetMembreForDisplay(testMembres[0].ID)
if err != nil {
t.Error(err)
}
t.Log(membre)
})
t.Run("get membres for display, max 5",
func(t *testing.T) {
membres, err := apiClient.GetMembresForDisplay(5)
if err != nil {
t.Error(err)
}
t.Log(membres)
})
}