status-im/status-go

View on GitHub
server/servertest/servertest.go

Summary

Maintainability
A
0 mins
Test Coverage
A
100%
// Package servertest provides utilities for server testing.
package servertest

import (
    "crypto/ecdsa"
    "crypto/elliptic"
    "encoding/asn1"
    "math/big"
    "testing"
    "time"

    "github.com/btcsuite/btcutil/base58"
    "github.com/stretchr/testify/require"
    "go.uber.org/zap"

    "github.com/status-im/status-go/logutils"
)

const (
    X        = "7744735542292224619198421067303535767629647588258222392379329927711683109548"
    Y        = "6855516769916529066379811647277920115118980625614889267697023742462401590771"
    D        = "38564357061962143106230288374146033267100509055924181407058066820384455255240"
    AES      = "BbnZ7Gc66t54a9kEFCf7FW8SGQuYypwHVeNkRYeNoqV6"
    DB58     = "6jpbvo2ucrtrnpXXF4DQYuysh697isH9ppd2aT8uSRDh"
    SN       = "91849736469742262272885892667727604096707836853856473239722372976236128900962"
    CertTime = "eQUriVtGtkWhPJFeLZjF"
)

type TestKeyComponents struct {
    X      *big.Int
    Y      *big.Int
    D      *big.Int
    AES    []byte
    DBytes []byte
    PK     *ecdsa.PrivateKey
}

func (tk *TestKeyComponents) SetupKeyComponents(t *testing.T) {
    var ok bool

    tk.X, ok = new(big.Int).SetString(X, 10)
    require.True(t, ok)

    tk.Y, ok = new(big.Int).SetString(Y, 10)
    require.True(t, ok)

    tk.D, ok = new(big.Int).SetString(D, 10)
    require.True(t, ok)

    tk.AES = base58.Decode(AES)
    require.Len(t, tk.AES, 32)

    tk.DBytes = base58.Decode(DB58)
    require.Exactly(t, tk.D.Bytes(), tk.DBytes)

    tk.PK = &ecdsa.PrivateKey{
        PublicKey: ecdsa.PublicKey{
            Curve: elliptic.P256(),
            X:     tk.X,
            Y:     tk.Y,
        },
        D: tk.D,
    }
}

type TestCertComponents struct {
    NotBefore, NotAfter time.Time
    SN                  *big.Int
}

func (tcc *TestCertComponents) SetupCertComponents(t *testing.T) {
    var ok bool

    tcc.SN, ok = new(big.Int).SetString(SN, 10)
    require.True(t, ok)

    _, err := asn1.Unmarshal(base58.Decode(CertTime), &tcc.NotBefore)
    require.NoError(t, err)

    tcc.NotAfter = tcc.NotBefore.Add(time.Hour)
}

type TestLoggerComponents struct {
    Logger *zap.Logger
}

func (tlc *TestLoggerComponents) SetupLoggerComponents() {
    tlc.Logger = logutils.ZapLogger()
}