bine/tests/control_cmd_hiddenservice_t...

39 lines
1.1 KiB
Go

package tests
import (
"context"
"strings"
"testing"
"time"
"git.openprivacy.ca/openprivacy/bine/control"
)
func TestHSFetch(t *testing.T) {
ctx := GlobalEnabledNetworkContext(t)
// Add listener
eventCh := make(chan control.Event)
defer close(eventCh)
err := ctx.Control.AddEventListener(eventCh, control.EventCodeHSDescContent)
ctx.Require.NoError(err)
defer ctx.Control.RemoveEventListener(eventCh, control.EventCodeHSDescContent)
// Lookup HS
err = ctx.Control.GetHiddenServiceDescriptorAsync("facebookcorewwwi", "")
ctx.Require.NoError(err)
// Grab events
eventCtx, eventCancel := context.WithTimeout(ctx, 45*time.Second)
defer eventCancel()
errCh := make(chan error, 1)
go func() { errCh <- ctx.Control.HandleEvents(eventCtx) }()
select {
case <-eventCtx.Done():
ctx.Require.NoError(eventCtx.Err())
case err := <-errCh:
ctx.Require.NoError(err)
case event := <-eventCh:
hsEvent := event.(*control.HSDescContentEvent)
ctx.Require.Equal("facebookcorewwwi", hsEvent.Address)
ctx.Require.True(strings.HasPrefix(hsEvent.Descriptor, "rendezvous-service-descriptor "+hsEvent.DescID))
}
}