Tests updated

This commit is contained in:
donosonaumczuk
2022-03-16 18:00:24 -03:00
parent dbf8e41c81
commit 043f62193b
3 changed files with 11 additions and 39 deletions

View File

@@ -60,6 +60,7 @@ export const CURRENCY_MINT_AMOUNT = parseEther('100');
export const BPS_MAX = 10000;
export const TREASURY_FEE_BPS = 50;
export const REFERRAL_FEE_BPS = 250;
export const MAX_PROFILE_IMAGE_URI_LENGTH = 6000;
export const LENS_HUB_NFT_NAME = 'Lens Profiles';
export const LENS_HUB_NFT_SYMBOL = 'LENS';
export const MOCK_PROFILE_HANDLE = 'plant1ghost.eth';

View File

@@ -18,6 +18,7 @@ export const ERRORS = {
PUBLICATION_DOES_NOT_EXIST: 'PublicationDoesNotExist()',
PROFILE_HANDLE_TAKEN: 'HandleTaken()',
INVALID_HANDLE_LENGTH: 'HandleLengthInvalid()',
INVALID_IMAGE_URI_LENGTH: 'ProfileImageURILengthInvalid()',
HANDLE_CONTAINS_INVALID_CHARACTERS: 'HandleContainsInvalidCharacters()',
NOT_FOLLOW_NFT: 'CallerNotFollowNFT()',
NOT_COLLECT_NFT: 'CallerNotCollectNFT()',

View File

@@ -14,6 +14,7 @@ import {
FIRST_PROFILE_ID,
lensHub,
makeSuiteCleanRoom,
MAX_PROFILE_IMAGE_URI_LENGTH,
MOCK_FOLLOW_NFT_URI,
MOCK_PROFILE_HANDLE,
MOCK_PROFILE_URI,
@@ -48,6 +49,14 @@ makeSuiteCleanRoom('Profile URI Functionality', function () {
).to.be.revertedWith(ERRORS.NOT_PROFILE_OWNER_OR_DISPATCHER);
});
it('UserTwo should fail to set the profile URI on profile owned by user 1', async function () {
const profileURITooLong = MOCK_URI.repeat(500);
expect(profileURITooLong.length).to.be.greaterThan(MAX_PROFILE_IMAGE_URI_LENGTH);
await expect(
lensHub.setProfileImageURI(FIRST_PROFILE_ID, profileURITooLong)
).to.be.revertedWith(ERRORS.INVALID_IMAGE_URI_LENGTH);
});
it('UserTwo should fail to change the follow NFT URI for profile one', async function () {
await expect(
lensHub.connect(userTwo).setFollowNFTURI(FIRST_PROFILE_ID, OTHER_MOCK_URI)
@@ -92,45 +101,6 @@ makeSuiteCleanRoom('Profile URI Functionality', function () {
);
});
it('Default image should be used when imageURI does not meet length requirement', async function () {
const imageURI = 'https://ipfs.io/ipfs/QmbWqxBEKC3P8tqsKc98xmWNzrzDtRLMiMPL8wBuTGs';
await expect(lensHub.setProfileImageURI(FIRST_PROFILE_ID, imageURI)).to.not.be.reverted;
const tokenURI = await lensHub.tokenURI(FIRST_PROFILE_ID);
const jsonMetadata = await getJsonMetadataFromBase64TokenUri(tokenURI);
expect(jsonMetadata.name).to.eq(`@${MOCK_PROFILE_HANDLE}`);
expect(jsonMetadata.description).to.eq(`@${MOCK_PROFILE_HANDLE} - Lens profile`);
const expectedAttributes = [
{ trait_type: 'id', value: `#${FIRST_PROFILE_ID.toString()}` },
{ trait_type: 'followers', value: '0' },
{ trait_type: 'owner', value: userAddress.toLowerCase() },
{ trait_type: 'handle', value: `@${MOCK_PROFILE_HANDLE}` },
];
expect(jsonMetadata.attributes).to.eql(expectedAttributes);
expect(keccak256(toUtf8Bytes(tokenURI))).to.eq(
'0xa21f2a3aa9300a248d3a7acd3f4ff309291653121df87ffe3be545fa1dbd65e5'
);
});
it('Default image should be used when imageURI does not match expected URI beginning', async function () {
const imageURI =
'https://gateway.pinata.cloud/ipfs/QmbWqxBEKC3P8tqsKc98xmWNzrzDtRLMiMPL8wBuTGsMnR';
await expect(lensHub.setProfileImageURI(FIRST_PROFILE_ID, imageURI)).to.not.be.reverted;
const tokenURI = await lensHub.tokenURI(FIRST_PROFILE_ID);
const jsonMetadata = await getJsonMetadataFromBase64TokenUri(tokenURI);
expect(jsonMetadata.name).to.eq(`@${MOCK_PROFILE_HANDLE}`);
expect(jsonMetadata.description).to.eq(`@${MOCK_PROFILE_HANDLE} - Lens profile`);
const expectedAttributes = [
{ trait_type: 'id', value: `#${FIRST_PROFILE_ID.toString()}` },
{ trait_type: 'followers', value: '0' },
{ trait_type: 'owner', value: userAddress.toLowerCase() },
{ trait_type: 'handle', value: `@${MOCK_PROFILE_HANDLE}` },
];
expect(jsonMetadata.attributes).to.eql(expectedAttributes);
expect(keccak256(toUtf8Bytes(tokenURI))).to.eq(
'0xa21f2a3aa9300a248d3a7acd3f4ff309291653121df87ffe3be545fa1dbd65e5'
);
});
it('Default image should be used when imageURI contains double-quotes', async function () {
const imageURI =
'https://ipfs.io/ipfs/QmbWqxBEKC3P8tqsKc98xmWNzrztRLMiMPL8wBuTGsMnR" <rect x="10" y="10" fill="red';