Is this fair or is she taking advantage of me?

I live with my mom, I have a son (I pay for everything for my son, she doesn't). 
I have my own car. I pay for my own gas & oil (I have an oil leak). But as soon as I get money, she TELLS (not asks) me I'm going to give her gas money. She doesn't drive me anywhere. I go places with her when she wants, but that's when it's where SHE is going. Not where I want to go. 
She always makes me buy her food, and junk food. She doesn't buy me anything. 
I just bought her mac makeup and gave her $25 in gas money almost a week ago. 
She just now told me, "you can give me some gas money". I said, "I only have $15". 
Then she said, "well you don't have to use all of it but you can still give me some". 
I just looked at her like she's crazy. Now realize, she is a narrsasist. So I don't want to say anything to her because she yells infront of my 5 month old, which makes him cry and actually scares the shit out of him (I've seen it). I don't know what to do. I'm moving out in a month and I feel like that will be the time for me to actually open my mouth and call her out on her bullshit. But right now, I'm scared. She has actually punched me (also infront of my son) while he was crying because of all of the yelling. While that happened, I told her that she's a bad mom and that she won't be watching my son. 
After we got over the argument, she told me, "never tell me I can't be around your son ever again". 
But isn't it my choice? 
Please give me your thoughts on all of this.