github.com/prysmaticlabs/prysm@v1.4.4/beacon-chain/powchain/provider_test.go (about)

     1  package powchain
     2  
     3  import (
     4  	"testing"
     5  
     6  	"github.com/prysmaticlabs/prysm/shared/httputils/authorizationmethod"
     7  	"github.com/prysmaticlabs/prysm/shared/testutil/assert"
     8  	logTest "github.com/sirupsen/logrus/hooks/test"
     9  )
    10  
    11  func TestHttpEndpoint(t *testing.T) {
    12  	hook := logTest.NewGlobal()
    13  	url := "http://test"
    14  
    15  	t.Run("URL", func(t *testing.T) {
    16  		endpoint := HttpEndpoint(url)
    17  		assert.Equal(t, url, endpoint.Url)
    18  		assert.Equal(t, authorizationmethod.None, endpoint.Auth.Method)
    19  	})
    20  	t.Run("URL with separator", func(t *testing.T) {
    21  		endpoint := HttpEndpoint(url + ",")
    22  		assert.Equal(t, url, endpoint.Url)
    23  		assert.Equal(t, authorizationmethod.None, endpoint.Auth.Method)
    24  	})
    25  	t.Run("URL with whitespace", func(t *testing.T) {
    26  		endpoint := HttpEndpoint("   " + url + "   ,")
    27  		assert.Equal(t, url, endpoint.Url)
    28  		assert.Equal(t, authorizationmethod.None, endpoint.Auth.Method)
    29  	})
    30  	t.Run("Basic auth", func(t *testing.T) {
    31  		endpoint := HttpEndpoint(url + ",Basic username:password")
    32  		assert.Equal(t, url, endpoint.Url)
    33  		assert.Equal(t, authorizationmethod.Basic, endpoint.Auth.Method)
    34  		assert.Equal(t, "dXNlcm5hbWU6cGFzc3dvcmQ=", endpoint.Auth.Value)
    35  	})
    36  	t.Run("Basic auth with whitespace", func(t *testing.T) {
    37  		endpoint := HttpEndpoint(url + ",   Basic username:password   ")
    38  		assert.Equal(t, url, endpoint.Url)
    39  		assert.Equal(t, authorizationmethod.Basic, endpoint.Auth.Method)
    40  		assert.Equal(t, "dXNlcm5hbWU6cGFzc3dvcmQ=", endpoint.Auth.Value)
    41  	})
    42  	t.Run("Basic auth with incorrect format", func(t *testing.T) {
    43  		hook.Reset()
    44  		endpoint := HttpEndpoint(url + ",Basic username:password foo")
    45  		assert.Equal(t, url, endpoint.Url)
    46  		assert.Equal(t, authorizationmethod.None, endpoint.Auth.Method)
    47  		assert.LogsContain(t, hook, "Skipping authorization")
    48  	})
    49  	t.Run("Bearer auth", func(t *testing.T) {
    50  		endpoint := HttpEndpoint(url + ",Bearer token")
    51  		assert.Equal(t, url, endpoint.Url)
    52  		assert.Equal(t, authorizationmethod.Bearer, endpoint.Auth.Method)
    53  		assert.Equal(t, "token", endpoint.Auth.Value)
    54  	})
    55  	t.Run("Bearer auth with whitespace", func(t *testing.T) {
    56  		endpoint := HttpEndpoint(url + ",   Bearer token   ")
    57  		assert.Equal(t, url, endpoint.Url)
    58  		assert.Equal(t, authorizationmethod.Bearer, endpoint.Auth.Method)
    59  		assert.Equal(t, "token", endpoint.Auth.Value)
    60  	})
    61  	t.Run("Bearer auth with incorrect format", func(t *testing.T) {
    62  		hook.Reset()
    63  		endpoint := HttpEndpoint(url + ",Bearer token foo")
    64  		assert.Equal(t, url, endpoint.Url)
    65  		assert.Equal(t, authorizationmethod.None, endpoint.Auth.Method)
    66  		assert.LogsContain(t, hook, "Skipping authorization")
    67  	})
    68  	t.Run("Too many separators", func(t *testing.T) {
    69  		endpoint := HttpEndpoint(url + ",Bearer token,foo")
    70  		assert.Equal(t, url, endpoint.Url)
    71  		assert.Equal(t, authorizationmethod.None, endpoint.Auth.Method)
    72  		assert.LogsContain(t, hook, "Skipping authorization")
    73  	})
    74  }