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 }