status-im/status-go

View on GitHub
server/pairing/statecontrol/state_management_test.go

Summary

Maintainability
A
0 mins
Test Coverage
package statecontrol

import (
    "testing"

    "github.com/stretchr/testify/require"
)

const (
    cs  = "cs2:4FHRnp:Q4:uqnn"
    cs1 = cs + "1234"
    cs2 = cs + "qwer"
)

func TestProcessStateManager_StartPairing(t *testing.T) {
    psm := new(ProcessStateManager)

    // A new psm should start with no error
    err := psm.StartPairing(cs)
    require.NoError(t, err)

    // A started psm should return an ErrProcessStateManagerAlreadyPairing if another start is attempted
    err = psm.StartPairing(cs)
    require.EqualError(t, err, ErrProcessStateManagerAlreadyPairing.Error())

    // A psm should start without error if the pairing process has been stopped with an error
    psm.StopPairing(cs, err)
    err = psm.StartPairing(cs)
    require.NoError(t, err)

    // A psm should return an error if starting with a conn string that previously succeeded (a nil error)
    psm.StopPairing(cs, nil)
    err = psm.StartPairing(cs)
    require.EqualError(t, err, ErrProcessStateManagerAlreadyPaired(cs).Error())

    // A psm should be able to start with a new connection string if the psm has been stopped
    err = psm.StartPairing(cs1)
    require.NoError(t, err)

    // A started psm should return an ErrProcessStateManagerAlreadyPairing if another start is attempted
    err = psm.StartPairing(cs1)
    require.EqualError(t, err, ErrProcessStateManagerAlreadyPairing.Error())

    // A started psm should return an ErrProcessStateManagerAlreadyPairing if another start is attempted regardless of
    // the given connection string.
    err = psm.StartPairing(cs2)
    require.EqualError(t, err, ErrProcessStateManagerAlreadyPairing.Error())

    // A psm should start without error if the pairing process has been stopped with an error
    psm.StopPairing(cs1, err)
    err = psm.StartPairing(cs2)
    require.NoError(t, err)

    // A psm should return an error if starting with a conn string that previously succeeded (a nil error)
    psm.StopPairing(cs2, nil)
    err = psm.StartPairing(cs2)
    require.EqualError(t, err, ErrProcessStateManagerAlreadyPaired(cs2).Error())
}