As carlcs said, this is already working as expected. Craft only enforces content validation rules for enabled entries (not including drafts), and most people prefer that behavior.
If you want to change that behavior, you can write a plugin that provides its own entry validation logic, by latching onto the entries.onBeforeSaveEntry event. Just put this in your plugin’s primary class:
public function init()
{
craft()->on('entries.beforeSaveEntry', function(Event, $event) {
/** @var EntryModel $entry */
$entry = $event->params['entry'];
// If the entry is disabled, the content won't be validated automatically
if (!$entry->enabled)
{
$validates = craft()->content->validateContent($entry);
if (!$validates)
{
// Add the content validation errors
$entry->addErrors($entry->getContent()->getErrors());
// Prevent the entry from getting saved
$event->performAction = false;
}
}
});
}