No, copy and paste are not always bad, not in tests. Bad tests are tests that are hard to understand or to read. Test cases should act as part of the documentation of the production code, so sometimes you have to copy and paste code if it helps to understand the intent of the test. Like I said, you have to rethink about the usage of DRY in your tests.

I'm ok with keeping this separated test class, but I'm not ok with "assert_" in the test names, they don't express behaviour and are harder to read. An assertion is an assertion, and a test case should test one behaviour which can sometimes have more than one assertion to express its functionality. So please avoid mixing these concepts.

Together with the other book I suggested, I'd suggest you to read this one as well:
http://www.amazon.com/Test-Driven-Development-By-Example/dp/0321146530/ref=sr_1_1?ie=UTF8&qid=1359637308&sr=8-1&keywords=test-driven+development
It will help you understand some fundamental concepts when writting your tests.