mirror of
https://github.com/DeBrosOfficial/network.git
synced 2026-01-30 16:13:04 +00:00
- Updated the API gateway documentation to reflect changes in architecture and functionality, emphasizing its role as a multi-functional entry point for decentralized services. - Refactored CLI commands to utilize utility functions for better code organization and maintainability. - Introduced new utility functions for handling peer normalization, service management, and port validation, enhancing the overall CLI experience. - Added a new production installation script to streamline the setup process for users, including detailed dry-run summaries for better visibility. - Enhanced validation mechanisms for configuration files and swarm keys, ensuring robust error handling and user feedback during setup.
61 lines
1.5 KiB
Go
61 lines
1.5 KiB
Go
package gateway
|
|
|
|
import (
|
|
"crypto/rand"
|
|
"crypto/rsa"
|
|
"crypto/x509"
|
|
"encoding/pem"
|
|
"testing"
|
|
"time"
|
|
|
|
"github.com/DeBrosOfficial/network/pkg/gateway/auth"
|
|
)
|
|
|
|
func TestJWTGenerateAndParse(t *testing.T) {
|
|
key, _ := rsa.GenerateKey(rand.Reader, 2048)
|
|
keyPEM := pem.EncodeToMemory(&pem.Block{
|
|
Type: "RSA PRIVATE KEY",
|
|
Bytes: x509.MarshalPKCS1PrivateKey(key),
|
|
})
|
|
|
|
svc, err := auth.NewService(nil, nil, string(keyPEM), "default")
|
|
if err != nil {
|
|
t.Fatalf("failed to create service: %v", err)
|
|
}
|
|
|
|
tok, exp, err := svc.GenerateJWT("ns1", "subj", time.Minute)
|
|
if err != nil || exp <= 0 {
|
|
t.Fatalf("gen err=%v exp=%d", err, exp)
|
|
}
|
|
|
|
claims, err := svc.ParseAndVerifyJWT(tok)
|
|
if err != nil {
|
|
t.Fatalf("verify err: %v", err)
|
|
}
|
|
if claims.Namespace != "ns1" || claims.Sub != "subj" || claims.Aud != "gateway" || claims.Iss != "debros-gateway" {
|
|
t.Fatalf("unexpected claims: %+v", claims)
|
|
}
|
|
}
|
|
|
|
func TestJWTExpired(t *testing.T) {
|
|
key, _ := rsa.GenerateKey(rand.Reader, 2048)
|
|
keyPEM := pem.EncodeToMemory(&pem.Block{
|
|
Type: "RSA PRIVATE KEY",
|
|
Bytes: x509.MarshalPKCS1PrivateKey(key),
|
|
})
|
|
|
|
svc, err := auth.NewService(nil, nil, string(keyPEM), "default")
|
|
if err != nil {
|
|
t.Fatalf("failed to create service: %v", err)
|
|
}
|
|
|
|
// Use sufficiently negative TTL to bypass allowed clock skew
|
|
tok, _, err := svc.GenerateJWT("ns1", "subj", -2*time.Minute)
|
|
if err != nil {
|
|
t.Fatalf("gen err=%v", err)
|
|
}
|
|
if _, err := svc.ParseAndVerifyJWT(tok); err == nil {
|
|
t.Fatalf("expected expired error")
|
|
}
|
|
}
|