add test for mint validations

This commit is contained in:
motemotech
2024-10-08 20:04:13 +09:00
parent a9fe0d1b1e
commit 6e8d134a70
6 changed files with 583 additions and 5 deletions

View File

@@ -0,0 +1,24 @@
// Constant Values in OneTimeSBT.sol
export const ATTRIBUTE_ISSUING_STATE_INDEX = 0;
export const ATTRIBUTE_NAME_INDEX = 1;
export const ATTRIBUTE_PASSPORT_NUMBER_INDEX = 2;
export const ATTRIBUTE_NATIONALITY_INDEX = 3;
export const ATTRIBUTE_DATE_OF_BIRTH_INDEX = 4;
export const ATTRIBUTE_GENDER_INDEX = 5;
export const ATTRIBUTE_EXPIRY_DATE_INDEX = 6;
export const ATTRIBUTE_OLDER_THAN_INDEX = 7;
export const PROVE_RSA_NULLIFIER_INDEX = 0;
export const PROVE_RSA_REVEALED_DATA_PACKED_INDEX = 1;
export const PROVE_RSA_OLDER_THAN_INDEX = 4;
export const PROVE_RSA_PUBKEY_DISCLOSED_INDEX = 6;
export const PROVE_RSA_FORBIDDEN_COUNTRIES_LIST_PACKED_DISCLOSED_INDEX = 38;
export const PROVE_RSA_OFAC_RESULT_INDEX = 40;
export const PROVE_RSA_COMMITMENT_INDEX = 41;
export const PROVE_RSA_BLINDED_DSC_COMMITMENT_INDEX = 42;
export const PROVE_RSA_CURRENT_DATE_INDEX = 43;
export const PROVE_RSA_USER_IDENTIFIER_INDEX = 49;
export const PROVE_RSA_SCOPE_INDEX = 50;
export const DSC_BLINDED_DSC_COMMITMENT_INDEX = 0;

View File

@@ -0,0 +1,111 @@
import {
PROVE_RSA_NULLIFIER_INDEX,
PROVE_RSA_REVEALED_DATA_PACKED_INDEX,
PROVE_RSA_OLDER_THAN_INDEX,
PROVE_RSA_PUBKEY_DISCLOSED_INDEX,
PROVE_RSA_FORBIDDEN_COUNTRIES_LIST_PACKED_DISCLOSED_INDEX,
PROVE_RSA_OFAC_RESULT_INDEX,
PROVE_RSA_COMMITMENT_INDEX,
PROVE_RSA_BLINDED_DSC_COMMITMENT_INDEX,
PROVE_RSA_CURRENT_DATE_INDEX,
PROVE_RSA_USER_IDENTIFIER_INDEX,
PROVE_RSA_SCOPE_INDEX,
DSC_BLINDED_DSC_COMMITMENT_INDEX
} from "../../constants/contractConstants";
import { Proof } from "../types";
export function generateMockRSAProveVerifierInputs({
nullifier = "1",
revealedData_packed = ["2", "3", "4"],
older_than = ["5", "6", "7"],
pubkey_disclosed = ["0", "0", "0", "0","0", "0", "0", "0","0", "0", "0", "0","0", "0", "0", "0","0", "0", "0", "0","0", "0", "0", "0","0", "0", "0", "0","0", "0", "0", "0"],
forbidden_contries_list_packed_disclose = ["8", "9"],
ofac_result = "10",
commitment = "11",
blinded_dsc_commitment = "12",
current_date = new Date(),
user_identifier = "13",
scope = "14",
}: {
nullifier?: string,
revealedData_packed?: string[],
older_than?: string[],
pubkey_disclosed?: string[],
forbidden_contries_list_packed_disclose?: string[],
ofac_result?: string,
commitment?: string,
blinded_dsc_commitment?: string,
current_date?: Date,
user_identifier?: string,
scope?: string,
}): Proof {
let pub_signals: string[] = [];
pub_signals[PROVE_RSA_NULLIFIER_INDEX] = nullifier;
pub_signals.splice(PROVE_RSA_REVEALED_DATA_PACKED_INDEX, 0, ...revealedData_packed);
pub_signals.splice(PROVE_RSA_OLDER_THAN_INDEX, 0, ...older_than);
pub_signals.splice(PROVE_RSA_PUBKEY_DISCLOSED_INDEX, 0, ...pubkey_disclosed);
pub_signals.splice(PROVE_RSA_FORBIDDEN_COUNTRIES_LIST_PACKED_DISCLOSED_INDEX, 0, ...forbidden_contries_list_packed_disclose);
pub_signals[PROVE_RSA_OFAC_RESULT_INDEX] = ofac_result;
pub_signals[PROVE_RSA_COMMITMENT_INDEX] = commitment;
pub_signals[PROVE_RSA_BLINDED_DSC_COMMITMENT_INDEX] = blinded_dsc_commitment;
pub_signals.splice(PROVE_RSA_CURRENT_DATE_INDEX, 0, ...getDateNum(current_date));
pub_signals[PROVE_RSA_USER_IDENTIFIER_INDEX] = user_identifier;
pub_signals[PROVE_RSA_SCOPE_INDEX] = scope;
let proof: Proof = {
proof: {
a: ["1", "1"],
b: [
["1", "2"],
["3", "4"]
],
c: ["5", "6"]
},
pub_signals: pub_signals
};
return proof;
}
export function generateMockDSCVerifierInputs({
blinded_dsc_commitment = "12",
}: {
blinded_dsc_commitment?: string,
}): Proof {
let pub_signals: string[] = [];
pub_signals[DSC_BLINDED_DSC_COMMITMENT_INDEX] = blinded_dsc_commitment;
let proof: Proof = {
proof: {
a: ["1", "1"],
b: [
["1", "2"],
["3", "4"]
],
c: ["5", "6"]
},
pub_signals: pub_signals
};
return proof;
}
function getDateNum(date: Date = new Date()): string[] {
const year = date.getUTCFullYear() % 100;
const month = date.getUTCMonth() + 1;
const day = date.getUTCDate();
const dateNum = [
Math.floor(year / 10),
(year % 10),
(Math.floor(month / 10)),
(month % 10),
(Math.floor(day / 10)),
(day % 10),
];
return dateNum.map(num => num.toString());
}