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

     1  package provisioning
     2  
     3  import (
     4  	"testing"
     5  
     6  	management "github.com/Axway/agent-sdk/pkg/apic/apiserver/models/management/v1alpha1"
     7  	"github.com/stretchr/testify/assert"
     8  )
     9  
    10  func TestNewAccessRequestBuilder(t *testing.T) {
    11  	tests := []struct {
    12  		name       string
    13  		noSchema   bool
    14  		copySchema bool
    15  		wantErr    bool
    16  	}{
    17  		{
    18  			name: "Success",
    19  		},
    20  		{
    21  			name:    "Fail",
    22  			wantErr: true,
    23  		},
    24  		{
    25  			name:     "Empty",
    26  			noSchema: true,
    27  		},
    28  		{
    29  			name:       "Copied",
    30  			copySchema: true,
    31  		},
    32  	}
    33  	for _, tt := range tests {
    34  		t.Run(tt.name, func(t *testing.T) {
    35  			registerFuncCalled := false
    36  			registerFunc := func(accessRequestDefinition *management.AccessRequestDefinition) (*management.AccessRequestDefinition, error) {
    37  				assert.NotNil(t, accessRequestDefinition)
    38  				if !tt.noSchema {
    39  					assert.Len(t, accessRequestDefinition.Spec.Schema["properties"], 1)
    40  					assert.NotNil(t, accessRequestDefinition.Spec.Schema["properties"].(map[string]interface{})["prop"])
    41  				} else {
    42  					assert.Len(t, accessRequestDefinition.Spec.Schema["properties"], 0)
    43  				}
    44  				registerFuncCalled = true
    45  				return nil, nil
    46  			}
    47  
    48  			builder := NewAccessRequestBuilder(registerFunc).
    49  				SetName(tt.name)
    50  
    51  			if tt.wantErr {
    52  				builder = builder.SetRequestSchema(nil)
    53  				builder = builder.SetProvisionSchema(nil)
    54  			}
    55  
    56  			if !tt.noSchema {
    57  				b := builder.
    58  					SetRequestSchema(
    59  						NewSchemaBuilder().
    60  							SetName("schema").
    61  							AddProperty(
    62  								NewSchemaPropertyBuilder().
    63  									SetName("prop").
    64  									IsString()))
    65  				if tt.copySchema {
    66  					b.SetProvisionSchemaToRequestSchema()
    67  				}
    68  				b.SetProvisionSchema(
    69  					NewSchemaBuilder().
    70  						SetName("schema").
    71  						AddProperty(
    72  							NewSchemaPropertyBuilder().
    73  								SetName("prop").
    74  								IsString()))
    75  			}
    76  
    77  			_, err := builder.Register()
    78  
    79  			if tt.wantErr {
    80  				assert.NotNil(t, err)
    81  				assert.False(t, registerFuncCalled)
    82  			} else {
    83  				assert.Nil(t, err)
    84  				assert.True(t, registerFuncCalled)
    85  			}
    86  		})
    87  	}
    88  }