Add this test into the test file.
```javascript
function test_userSentETHDirectlyToTheContractAndAdminCannotWithdrawIt() public {
vm.prank(playerA);
(bool ok,) = address(game).call{value: 1e18}("");
assert(ok);
assertEq(address(game).balance, 1e18);
vm.prank(admin);
vm.expectRevert();
game.withdrawFees(1e18);
console.log("Balance of the contract:", address(game).balance);
}
```
Result:
```javascript
[PASS] test_userSentETHDirectlyToTheContractAndAdminCannotWithdrawIt() (gas: 29528)
Logs:
Balance of the contract: 1000000000000000000
Traces:
[29528] RockPaperScissorsTest::test_userSentETHDirectlyToTheContractAndAdminCannotWithdrawIt()
├─ [0] VM::prank(playerA: [0x23223AC37AC99a1eC831d3B096dFE9ba061571CF])
│ └─ ← [Return]
├─ [80] RockPaperScissors::receive{value: 1000000000000000000}()
│ └─ ← [Stop]
├─ [0] VM::assertEq(1000000000000000000 [1e18], 1000000000000000000 [1e18]) [staticcall]
│ └─ ← [Return]
├─ [0] VM::prank(RockPaperScissorsTest: [0x7FA9385bE102ac3EAc297483Dd6233D62b3e1496])
│ └─ ← [Return]
├─ [0] VM::expectRevert(custom error 0xf4844814)
│ └─ ← [Return]
├─ [4775] RockPaperScissors::withdrawFees(1000000000000000000 [1e18])
│ └─ ← [Revert] revert: Insufficient fee balance
├─ [0] console::log("Balance of the contract:", 1000000000000000000 [1e18]) [staticcall]
│ └─ ← [Stop]
└─ ← [Return]
Suite result: ok. 1 passed; 0 failed; 0 skipped; finished in 4.77ms (2.29ms CPU time)
```
The protocol should remove the `receive` fallback function from the contract.
```diff
- receive() external payable {
- // Allow contract to receive ETH
- }
```
Or implement the machanism so that admin or owner of the game can withdraw that directly transfered funds.