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