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

     1  package agent
     2  
     3  import (
     4  	"net/http"
     5  	"net/http/httptest"
     6  	"testing"
     7  	"time"
     8  
     9  	v1 "github.com/Axway/agent-sdk/pkg/apic/apiserver/models/api/v1"
    10  	management "github.com/Axway/agent-sdk/pkg/apic/apiserver/models/management/v1alpha1"
    11  	"github.com/Axway/agent-sdk/pkg/apic/mock"
    12  	"github.com/Axway/agent-sdk/pkg/authz/oauth"
    13  	"github.com/Axway/agent-sdk/pkg/config"
    14  	"github.com/stretchr/testify/assert"
    15  )
    16  
    17  func TestNewCredentialRequestBuilder(t *testing.T) {
    18  	idp := oauth.NewMockIDPServer()
    19  	defer idp.Close()
    20  
    21  	s := httptest.NewServer(http.HandlerFunc(func(_ http.ResponseWriter, _ *http.Request) {}))
    22  	defer s.Close()
    23  	cfg := createCentralCfg(s.URL, "test")
    24  	InitializeWithAgentFeatures(cfg, &config.AgentFeaturesConfiguration{})
    25  
    26  	agent.apicClient = &mock.Client{
    27  		CreateOrUpdateResourceMock: func(data v1.Interface) (*v1.ResourceInstance, error) {
    28  			ri, _ := data.AsInstance()
    29  			return ri, nil
    30  		},
    31  		UpdateResourceInstanceMock: func(data v1.Interface) (*v1.ResourceInstance, error) {
    32  			ri, _ := data.AsInstance()
    33  			return ri, nil
    34  		},
    35  	}
    36  
    37  	tests := []struct {
    38  		name         string
    39  		expectedName string
    40  	}{
    41  		{
    42  			name:         "Test Basic Auth Helper",
    43  			expectedName: "http-basic",
    44  		},
    45  		{
    46  			name:         "Test APIKey Helper",
    47  			expectedName: "api-key",
    48  		},
    49  		{
    50  			name:         "Test OAuth Helper",
    51  			expectedName: "oauth",
    52  		},
    53  		{
    54  			name:         "Test OAuth External Helper",
    55  			expectedName: "oauth-external",
    56  		},
    57  	}
    58  
    59  	for _, test := range tests {
    60  		t.Run(test.name, func(t *testing.T) {
    61  			var err error
    62  			var crd *management.CredentialRequestDefinition
    63  			switch test.expectedName {
    64  			case "http-basic":
    65  				crd, err = NewBasicAuthCredentialRequestBuilder().Register()
    66  			case "api-key":
    67  				crd, err = NewAPIKeyCredentialRequestBuilder().Register()
    68  			case "oauth":
    69  				crd, err = NewOAuthCredentialRequestBuilder().Register()
    70  			case "oauth-external":
    71  				cfg := &config.IDPConfiguration{
    72  					Name:        "test",
    73  					Type:        "okta",
    74  					MetadataURL: idp.GetMetadataURL(),
    75  					AuthConfig: &config.IDPAuthConfiguration{
    76  						Type:         "client",
    77  						ClientID:     "test",
    78  						ClientSecret: "test",
    79  					},
    80  					GrantType:        oauth.GrantTypeClientCredentials,
    81  					ClientScopes:     "read,write",
    82  					AuthMethod:       config.ClientSecretBasic,
    83  					AuthResponseType: "token",
    84  					ExtraProperties:  config.ExtraProperties{"key": "value"},
    85  				}
    86  
    87  				p, _ := oauth.NewProvider(cfg, config.NewTLSConfig(), "", 30*time.Second)
    88  				crd, err = NewOAuthCredentialRequestBuilder(
    89  					WithCRDOAuthSecret(),
    90  					WithCRDForIDP(p, []string{}),
    91  				).Register()
    92  			default:
    93  				crd, err = NewCredentialRequestBuilder().Register()
    94  			}
    95  			assert.NotNil(t, crd)
    96  			assert.Nil(t, err)
    97  		})
    98  	}
    99  }