Generating test cases is the easy part
None of that touches the actual limit, which is that somebody has to sit down, read the requirement, work out what could go wrong, and write the cases. Ask a competent engineer to cover it and you will reliably get three cases: a valid code is accepted an invalid code is rejected an expired code is rejected Those three are not a failure of skill.
