github.com/Axway/agent-sdk@v1.1.101/pkg/authz/oauth/providerregistry_test.go (about)

     1  package oauth
     2  
     3  import (
     4  	"context"
     5  	"net/http"
     6  	"testing"
     7  	"time"
     8  
     9  	"github.com/Axway/agent-sdk/pkg/config"
    10  	"github.com/stretchr/testify/assert"
    11  )
    12  
    13  func createIDPConfig(name, metadataURL string) *config.IDPConfiguration {
    14  	return &config.IDPConfiguration{
    15  		Name:        name,
    16  		MetadataURL: metadataURL,
    17  	}
    18  }
    19  
    20  func TestProviderRegistry(t *testing.T) {
    21  	idpServer := NewMockIDPServer()
    22  	defer idpServer.Close()
    23  	providerReg := NewProviderRegistry()
    24  	idpRegistry := NewIdpRegistry(WithProviderRegistry(providerReg))
    25  	idCfg := createIDPConfig("test", idpServer.GetMetadataURL())
    26  	idpServer.SetMetadataResponseCode(http.StatusBadRequest)
    27  	err := idpRegistry.RegisterProvider(context.Background(), idCfg, config.NewTLSConfig(), "", 30*time.Second)
    28  	assert.NotNil(t, err)
    29  
    30  	idCfg = createIDPConfig("test", idpServer.GetMetadataURL())
    31  	err = idpRegistry.RegisterProvider(context.Background(), idCfg, config.NewTLSConfig(), "", 30*time.Second)
    32  	assert.Nil(t, err)
    33  
    34  	p, err := idpRegistry.GetProviderByName(context.Background(), "test")
    35  	assert.Nil(t, err)
    36  	assert.NotNil(t, p)
    37  
    38  	p, err = idpRegistry.GetProviderByName(context.Background(), "test1")
    39  	assert.NotNil(t, err)
    40  	assert.Nil(t, p)
    41  
    42  	p, err = idpRegistry.GetProviderByIssuer(context.Background(), idpServer.GetIssuer())
    43  	assert.Nil(t, err)
    44  	assert.NotNil(t, p)
    45  
    46  	p, err = idpRegistry.GetProviderByIssuer(context.Background(), "invalid-issuer")
    47  	assert.NotNil(t, err)
    48  	assert.Nil(t, p)
    49  
    50  	p, err = idpRegistry.GetProviderByTokenEndpoint(context.Background(), idpServer.GetTokenURL())
    51  	assert.Nil(t, err)
    52  	assert.NotNil(t, p)
    53  
    54  	p, err = idpRegistry.GetProviderByTokenEndpoint(context.Background(), "invalid-token-url")
    55  	assert.NotNil(t, err)
    56  	assert.Nil(t, p)
    57  
    58  	p, err = idpRegistry.GetProviderByAuthorizationEndpoint(context.Background(), idpServer.GetAuthEndpoint())
    59  	assert.Nil(t, err)
    60  	assert.NotNil(t, p)
    61  
    62  	p, err = idpRegistry.GetProviderByAuthorizationEndpoint(context.Background(), "invalid-auth-url")
    63  	assert.NotNil(t, err)
    64  	assert.Nil(t, p)
    65  
    66  	p, err = idpRegistry.GetProviderByMetadataURL(context.Background(), idpServer.GetMetadataURL())
    67  	assert.Nil(t, err)
    68  	assert.NotNil(t, p)
    69  
    70  	p, err = idpRegistry.GetProviderByMetadataURL(context.Background(), "invalid-auth-url")
    71  	assert.NotNil(t, err)
    72  	assert.Nil(t, p)
    73  
    74  	pr, _ := providerReg.(*providerRegistry)
    75  	pr.providerMap.Set("test1", "")
    76  	pr.providerMap.SetSecondaryKey("test1", "issuer:test1")
    77  	pr.providerMap.SetSecondaryKey("test1", "tokenEp:test1")
    78  	pr.providerMap.SetSecondaryKey("test1", "authEp:test1")
    79  
    80  	p, err = idpRegistry.GetProviderByName(context.Background(), "test1")
    81  	assert.NotNil(t, err)
    82  	assert.Nil(t, p)
    83  
    84  	p, err = idpRegistry.GetProviderByIssuer(context.Background(), "test1")
    85  	assert.NotNil(t, err)
    86  	assert.Nil(t, p)
    87  
    88  	p, err = idpRegistry.GetProviderByTokenEndpoint(context.Background(), "test1")
    89  	assert.NotNil(t, err)
    90  	assert.Nil(t, p)
    91  
    92  	p, err = idpRegistry.GetProviderByAuthorizationEndpoint(context.Background(), "test1")
    93  	assert.NotNil(t, err)
    94  	assert.Nil(t, p)
    95  }