Shortcode is not outputting all of the desired markup

I just tested this code and it appears to be working. Though as others have stated you are missing a semicolon at the end of margin-bottom, which you may want to add to be semantically correct.

With that being said, to get the code to output exactly how you want when entered into the WYSIWYG, without additional p tags wrapping the Text, you should add a filter to replace the <p> tags like so:

/* Shortcode Content Filter */
if ( ! function_exists( 'the_content_filter' ) ) :
    function the_content_filter($content) {
        $block = join("|",array('container'));
        $rep = preg_replace("/(<p>)?\[($block)(\s[^\]]+)?\](<\/p>|<br \/>)?/","[$2$3]",$content);
        $rep = preg_replace("/(<p>)?\[\/($block)](<\/p>|<br \/>)?/","[/$2]",$rep);
        return $rep;
    }
    add_filter("the_content", "the_content_filter");
endif;

Otherwise, doing this in the editor:

[container]

Text

[/container]

This will be output:

<div class="container test" style="margin-top:20px; margin-bottom:20px"><section><div class="row"><p></p>
<p>Test</p>
<p>
</p></div></section></div>