Skip to content

Commit

Permalink
add vidit e2e main flow test
Browse files Browse the repository at this point in the history
  • Loading branch information
adwski committed May 15, 2024
1 parent 94fe54b commit c5dd359
Show file tree
Hide file tree
Showing 14 changed files with 623 additions and 46 deletions.
3 changes: 3 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -35,4 +35,7 @@ docker/compose/config/test.xml
docker/compose/tls/*
!docker/compose/tls/placeholder

e2e/cert.pem
e2e/key.pem

dist/
81 changes: 79 additions & 2 deletions e2e/e2e_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,15 @@ package e2e

import (
"context"
"crypto/rand"
"crypto/rsa"
"crypto/x509"
"crypto/x509/pkix"
"encoding/pem"
"fmt"
"math/big"
mrand "math/rand"
"net"
"os"
"sync"
"testing"
Expand All @@ -12,12 +21,16 @@ import (
"github.com/adwski/vidi/internal/app/processor"
"github.com/adwski/vidi/internal/app/streamer"
"github.com/adwski/vidi/internal/app/uploader"
"github.com/adwski/vidi/internal/app/video"

"github.com/adwski/vidi/internal/app/user"
"github.com/adwski/vidi/internal/app/video"
)

func TestMain(m *testing.M) {
if err := generateCertAndKey("localhost"); err != nil {
fmt.Println(err)
os.Exit(1)
}

var (
wg = &sync.WaitGroup{}
ctx, cancel = context.WithCancel(context.Background())
Expand Down Expand Up @@ -54,3 +67,67 @@ func TestMain(m *testing.M) {
os.Exit(code)
}()
}

const (
caOrg = "VIDItest"
caCountry = "RU"
caValidYears = 10

privateKeyRSALen = 4096

certPath = "cert.pem"
keyPath = "key.pem"
)

var (
caSubjectKeyIdentifier = []byte{1, 2, 3, 4, 6}
)

func generateCertAndKey(cn string) error {
key, err := rsa.GenerateKey(rand.Reader, privateKeyRSALen)
if err != nil {
return fmt.Errorf("cannot generate rsa private key: %w", err)
}
ca := getCA(cn)
cert, err := x509.CreateCertificate(rand.Reader, ca, ca, &key.PublicKey, key)
if err != nil {
return fmt.Errorf("cannot create x509 certificate: %w", err)
}
keyPem := pem.EncodeToMemory(
&pem.Block{
Type: "PRIVATE KEY",
Bytes: x509.MarshalPKCS1PrivateKey(key),
},
)
certPem := pem.EncodeToMemory(
&pem.Block{
Type: "CERTIFICATE",
Bytes: cert,
},
)
if err = os.WriteFile(keyPath, keyPem, 0600); err != nil {
return fmt.Errorf("cannot write private key to file: %w", err)
}
if err = os.WriteFile(certPath, certPem, 0600); err != nil {
return fmt.Errorf("cannot write cert to file: %w", err)
}
return nil
}

func getCA(cn string) *x509.Certificate {
return &x509.Certificate{
SerialNumber: big.NewInt(mrand.Int63()),
Subject: pkix.Name{
Country: []string{caCountry},
Organization: []string{caOrg},
CommonName: cn,
},
IPAddresses: []net.IP{net.IPv4(127, 0, 0, 1), net.IPv6loopback}, //nolint:gomnd // ip addr
DNSNames: []string{cn},
NotBefore: time.Now(),
NotAfter: time.Now().AddDate(caValidYears, 0, 0),
SubjectKeyId: caSubjectKeyIdentifier,
ExtKeyUsage: []x509.ExtKeyUsage{x509.ExtKeyUsageClientAuth, x509.ExtKeyUsageServerAuth},
KeyUsage: x509.KeyUsageDigitalSignature,
}
}
2 changes: 1 addition & 1 deletion e2e/uploader.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@ log:
server:
http:
address: ":18083"
max_body_size: 5000000
max_body_size: 11000000
api:
prefix: /upload
redis:
Expand Down
4 changes: 4 additions & 0 deletions e2e/videoapi.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,10 @@ server:
grpc:
address: ":18092"
svc_address: ":18093"
tls_userside_enable: true
tls:
key: key.pem
cert: cert.pem
api:
prefix: /api
database:
Expand Down
Loading

0 comments on commit c5dd359

Please sign in to comment.