Skip to content
Projects
Groups
Snippets
Help
This project
Loading...
Sign in / Register
Toggle navigation
O
openzeppelin-contracts-upgradeable
Overview
Overview
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
俞永鹏
openzeppelin-contracts-upgradeable
Commits
cd443f0d
Unverified
Commit
cd443f0d
authored
Mar 15, 2021
by
Hadrien Croubois
Committed by
GitHub
Mar 15, 2021
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Add tests to extend code coverage (#2586)
parent
d5194725
Hide whitespace changes
Inline
Side-by-side
Showing
8 changed files
with
91 additions
and
11 deletions
+91
-11
ERC721Mock.sol
contracts/mocks/ERC721Mock.sol
+0
-10
TimelockController.test.js
test/governance/TimelockController.test.js
+37
-0
ProxyAdmin.test.js
test/proxy/transparent/ProxyAdmin.test.js
+8
-0
ReentrancyGuard.test.js
test/security/ReentrancyGuard.test.js
+6
-0
ERC1155PresetMinterPauser.test.js
test/token/ERC1155/presets/ERC1155PresetMinterPauser.test.js
+9
-0
ERC20PresetMinterPauser.test.js
test/token/ERC20/presets/ERC20PresetMinterPauser.test.js
+13
-1
ERC721URIStorage.test.js
test/token/ERC721/extensions/ERC721URIStorage.test.js
+9
-0
ERC721PresetMinterPauserAutoId.test.js
...ken/ERC721/presets/ERC721PresetMinterPauserAutoId.test.js
+9
-0
No files found.
contracts/mocks/ERC721Mock.sol
View file @
cd443f0d
...
@@ -9,18 +9,8 @@ import "../token/ERC721/ERC721.sol";
...
@@ -9,18 +9,8 @@ import "../token/ERC721/ERC721.sol";
* This mock just provides a public safeMint, mint, and burn functions for testing purposes
* This mock just provides a public safeMint, mint, and burn functions for testing purposes
*/
*/
contract ERC721Mock is ERC721 {
contract ERC721Mock is ERC721 {
string private _baseTokenURI;
constructor (string memory name, string memory symbol) ERC721(name, symbol) { }
constructor (string memory name, string memory symbol) ERC721(name, symbol) { }
function _baseURI() internal view virtual override returns (string memory) {
return _baseTokenURI;
}
function setBaseURI(string calldata newBaseTokenURI) public {
_baseTokenURI = newBaseTokenURI;
}
function baseURI() public view returns (string memory) {
function baseURI() public view returns (string memory) {
return _baseURI();
return _baseURI();
}
}
...
...
test/governance/TimelockController.test.js
View file @
cd443f0d
...
@@ -368,6 +368,36 @@ contract('TimelockController', function (accounts) {
...
@@ -368,6 +368,36 @@ contract('TimelockController', function (accounts) {
);
);
});
});
it
(
'length of batch parameter must match #1'
,
async
function
()
{
await
expectRevert
(
this
.
timelock
.
scheduleBatch
(
this
.
operation
.
targets
,
[],
this
.
operation
.
datas
,
this
.
operation
.
predecessor
,
this
.
operation
.
salt
,
MINDELAY
,
{
from
:
proposer
},
),
'TimelockController: length mismatch'
,
);
});
it
(
'length of batch parameter must match #1'
,
async
function
()
{
await
expectRevert
(
this
.
timelock
.
scheduleBatch
(
this
.
operation
.
targets
,
this
.
operation
.
values
,
[],
this
.
operation
.
predecessor
,
this
.
operation
.
salt
,
MINDELAY
,
{
from
:
proposer
},
),
'TimelockController: length mismatch'
,
);
});
it
(
'prevent non-proposer from commiting'
,
async
function
()
{
it
(
'prevent non-proposer from commiting'
,
async
function
()
{
await
expectRevert
(
await
expectRevert
(
this
.
timelock
.
scheduleBatch
(
this
.
timelock
.
scheduleBatch
(
...
@@ -623,6 +653,13 @@ contract('TimelockController', function (accounts) {
...
@@ -623,6 +653,13 @@ contract('TimelockController', function (accounts) {
expectEvent
(
receipt
,
'Cancelled'
,
{
id
:
this
.
operation
.
id
});
expectEvent
(
receipt
,
'Cancelled'
,
{
id
:
this
.
operation
.
id
});
});
});
it
(
'cannot cancel invalid operation'
,
async
function
()
{
await
expectRevert
(
this
.
timelock
.
cancel
(
constants
.
ZERO_BYTES32
,
{
from
:
proposer
}),
'TimelockController: operation cannot be cancelled'
,
);
});
it
(
'prevent non-proposer from canceling'
,
async
function
()
{
it
(
'prevent non-proposer from canceling'
,
async
function
()
{
await
expectRevert
(
await
expectRevert
(
this
.
timelock
.
cancel
(
this
.
operation
.
id
,
{
from
:
other
}),
this
.
timelock
.
cancel
(
this
.
operation
.
id
,
{
from
:
other
}),
...
...
test/proxy/transparent/ProxyAdmin.test.js
View file @
cd443f0d
...
@@ -35,6 +35,10 @@ contract('ProxyAdmin', function (accounts) {
...
@@ -35,6 +35,10 @@ contract('ProxyAdmin', function (accounts) {
const
admin
=
await
this
.
proxyAdmin
.
getProxyAdmin
(
this
.
proxy
.
address
);
const
admin
=
await
this
.
proxyAdmin
.
getProxyAdmin
(
this
.
proxy
.
address
);
expect
(
admin
).
to
.
be
.
equal
(
this
.
proxyAdmin
.
address
);
expect
(
admin
).
to
.
be
.
equal
(
this
.
proxyAdmin
.
address
);
});
});
it
(
'call to invalid proxy'
,
async
function
()
{
await
expectRevert
.
unspecified
(
this
.
proxyAdmin
.
getProxyAdmin
(
this
.
implementationV1
.
address
));
});
});
});
describe
(
'#changeProxyAdmin'
,
function
()
{
describe
(
'#changeProxyAdmin'
,
function
()
{
...
@@ -56,6 +60,10 @@ contract('ProxyAdmin', function (accounts) {
...
@@ -56,6 +60,10 @@ contract('ProxyAdmin', function (accounts) {
const
implementationAddress
=
await
this
.
proxyAdmin
.
getProxyImplementation
(
this
.
proxy
.
address
);
const
implementationAddress
=
await
this
.
proxyAdmin
.
getProxyImplementation
(
this
.
proxy
.
address
);
expect
(
implementationAddress
).
to
.
be
.
equal
(
this
.
implementationV1
.
address
);
expect
(
implementationAddress
).
to
.
be
.
equal
(
this
.
implementationV1
.
address
);
});
});
it
(
'call to invalid proxy'
,
async
function
()
{
await
expectRevert
.
unspecified
(
this
.
proxyAdmin
.
getProxyImplementation
(
this
.
implementationV1
.
address
));
});
});
});
describe
(
'#upgrade'
,
function
()
{
describe
(
'#upgrade'
,
function
()
{
...
...
test/security/ReentrancyGuard.test.js
View file @
cd443f0d
...
@@ -11,6 +11,12 @@ contract('ReentrancyGuard', function (accounts) {
...
@@ -11,6 +11,12 @@ contract('ReentrancyGuard', function (accounts) {
expect
(
await
this
.
reentrancyMock
.
counter
()).
to
.
be
.
bignumber
.
equal
(
'0'
);
expect
(
await
this
.
reentrancyMock
.
counter
()).
to
.
be
.
bignumber
.
equal
(
'0'
);
});
});
it
(
'nonReentrant function can be called'
,
async
function
()
{
expect
(
await
this
.
reentrancyMock
.
counter
()).
to
.
be
.
bignumber
.
equal
(
'0'
);
await
this
.
reentrancyMock
.
callback
();
expect
(
await
this
.
reentrancyMock
.
counter
()).
to
.
be
.
bignumber
.
equal
(
'1'
);
});
it
(
'does not allow remote callback'
,
async
function
()
{
it
(
'does not allow remote callback'
,
async
function
()
{
const
attacker
=
await
ReentrancyAttack
.
new
();
const
attacker
=
await
ReentrancyAttack
.
new
();
await
expectRevert
(
await
expectRevert
(
...
...
test/token/ERC1155/presets/ERC1155PresetMinterPauser.test.js
View file @
cd443f0d
...
@@ -120,6 +120,15 @@ contract('ERC1155PresetMinterPauser', function (accounts) {
...
@@ -120,6 +120,15 @@ contract('ERC1155PresetMinterPauser', function (accounts) {
'ERC1155PresetMinterPauser: must have pauser role to pause'
,
'ERC1155PresetMinterPauser: must have pauser role to pause'
,
);
);
});
});
it
(
'other accounts cannot unpause'
,
async
function
()
{
await
this
.
token
.
pause
({
from
:
deployer
});
await
expectRevert
(
this
.
token
.
unpause
({
from
:
other
}),
'ERC1155PresetMinterPauser: must have pauser role to unpause'
,
);
});
});
});
describe
(
'burning'
,
function
()
{
describe
(
'burning'
,
function
()
{
...
...
test/token/ERC20/presets/ERC20PresetMinterPauser.test.js
View file @
cd443f0d
...
@@ -84,7 +84,19 @@ contract('ERC20PresetMinterPauser', function (accounts) {
...
@@ -84,7 +84,19 @@ contract('ERC20PresetMinterPauser', function (accounts) {
});
});
it
(
'other accounts cannot pause'
,
async
function
()
{
it
(
'other accounts cannot pause'
,
async
function
()
{
await
expectRevert
(
this
.
token
.
pause
({
from
:
other
}),
'ERC20PresetMinterPauser: must have pauser role to pause'
);
await
expectRevert
(
this
.
token
.
pause
({
from
:
other
}),
'ERC20PresetMinterPauser: must have pauser role to pause'
,
);
});
it
(
'other accounts cannot unpause'
,
async
function
()
{
await
this
.
token
.
pause
({
from
:
deployer
});
await
expectRevert
(
this
.
token
.
unpause
({
from
:
other
}),
'ERC20PresetMinterPauser: must have pauser role to unpause'
,
);
});
});
});
});
...
...
test/token/ERC721/extensions/ERC721URIStorage.test.js
View file @
cd443f0d
...
@@ -73,6 +73,15 @@ contract('ERC721URIStorage', function (accounts) {
...
@@ -73,6 +73,15 @@ contract('ERC721URIStorage', function (accounts) {
expect
(
await
this
.
token
.
tokenURI
(
firstTokenId
)).
to
.
be
.
equal
(
baseURI
+
firstTokenId
);
expect
(
await
this
.
token
.
tokenURI
(
firstTokenId
)).
to
.
be
.
equal
(
baseURI
+
firstTokenId
);
});
});
it
(
'tokens without URI can be burnt '
,
async
function
()
{
await
this
.
token
.
burn
(
firstTokenId
,
{
from
:
owner
});
expect
(
await
this
.
token
.
exists
(
firstTokenId
)).
to
.
equal
(
false
);
await
expectRevert
(
this
.
token
.
tokenURI
(
firstTokenId
),
'ERC721URIStorage: URI query for nonexistent token'
,
);
});
it
(
'tokens with URI can be burnt '
,
async
function
()
{
it
(
'tokens with URI can be burnt '
,
async
function
()
{
await
this
.
token
.
setTokenURI
(
firstTokenId
,
sampleUri
);
await
this
.
token
.
setTokenURI
(
firstTokenId
,
sampleUri
);
...
...
test/token/ERC721/presets/ERC721PresetMinterPauserAutoId.test.js
View file @
cd443f0d
...
@@ -97,6 +97,15 @@ contract('ERC721PresetMinterPauserAutoId', function (accounts) {
...
@@ -97,6 +97,15 @@ contract('ERC721PresetMinterPauserAutoId', function (accounts) {
'ERC721PresetMinterPauserAutoId: must have pauser role to pause'
,
'ERC721PresetMinterPauserAutoId: must have pauser role to pause'
,
);
);
});
});
it
(
'other accounts cannot unpause'
,
async
function
()
{
await
this
.
token
.
pause
({
from
:
deployer
});
await
expectRevert
(
this
.
token
.
unpause
({
from
:
other
}),
'ERC721PresetMinterPauserAutoId: must have pauser role to unpause'
,
);
});
});
});
describe
(
'burning'
,
function
()
{
describe
(
'burning'
,
function
()
{
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment