From 5787708294c036c08186fea83e7a9fa32b103c48 Mon Sep 17 00:00:00 2001 From: Gerard Snaauw Date: Wed, 27 Mar 2024 12:13:45 +0100 Subject: [PATCH 1/3] fix invalid swagger --- docs/_static/discovery/v1.yaml | 12 ++++++------ docs/_static/vcr/vcr_v2.yaml | 4 ++++ vcr/api/vcr/v2/api_test.go | 6 +++--- vcr/api/vcr/v2/generated.go | 4 ++-- 4 files changed, 15 insertions(+), 11 deletions(-) diff --git a/docs/_static/discovery/v1.yaml b/docs/_static/discovery/v1.yaml index 2de0b861ca..34ea05d01c 100644 --- a/docs/_static/discovery/v1.yaml +++ b/docs/_static/discovery/v1.yaml @@ -84,7 +84,7 @@ paths: - discovery responses: "200": - description: + description: List of configured Discovery Services content: application/json: schema: @@ -162,15 +162,15 @@ paths: - name: did in: path required: true - example: - - did:web:example.com - - did:web:example.com:iam:user - - did:web:example.com%3A9443 - - did:web:example.com%3A9443:iam:user content: plain/text: schema: type: string + example: + - did:web:example.com + - did:web:example.com:iam:user + - did:web:example.com%3A9443 + - did:web:example.com%3A9443:iam:user get: summary: Retrieves the activation status a DID on a Discovery Service. description: | diff --git a/docs/_static/vcr/vcr_v2.yaml b/docs/_static/vcr/vcr_v2.yaml index 227f734bbe..c72d9e5113 100644 --- a/docs/_static/vcr/vcr_v2.yaml +++ b/docs/_static/vcr/vcr_v2.yaml @@ -534,6 +534,8 @@ components: - type: string example: "https://nuts.nl/credentials/v1" - type: array + items: + type: string example: ["https://www.w3.org/2018/credentials/v1", "https://nuts.nl/credentials/v1"] default: ["https://www.w3.org/2018/credentials/v1", "https://nuts.nl/credentials/v1"] type: @@ -542,6 +544,8 @@ components: - type: string example: "VerifiableCredential" - type: array + items: + type: string example: ["VerifiableCredential", "NutsOrganizationCredential"] issuer: description: DID according to Nuts specification. diff --git a/vcr/api/vcr/v2/api_test.go b/vcr/api/vcr/v2/api_test.go index 8a5ee60b08..9efa36b405 100644 --- a/vcr/api/vcr/v2/api_test.go +++ b/vcr/api/vcr/v2/api_test.go @@ -70,7 +70,7 @@ func TestWrapper_IssueVC(t *testing.T) { CredentialSubject: expectedRequestedVC.CredentialSubject, Visibility: &public, } - _ = request.Type.FromIssueVCRequestType1([]any{credentialType.String()}) + _ = request.Type.FromIssueVCRequestType1([]string{credentialType.String()}) // assert that credential.NutsV1ContextURI is added if the request does not contain @context testContext.mockIssuer.EXPECT().Issue(testContext.requestCtx, expectedRequestedVC, issuer.CredentialOptions{ Publish: true, @@ -95,8 +95,8 @@ func TestWrapper_IssueVC(t *testing.T) { CredentialSubject: expectedRequestedVC.CredentialSubject, Visibility: &public, } - require.NoError(t, request.Context.FromIssueVCRequestContext1([]any{vc.VCContextV1, credential.NutsV1ContextURI})) - require.NoError(t, request.Type.FromIssueVCRequestType1([]any{vc.VerifiableCredentialType, credentialType.String()})) + require.NoError(t, request.Context.FromIssueVCRequestContext1([]string{vc.VCContextV1, credential.NutsV1ContextURI.String()})) + require.NoError(t, request.Type.FromIssueVCRequestType1([]string{vc.VerifiableCredentialType, credentialType.String()})) testContext.mockIssuer.EXPECT().Issue(testContext.requestCtx, expectedRequestedVC, issuer.CredentialOptions{ Publish: true, Public: true, diff --git a/vcr/api/vcr/v2/generated.go b/vcr/api/vcr/v2/generated.go index 79eb411f3b..a190890cf1 100644 --- a/vcr/api/vcr/v2/generated.go +++ b/vcr/api/vcr/v2/generated.go @@ -145,7 +145,7 @@ type IssueVCRequest struct { type IssueVCRequestContext0 = string // IssueVCRequestContext1 defines model for . -type IssueVCRequestContext1 = []interface{} +type IssueVCRequestContext1 = []string // IssueVCRequest_Context The resolvable context of the credentialSubject as URI. If omitted, the "https://nuts.nl/credentials/v1" context is used. type IssueVCRequest_Context struct { @@ -159,7 +159,7 @@ type IssueVCRequestFormat string type IssueVCRequestType0 = string // IssueVCRequestType1 defines model for . -type IssueVCRequestType1 = []interface{} +type IssueVCRequestType1 = []string // IssueVCRequest_Type Type definition for the credential. type IssueVCRequest_Type struct { From e51db957152b40ae411451b6cf4269ce8e630ffe Mon Sep 17 00:00:00 2001 From: Gerard Snaauw Date: Wed, 27 Mar 2024 13:09:06 +0100 Subject: [PATCH 2/3] fix cmd --- vcr/cmd/cmd.go | 19 ++++--------------- vcr/cmd/cmd_test.go | 4 ++-- 2 files changed, 6 insertions(+), 17 deletions(-) diff --git a/vcr/cmd/cmd.go b/vcr/cmd/cmd.go index 82f9fc8cb4..01db27af37 100644 --- a/vcr/cmd/cmd.go +++ b/vcr/cmd/cmd.go @@ -169,9 +169,8 @@ func issueVC() *cobra.Command { // set @context if args[0] != "" { request.Context = new(api.IssueVCRequest_Context) - if anyContexts := toAnyStrings(args[0]); len(anyContexts) > 1 { - //return errors.New("only 1 @context supported") - if err := request.Context.FromIssueVCRequestContext1(anyContexts); err != nil { + if contexts := strings.Split(args[0], ","); len(contexts) != 1 { + if err := request.Context.FromIssueVCRequestContext1(contexts); err != nil { return fmt.Errorf("invalid @context: %w", err) } } else { @@ -181,8 +180,8 @@ func issueVC() *cobra.Command { } } // set type - if anyTypes := toAnyStrings(args[1]); len(anyTypes) > 1 { - if err := request.Type.FromIssueVCRequestType1(anyTypes); err != nil { + if types := strings.Split(args[1], ","); len(types) != 1 { + if err := request.Type.FromIssueVCRequestType1(types); err != nil { return fmt.Errorf("invalid credential type: %w", err) } } else { @@ -213,16 +212,6 @@ func issueVC() *cobra.Command { return result } -// toAnyStrings splits input at ',' and returns the resulting parts as []any -func toAnyStrings(input string) []any { - parts := strings.Split(input, ",") - anyParts := make([]any, len(parts)) - for i, part := range parts { - anyParts[i] = any(part) - } - return anyParts -} - // httpClient creates a remote client func httpClient(config core.ClientConfig) api.HTTPClient { return api.HTTPClient{ diff --git a/vcr/cmd/cmd_test.go b/vcr/cmd/cmd_test.go index 42faa1d81d..347d22ad88 100644 --- a/vcr/cmd/cmd_test.go +++ b/vcr/cmd/cmd_test.go @@ -199,10 +199,10 @@ func TestCmd_Issue(t *testing.T) { t.Run("ok - plural parameters", func(t *testing.T) { otherContextURI := "http://other-context" var contextURIsAPI v2.IssueVCRequest_Context - require.NoError(t, contextURIsAPI.FromIssueVCRequestContext1([]any{contextURI, otherContextURI})) + require.NoError(t, contextURIsAPI.FromIssueVCRequestContext1([]string{contextURI, otherContextURI})) otherCredentialType := "other-type" var credentialTypesAPI v2.IssueVCRequest_Type - require.NoError(t, credentialTypesAPI.FromIssueVCRequestType1([]any{credentialType, otherCredentialType})) + require.NoError(t, credentialTypesAPI.FromIssueVCRequestType1([]string{credentialType, otherCredentialType})) cmd := newCmd(t) handler := setupServer(t, http.StatusOK, "{}") cmd.PersistentFlags().AddFlagSet(core.ClientConfigFlags()) From 06ee481f5b1b011f3b860c11e0474e45ab006e78 Mon Sep 17 00:00:00 2001 From: Gerard Snaauw Date: Wed, 27 Mar 2024 13:27:37 +0100 Subject: [PATCH 3/3] fiex e2e-test --- e2e-tests/auth/selfsigned/main_test.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/e2e-tests/auth/selfsigned/main_test.go b/e2e-tests/auth/selfsigned/main_test.go index 29bd579857..f2e374cf55 100644 --- a/e2e-tests/auth/selfsigned/main_test.go +++ b/e2e-tests/auth/selfsigned/main_test.go @@ -128,7 +128,7 @@ func issueOrganizationCredential(organization *did.Document, name, city string) }, Visibility: &visibility, } - err := request.Type.FromIssueVCRequestType1([]any{"VerifiableCredential", "NutsOrganizationCredential"}) + err := request.Type.FromIssueVCRequestType1([]string{"VerifiableCredential", "NutsOrganizationCredential"}) if err != nil { return err }