storj.io/uplink@v1.13.0/access_test.go (about) 1 // Copyright (C) 2020 Storj Labs, Inc. 2 // See LICENSE for copying information. 3 4 package uplink_test 5 6 import ( 7 "context" 8 "net" 9 "testing" 10 11 "github.com/stretchr/testify/require" 12 "github.com/zeebo/errs" 13 14 "storj.io/uplink" 15 ) 16 17 func TestRequestAccessWithPassphraseAndConcurrency_KnownAddress(t *testing.T) { 18 const apiKey = "13Yqe3oHi5dcnGhMu2ru3cmePC9iEYv6nDrYMbLRh4wre1KtVA9SFwLNAuuvWwc43b9swRsrfsnrbuTHQ6TJKVt4LjGnaARN9PhxJEu" 19 20 ctx := context.Background() 21 sentinelError := errs.Class("test sentinel") 22 knownAddresses := []string{ 23 "us-central-1.tardigrade.io:7777", 24 "mars.tardigrade.io:7777", 25 "asia-east-1.tardigrade.io:7777", 26 "saturn.tardigrade.io:7777", 27 "europe-west-1.tardigrade.io:7777", 28 "jupiter.tardigrade.io:7777", 29 "satellite.stefan-benten.de:7777", 30 "saltlake.tardigrade.io:7777", 31 } 32 33 { // check that known addresses gain ids and make it to dialing 34 config := uplink.Config{ 35 DialContext: func(ctx context.Context, network string, address string) (net.Conn, error) { 36 return nil, sentinelError.New("%s", address) 37 }, 38 } 39 40 for _, address := range knownAddresses { 41 _, err := config.RequestAccessWithPassphrase(ctx, address, apiKey, "password") 42 require.Error(t, err) 43 require.Contains(t, err.Error(), address) 44 require.True(t, sentinelError.Has(err)) 45 } 46 } 47 48 { // check that unknown addresses do not gain an id 49 config := uplink.Config{ 50 DialContext: func(ctx context.Context, network, address string) (net.Conn, error) { 51 t.Fail() 52 return nil, errs.New("should not be called") 53 }, 54 } 55 56 _, err := config.RequestAccessWithPassphrase(ctx, "someaddr.example:7777", apiKey, "password") 57 require.Error(t, err) 58 require.Contains(t, err.Error(), "node id is required") 59 } 60 }