github.com/mattermosttest/mattermost-server/v5@v5.0.0-20200917143240-9dfa12e121f9/app/login_test.go (about)

     1  // Copyright (c) 2015-present Mattermost, Inc. All Rights Reserved.
     2  // See LICENSE.txt for license information.
     3  
     4  package app
     5  
     6  import (
     7  	"net/http"
     8  	"testing"
     9  
    10  	"github.com/stretchr/testify/require"
    11  )
    12  
    13  func TestCheckForClientSideCert(t *testing.T) {
    14  	th := Setup(t)
    15  	defer th.TearDown()
    16  
    17  	var tests = []struct {
    18  		pem           string
    19  		subject       string
    20  		expectedEmail string
    21  	}{
    22  		{"blah", "blah", ""},
    23  		{"blah", "C=US, ST=Maryland, L=Pasadena, O=Brent Baccala, OU=FreeSoft, CN=www.freesoft.org/emailAddress=test@test.com", "test@test.com"},
    24  		{"blah", "C=US, ST=Maryland, L=Pasadena, O=Brent Baccala, OU=FreeSoft, CN=www.freesoft.org/EmailAddress=test@test.com", ""},
    25  		{"blah", "CN=www.freesoft.org/EmailAddress=test@test.com, C=US, ST=Maryland, L=Pasadena, O=Brent Baccala, OU=FreeSoft", ""},
    26  	}
    27  
    28  	for _, tt := range tests {
    29  		r := &http.Request{Header: http.Header{}}
    30  		r.Header.Add("X-SSL-Client-Cert", tt.pem)
    31  		r.Header.Add("X-SSL-Client-Cert-Subject-DN", tt.subject)
    32  
    33  		_, _, actualEmail := th.App.CheckForClientSideCert(r)
    34  
    35  		require.Equal(t, actualEmail, tt.expectedEmail, "CheckForClientSideCert(%v): expected %v, actual %v", tt.subject, tt.expectedEmail, actualEmail)
    36  	}
    37  }