@@ -521,6 +521,55 @@ public void MultilineTextTemplate_ReturnsTextArea()
521521 Assert . Equal ( expected , HtmlContentUtilities . HtmlContentToString ( result ) ) ;
522522 }
523523
524+ [ Fact ]
525+ public void PasswordTemplate_ReturnsInputElement_IgnoresValues ( )
526+ {
527+ // Arrange
528+ var expected = "<input class=\" HtmlEncode[[text-box single-line password]]\" " +
529+ "id=\" HtmlEncode[[FieldPrefix]]\" name=\" HtmlEncode[[FieldPrefix]]\" " +
530+ "type=\" HtmlEncode[[password]]\" />" ;
531+
532+ // Template ignores Model.
533+ var model = "Model string" ;
534+
535+ var helper = DefaultTemplatesUtilities . GetHtmlHelper ( model ) ;
536+ var viewData = helper . ViewData ;
537+ var templateInfo = viewData . TemplateInfo ;
538+ templateInfo . HtmlFieldPrefix = "FieldPrefix" ;
539+
540+ // Template ignores FormattedModelValue, ModelState and ViewData.
541+ templateInfo . FormattedModelValue = "Formatted string" ;
542+ viewData . ModelState . SetModelValue ( "FieldPrefix" , "Raw model string" , "Attempted model string" ) ;
543+ viewData [ "FieldPrefix" ] = "ViewData string" ;
544+
545+ // Act
546+ var result = DefaultEditorTemplates . PasswordTemplate ( helper ) ;
547+
548+ // Assert
549+ Assert . Equal ( expected , HtmlContentUtilities . HtmlContentToString ( result ) ) ;
550+ }
551+
552+ [ Fact ]
553+ public void PasswordTemplate_ReturnsInputElement_UsesHtmlAttributes ( )
554+ {
555+ // Arrange
556+ var expected = "<input class=\" HtmlEncode[[super text-box single-line password]]\" " +
557+ "id=\" HtmlEncode[[FieldPrefix]]\" name=\" HtmlEncode[[FieldPrefix]]\" " +
558+ "type=\" HtmlEncode[[password]]\" value=\" HtmlEncode[[Html attributes string]]\" />" ;
559+ var helper = DefaultTemplatesUtilities . GetHtmlHelper < string > ( model : null ) ;
560+ var viewData = helper . ViewData ;
561+ var templateInfo = viewData . TemplateInfo ;
562+ templateInfo . HtmlFieldPrefix = "FieldPrefix" ;
563+
564+ viewData [ "htmlAttributes" ] = new { @class = "super" , value = "Html attributes string" } ;
565+
566+ // Act
567+ var result = DefaultEditorTemplates . PasswordTemplate ( helper ) ;
568+
569+ // Assert
570+ Assert . Equal ( expected , HtmlContentUtilities . HtmlContentToString ( result ) ) ;
571+ }
572+
524573 [ Theory ]
525574 [ MemberData ( nameof ( TemplateNameData ) ) ]
526575 public void Editor_CallsExpectedHtmlHelper ( string templateName , string expectedResult )
0 commit comments