I don't think small businesesses give two figs whether their employees go cockfighting at the weekends, or play illegal gambling games with their wage packet.
Actually, thousands of people are let go for their illegal activities. Its common practice to fire people for DUI's and many other illegal activities. Anything that reflects negatively on a company usually will get you fired. (For corporations, small businesses don't fire as often)
Because they have a prescription for it. You couldn't directly ask them if they had a prescription because of medical confidentiality, but if they did and you didn't hire them because of they tested positive, then you're discriminating them for their health.
Actually, your discriminating against them for being a retard. When you go to take a drug test, they ask you if you are on any substance that would give them a positive on the drug test. That is your opportunity to tell them that you have a prescription and provide them with the prescription. This prevents them from not hiring you upon that basis. Since drug tests are only done to people before they are officially hired, if you give your prescription and they choose not to hire you, then you have a discrimination suit.
If you fail or refuse to give your prescription to them, then you are choosing to not be employed. They do not have to know why you are taking the medication, but as long as it is illegal, they have no basis for denying you employment (And I have never heard of anyone doing this)