44package integration
55
66import (
7+ "fmt"
78 "net/http"
9+ "strings"
810 "testing"
911
12+ "code.gitea.io/gitea/modules/setting"
1013 "code.gitea.io/gitea/tests"
1114
1215 "github.com/stretchr/testify/assert"
1316)
1417
15- func TestRenderFileSVGIsInImgTag (t * testing.T ) {
18+ func TestView (t * testing.T ) {
1619 defer tests .PrepareTestEnv (t )()
20+ t .Run ("RenderFileSVGIsInImgTag" , testRenderFileSVGIsInImgTag )
21+ t .Run ("CommitListActions" , testCommitListActions )
22+ t .Run ("SecurityHeadersDefaults" , testSecurityHeadersDefaults )
23+ t .Run ("SiteManifest" , testSiteManifest )
24+ }
1725
26+ func testRenderFileSVGIsInImgTag (t * testing.T ) {
1827 session := loginUser (t , "user2" )
1928
2029 req := NewRequest (t , "GET" , "/user2/repo2/src/branch/master/line.svg" )
@@ -26,8 +35,7 @@ func TestRenderFileSVGIsInImgTag(t *testing.T) {
2635 assert .Equal (t , "/user2/repo2/raw/branch/master/line.svg" , src )
2736}
2837
29- func TestCommitListActions (t * testing.T ) {
30- defer tests .PrepareTestEnv (t )()
38+ func testCommitListActions (t * testing.T ) {
3139 session := loginUser (t , "user2" )
3240
3341 t .Run ("WikiRevisionList" , func (t * testing.T ) {
@@ -65,3 +73,43 @@ func TestCommitListActions(t *testing.T) {
6573 AssertHTMLElement (t , htmlDoc , `.commit-list .view-commit-path` , true )
6674 })
6775}
76+
77+ func testSecurityHeadersDefaults (t * testing.T ) {
78+ assertSecurityHeaders := func (t * testing.T , uri string ) {
79+ req := NewRequest (t , "GET" , uri )
80+ resp := MakeRequest (t , req , http .StatusOK )
81+ assert .Equal (t , "nosniff" , resp .Header ().Get ("X-Content-Type-Options" ))
82+ assert .Equal (t , "SAMEORIGIN" , resp .Header ().Get ("X-Frame-Options" ))
83+ }
84+ assertSecurityHeaders (t , "/" )
85+ assertSecurityHeaders (t , "/api/v1/version" )
86+ assertSecurityHeaders (t , "/assets/img/favicon.png" )
87+ }
88+
89+ func testSiteManifest (t * testing.T ) {
90+ req := NewRequest (t , "GET" , "/" )
91+ resp := MakeRequest (t , req , http .StatusOK )
92+ assert .Contains (t , resp .Body .String (), `<link rel="manifest" href="/assets/site-manifest.json">` )
93+
94+ req = NewRequest (t , "GET" , "/assets/site-manifest.json" )
95+ resp = MakeRequest (t , req , http .StatusOK )
96+ assert .Equal (t , "application/manifest+json" , resp .Header ().Get ("Content-Type" ))
97+
98+ assetBase := strings .TrimSuffix (setting .AppURL , "/" )
99+ expectedJSON := fmt .Sprintf (`{
100+ "name": %q,
101+ "short_name": %q,
102+ "start_url": %q,
103+ "icons": [
104+ {"src": %q, "type": "image/png", "sizes": "512x512"},
105+ {"src": %q, "type": "image/svg+xml", "sizes": "512x512"}
106+ ]
107+ }` ,
108+ setting .AppName ,
109+ setting .AppName ,
110+ setting .AppURL ,
111+ assetBase + "/assets/img/logo.png" ,
112+ assetBase + "/assets/img/logo.svg" ,
113+ )
114+ assert .JSONEq (t , expectedJSON , resp .Body .String ())
115+ }
0 commit comments