Skip to content

Commit

Permalink
intermediate
Browse files Browse the repository at this point in the history
  • Loading branch information
OR13 committed Jul 2, 2024
1 parent fd0cbdb commit 8528a1d
Show file tree
Hide file tree
Showing 4 changed files with 37 additions and 13 deletions.
9 changes: 8 additions & 1 deletion src/cr1/types.ts
Original file line number Diff line number Diff line change
Expand Up @@ -255,11 +255,18 @@ export type ConformanceWarningMessage = {

export type SchemaValidation = 'succeeded' | 'failed' | 'ignored'


export type StatusCheckResult = {
set: boolean,
purpose: string,
errors?: StatusListError[]
} & Record<string, any>

export type ValidationResult = {
valid: boolean
content: VerifiableCredential
schema: Record<string, { validation?: SchemaValidation, errors?: JsonSchemaError[], }>
status: Record<string, { valid: boolean, purpose: string, errors?: StatusListError[] }>
status: Record<string, StatusCheckResult>
warnings: ConformanceWarningMessage[]
}

Expand Down
6 changes: 4 additions & 2 deletions src/cr1/validator/index.ts
Original file line number Diff line number Diff line change
Expand Up @@ -86,7 +86,9 @@ export const validator = ({ resolver }: RequestValidator) => {
if (status.statusPurpose !== verified.credentialSubject.statusPurpose) {
validation.valid = false
validation.status[`${status.id}`] = {
valid: false, purpose: status.statusPurpose, errors: [{
set: false,
purpose: status.statusPurpose,
errors: [{
message: 'status list purpose does not match credential status'
}]
}
Expand All @@ -95,7 +97,7 @@ export const validator = ({ resolver }: RequestValidator) => {
if (bit) {
validation.valid = false
}
validation.status[`${status.id}`] = { valid: bit, purpose: status.statusPurpose }
validation.status[`${status.id}`] = { set: bit, purpose: status.statusPurpose, [status.statusPurpose]: bit }
}

}
Expand Down
4 changes: 2 additions & 2 deletions test/jwt-product-passports/integration.test.ts
Original file line number Diff line number Diff line change
Expand Up @@ -215,8 +215,8 @@ credentialSubject:
})
expect(validated.valid).toBe(true)
expect(validated.schema[`${baseURL}/schemas/product-passport`].validation).toBe('succeeded')
expect(validated.status[`${baseURL}/credentials/status/3#${revocationIndex}`].valid).toBe(false)
expect(validated.status[`${baseURL}/credentials/status/4#${suspensionIndex}`].valid).toBe(false)
expect(validated.status[`${baseURL}/credentials/status/3#${revocationIndex}`]).toEqual({ "purpose": "revocation", "revocation": false, "set": false })
expect(validated.status[`${baseURL}/credentials/status/4#${suspensionIndex}`]).toEqual({ "purpose": "suspension", "suspension": false, "set": false })


const vp = await transmute
Expand Down
31 changes: 23 additions & 8 deletions test/w3c-cr-1/4-status.test.ts
Original file line number Diff line number Diff line change
Expand Up @@ -97,8 +97,12 @@ credentialSubject:
}),
})
expect(validation.valid).toBe(true);
expect(validation.status['https://example.com/credentials/status/3#94567'].valid).toBe(false);
expect(validation.status['https://example.com/credentials/status/3#94567'].purpose).toBe('revocation');
expect(validation.status['https://example.com/credentials/status/3#94567']).toEqual({
"purpose": "revocation",
"revocation": false,
"set": false
});

})

// failure here means REVOKED
Expand Down Expand Up @@ -183,8 +187,11 @@ credentialSubject:
}),
})
expect(validation.valid).toBe(false);
expect(validation.status['https://example.com/credentials/status/3#94567'].valid).toBe(true);
expect(validation.status['https://example.com/credentials/status/3#94567'].purpose).toBe('revocation');
expect(validation.status['https://example.com/credentials/status/3#94567']).toEqual({
"purpose": "revocation",
"revocation": true,
"set": true
});
})
})

Expand Down Expand Up @@ -259,8 +266,12 @@ credentialSubject:
}),
})
expect(validation.valid).toBe(true);
expect(validation.status['https://example.com/credentials/status/3#94567'].valid).toBe(false);
expect(validation.status['https://example.com/credentials/status/3#94567'].purpose).toBe('suspension');
expect(validation.status['https://example.com/credentials/status/3#94567']).toEqual({
"set": false,
"purpose": "suspension",
"suspension": false
});

})

// failure here means REVOKED
Expand Down Expand Up @@ -345,8 +356,12 @@ credentialSubject:
}),
})
expect(validation.valid).toBe(false);
expect(validation.status['https://example.com/credentials/status/3#94567'].valid).toBe(true);
expect(validation.status['https://example.com/credentials/status/3#94567'].purpose).toBe('suspension');
expect(validation.status['https://example.com/credentials/status/3#94567']).toEqual({
"set": true,
"purpose": "suspension",
"suspension": true
});

})
})
})

0 comments on commit 8528a1d

Please sign in to comment.