My in app purchase project working perfectly now, but I need to test purchasing and when once purchase is successfully done it cannot be undone? How can I test in app purchasing and upgrading my app to full version when it can be done just one time?

None of the answers is really correct. Even if the you remove the cached purchase from your testing device, the product is marked as bought in Apple's server, associated to your test Apple ID. So the testing will not exactly reproduce the expected behavior. This is very important for testing the restore products function use cases, for example.

As far as I know, the real answer to this question is: You can't without creating a new test account, but that's not a really big deal, you can even use an invented email address (no need to validate it), and you can delete the account after using it.

You're correct. Even if you follow all steps in the other answers, when you log back in with the same test account and call restoreCompletedTransactions, the Apple server remembers all the previously purchased items.
–
DaveAldenOct 2 '13 at 15:33

If you delete your app and reinstall it, you can repurchase products. It follows the same code flow and nearly exactly the same user experience (there is a dialog letting you know that you can repurchase for free the second time). Also you can create more test users in iTunes Connect to be sure that you are doing completely clean testing.

I've spent several weeks deleting and reinstalling my app many times per day to ensure that my storekit implementation works just like I want it too.

I mean, if there's some possibility to reset purchases of test user. How else I can test for example interruption of application in the middle of purchasing process? Have more test users accounts?
–
Branislav BenoNov 2 '09 at 12:22