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 }