39 lines
1.1 KiB
Go
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))
|
|
}
|
|
}
|