49 lines
1.1 KiB
Go
49 lines
1.1 KiB
Go
package client
|
|
|
|
import (
|
|
"context"
|
|
"net/http"
|
|
"net/http/httptest"
|
|
"testing"
|
|
"time"
|
|
|
|
appcrypto "netisjwt/internal/crypto"
|
|
"netisjwt/internal/jws"
|
|
"netisjwt/internal/statuslist"
|
|
)
|
|
|
|
func TestFetchAndVerifyStatus(t *testing.T) {
|
|
privatePEM, err := appcrypto.UstvariZasebniKljucECDSAP256PEM()
|
|
if err != nil {
|
|
t.Fatalf("key gen: %v", err)
|
|
}
|
|
|
|
list := statuslist.New()
|
|
list.Dodaj(false)
|
|
list.Dodaj(true)
|
|
|
|
tokenPath := "/api/status/demo/1"
|
|
var baseURL string
|
|
server := httptest.NewServer(http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {
|
|
claims, err := jws.SestaviTrditve(baseURL+"/api/status/demo", list, 1, time.Now())
|
|
if err != nil {
|
|
t.Fatalf("build claims: %v", err)
|
|
}
|
|
token, err := jws.UstvariZetonIzPEM(privatePEM, claims)
|
|
if err != nil {
|
|
t.Fatalf("create token: %v", err)
|
|
}
|
|
_, _ = w.Write([]byte(token))
|
|
}))
|
|
defer server.Close()
|
|
baseURL = server.URL
|
|
|
|
value, err := PridobiInPreveriStatus(context.Background(), server.URL+tokenPath)
|
|
if err != nil {
|
|
t.Fatalf("fetch and verify: %v", err)
|
|
}
|
|
if !value {
|
|
t.Fatalf("expected true")
|
|
}
|
|
}
|