Files
go-mana-prism/auth_test.go
T

59 lines
1.8 KiB
Go

package prism
import (
"testing"
)
func TestAuthManager(t *testing.T) {
t.Run("challenge triggers callback and send", func(t *testing.T) {
// p, envoy := newMockEnvoy(t)
// signed := []byte(`{"kind":22242,...}`)
// callback records invocation, returns signed
// m := NewAuthManager(envoy, callback)
// t.Cleanup(m.Close)
// p.connect(); p.receive(envelope.EncloseAuthChallenge("abc"))
// Eventually: callback called with "abc"
// Eventually: p.sent contains AUTH response envelope wrapping signed
// assert ChallengeReceived and AuthResponseSent recorded on observer
})
t.Run("callback error recorded", func(t *testing.T) {
// callback returns errors.New("signing failed")
// p.receive(envelope.EncloseAuthChallenge("abc"))
// Never: anything on p.sent
// assert ChallengeReceived and AuthResponseFailed recorded
})
t.Run("send error recorded", func(t *testing.T) {
// callback succeeds
// send returns error
// assert AuthResponseFailed recorded
})
t.Run("disconnect resets state", func(t *testing.T) {
// p.connect(); feed AUTH "abc"; callback fires
// p.disconnect()
// assert m.challenge == "" (inspect via exported accessor or package-level test access)
// p.connect(); feed AUTH "def"
// assert callback fires again with "def"
})
t.Run("replacement challenge", func(t *testing.T) {
// feed AUTH "abc"; feed AUTH "def" without disconnect
// assert callback called twice; second call receives "def"
// assert two AUTH response envelopes sent
})
t.Run("malformed AUTH ignored", func(t *testing.T) {
// p.receive(envelope.EncloseAuthResponse([]byte("{}"))) — second element is object
// Never: callback called
// assert no panic
})
t.Run("close cleans up", func(t *testing.T) {
// m.Close()
// feed another AUTH
// Never: callback invoked after close
})
}