From a43fc9ad17d4337dd26b9b8d867470ca8c548b41 Mon Sep 17 00:00:00 2001 From: ᴜɴᴋɴᴡᴏɴ Date: Sat, 21 Mar 2020 00:12:38 +0800 Subject: ipynb: sanitize rendered HTML (#5996) * ipynb: sanitize rendered HTML Fixes #5170 * Remove hardcode URL * Add tests --- internal/app/api_test.go | 95 ++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 95 insertions(+) create mode 100644 internal/app/api_test.go (limited to 'internal/app/api_test.go') diff --git a/internal/app/api_test.go b/internal/app/api_test.go new file mode 100644 index 00000000..8b123078 --- /dev/null +++ b/internal/app/api_test.go @@ -0,0 +1,95 @@ +// Copyright 2020 The Gogs Authors. All rights reserved. +// Use of this source code is governed by a MIT-style +// license that can be found in the LICENSE file. + +package app + +import ( + "testing" + + "github.com/stretchr/testify/assert" +) + +func Test_ipynbSanitizer(t *testing.T) { + p := ipynbSanitizer() + + tests := []struct { + name string + input string + want string + }{ + { + name: "allow 'class' and 'data-prompt-number' attributes", + input: ` +
+
+
Hello world
+
+
+
+
+
+
+`, + want: ` +
+
+
Hello world
+
+
+
+
+
+
+`, + }, + { + name: "allow base64 encoded images", + input: ` +
+ +
+`, + want: ` +
+ +
+`, + }, + { + name: "prevent XSS", + input: ` +
+
+ + +
+
+`, + want: ` +
+
+ + +
+
+`, + }, + } + for _, test := range tests { + t.Run(test.name, func(t *testing.T) { + assert.Equal(t, test.want, p.Sanitize(test.input)) + }) + } +} -- cgit v1.2.3