Add basic string functions to templates (#514)
* Add basic string functions to templates Co-authored-by: Oliver <oliver006@users.noreply.github.com> Co-authored-by: Joel Speed <Joel.speed@hotmail.co.uk> Co-authored-by: Henry Jenkins <henry@henryjenkins.name>
This commit is contained in:
		
							parent
							
								
									9d626265e8
								
							
						
					
					
						commit
						be9eaaeb48
					
				|  | @ -25,6 +25,7 @@ | ||||||
| 
 | 
 | ||||||
| ## Changes since v5.1.1 | ## Changes since v5.1.1 | ||||||
| 
 | 
 | ||||||
|  | - [#514](https://github.com/oauth2-proxy/oauth2-proxy/pull/514) Add basic string functions to templates | ||||||
| - [#524](https://github.com/oauth2-proxy/oauth2-proxy/pull/524) Sign cookies with SHA256 (@NickMeves) | - [#524](https://github.com/oauth2-proxy/oauth2-proxy/pull/524) Sign cookies with SHA256 (@NickMeves) | ||||||
| - [#515](https://github.com/oauth2-proxy/oauth2-proxy/pull/515) Drop configure script in favour of native Makefile env and checks (@JoelSpeed) | - [#515](https://github.com/oauth2-proxy/oauth2-proxy/pull/515) Drop configure script in favour of native Makefile env and checks (@JoelSpeed) | ||||||
| - [#487](https://github.com/oauth2-proxy/oauth2-proxy/pull/487) Switch flags to PFlag to remove StringArray (@JoelSpeed) | - [#487](https://github.com/oauth2-proxy/oauth2-proxy/pull/487) Switch flags to PFlag to remove StringArray (@JoelSpeed) | ||||||
|  |  | ||||||
|  | @ -3,6 +3,7 @@ package main | ||||||
| import ( | import ( | ||||||
| 	"html/template" | 	"html/template" | ||||||
| 	"path" | 	"path" | ||||||
|  | 	"strings" | ||||||
| 
 | 
 | ||||||
| 	"github.com/oauth2-proxy/oauth2-proxy/pkg/logger" | 	"github.com/oauth2-proxy/oauth2-proxy/pkg/logger" | ||||||
| ) | ) | ||||||
|  | @ -12,7 +13,11 @@ func loadTemplates(dir string) *template.Template { | ||||||
| 		return getTemplates() | 		return getTemplates() | ||||||
| 	} | 	} | ||||||
| 	logger.Printf("using custom template directory %q", dir) | 	logger.Printf("using custom template directory %q", dir) | ||||||
| 	t, err := template.New("").ParseFiles(path.Join(dir, "sign_in.html"), path.Join(dir, "error.html")) | 	funcMap := template.FuncMap{ | ||||||
|  | 		"ToUpper": strings.ToUpper, | ||||||
|  | 		"ToLower": strings.ToLower, | ||||||
|  | 	} | ||||||
|  | 	t, err := template.New("").Funcs(funcMap).ParseFiles(path.Join(dir, "sign_in.html"), path.Join(dir, "error.html")) | ||||||
| 	if err != nil { | 	if err != nil { | ||||||
| 		logger.Fatalf("failed parsing template %s", err) | 		logger.Fatalf("failed parsing template %s", err) | ||||||
| 	} | 	} | ||||||
|  |  | ||||||
|  | @ -1,11 +1,61 @@ | ||||||
| package main | package main | ||||||
| 
 | 
 | ||||||
| import ( | import ( | ||||||
|  | 	"bytes" | ||||||
|  | 	"io/ioutil" | ||||||
|  | 	"log" | ||||||
|  | 	"os" | ||||||
|  | 	"path/filepath" | ||||||
| 	"testing" | 	"testing" | ||||||
| 
 | 
 | ||||||
| 	"github.com/stretchr/testify/assert" | 	"github.com/stretchr/testify/assert" | ||||||
| ) | ) | ||||||
| 
 | 
 | ||||||
|  | func TestLoadTemplates(t *testing.T) { | ||||||
|  | 	data := struct { | ||||||
|  | 		TestString string | ||||||
|  | 	}{ | ||||||
|  | 		TestString: "Testing", | ||||||
|  | 	} | ||||||
|  | 
 | ||||||
|  | 	templates := loadTemplates("") | ||||||
|  | 	assert.NotEqual(t, templates, nil) | ||||||
|  | 
 | ||||||
|  | 	var defaultSignin bytes.Buffer | ||||||
|  | 	templates.ExecuteTemplate(&defaultSignin, "sign_in.html", data) | ||||||
|  | 	assert.Equal(t, "\n<!DOCTYPE html>", defaultSignin.String()[0:16]) | ||||||
|  | 
 | ||||||
|  | 	var defaultError bytes.Buffer | ||||||
|  | 	templates.ExecuteTemplate(&defaultError, "error.html", data) | ||||||
|  | 	assert.Equal(t, "\n<!DOCTYPE html>", defaultError.String()[0:16]) | ||||||
|  | 
 | ||||||
|  | 	dir, err := ioutil.TempDir("", "templatetest") | ||||||
|  | 	if err != nil { | ||||||
|  | 		log.Fatal(err) | ||||||
|  | 	} | ||||||
|  | 	defer os.RemoveAll(dir) | ||||||
|  | 
 | ||||||
|  | 	templateHTML := `{{.TestString}} {{.TestString | ToLower}} {{.TestString | ToUpper}}` | ||||||
|  | 	signInFile := filepath.Join(dir, "sign_in.html") | ||||||
|  | 	if err := ioutil.WriteFile(signInFile, []byte(templateHTML), 0666); err != nil { | ||||||
|  | 		log.Fatal(err) | ||||||
|  | 	} | ||||||
|  | 	errorFile := filepath.Join(dir, "error.html") | ||||||
|  | 	if err := ioutil.WriteFile(errorFile, []byte(templateHTML), 0666); err != nil { | ||||||
|  | 		log.Fatal(err) | ||||||
|  | 	} | ||||||
|  | 	templates = loadTemplates(dir) | ||||||
|  | 	assert.NotEqual(t, templates, nil) | ||||||
|  | 
 | ||||||
|  | 	var sitpl bytes.Buffer | ||||||
|  | 	templates.ExecuteTemplate(&sitpl, "sign_in.html", data) | ||||||
|  | 	assert.Equal(t, "Testing testing TESTING", sitpl.String()) | ||||||
|  | 
 | ||||||
|  | 	var errtpl bytes.Buffer | ||||||
|  | 	templates.ExecuteTemplate(&errtpl, "error.html", data) | ||||||
|  | 	assert.Equal(t, "Testing testing TESTING", errtpl.String()) | ||||||
|  | } | ||||||
|  | 
 | ||||||
| func TestTemplatesCompile(t *testing.T) { | func TestTemplatesCompile(t *testing.T) { | ||||||
| 	templates := getTemplates() | 	templates := getTemplates() | ||||||
| 	assert.NotEqual(t, templates, nil) | 	assert.NotEqual(t, templates, nil) | ||||||
|  |  | ||||||
		Loading…
	
		Reference in New Issue