59 lines
1.9 KiB
Go
59 lines
1.9 KiB
Go
|
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())
|
||
|
}
|