forked from github/docs
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathdeprecated-enterprise-versions.js
178 lines (146 loc) · 7.17 KB
/
deprecated-enterprise-versions.js
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
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
const app = require('../../server')
const enterpriseServerReleases = require('../../lib/enterprise-server-releases')
const { get, getDOM } = require('../helpers')
const supertest = require('supertest')
describe('enterprise deprecation', () => {
jest.setTimeout(60 * 1000)
test('redirects language-prefixed requests for deprecated enterprise content', async () => {
const res = await get('/en/enterprise/2.12')
expect(res.statusCode).toBe(301)
expect(res.headers.location).toBe('/enterprise/2.12')
})
test('redirects language-prefixed requests for deprecated version 11.10.340', async () => {
const res = await get('/en/enterprise/11.10.340')
expect(res.statusCode).toBe(301)
expect(res.headers.location).toBe('/enterprise/11.10.340')
})
test('redirects non-language-prefixed requests for deprecated enterprise content >=2.13', async () => {
const res = await get('/enterprise/2.13')
expect(res.statusCode).toBe(301)
expect(res.headers.location).toBe('/en/enterprise/2.13')
})
test('workaround for lost frontmatter redirects works in deprecated enterprise content >=2.13', async () => {
const res = await get('/en/enterprise/2.15/user/articles/viewing-contributions-on-your-profile-page')
expect(res.statusCode).toBe(301)
expect(res.headers.location).toBe('/en/enterprise/2.15/user/articles/viewing-contributions-on-your-profile')
})
test('handles requests for deprecated Enterprise pages ( >=2.13 )', async () => {
expect(enterpriseServerReleases.deprecated.includes('2.13')).toBe(true)
const $ = await getDOM('/en/enterprise/2.13/user/articles/about-branches')
expect($.res.statusCode).toBe(200)
expect($('h1').text()).toBe('About branches')
})
test('sets the expected x-robots-tag header for deprecated Enterprise pages', async () => {
const res = await get('/en/enterprise/2.13/user/articles/about-branches')
expect(res.statusCode).toBe(200)
expect(res.get('x-robots-tag')).toBe('none')
})
test('handles requests for deprecated Enterprise pages ( <2.13 )', async () => {
expect(enterpriseServerReleases.deprecated.includes('2.12')).toBe(true)
const $ = await getDOM('/enterprise/2.12/user/articles/about-branches')
expect($.res.statusCode).toBe(200)
expect($('h2').text()).toBe('About branches')
})
test('handles requests for deprecated Enterprise version 11.10.340', async () => {
expect(enterpriseServerReleases.deprecated.includes('11.10.340')).toBe(true)
const $ = await getDOM('/enterprise/11.10.340/admin/articles/adding-teams')
expect($.res.statusCode).toBe(200)
expect($('h2').text()).toBe('Adding teams')
})
test('has working admin guide links ( <2.13 )', async () => {
const guidesPath = '/enterprise/2.12/admin'
let $ = await getDOM(`${guidesPath}/guides`)
const firstLink = $('[class="guide-section"]').children('a').attr('href')
$ = await getDOM(`${guidesPath}/${firstLink}`)
expect($.res.statusCode).toBe(200)
// this test assumes the Installation guide is the first link on the guides page
expect($('h2').text()).toBe('Installing and configuring GitHub Enterprise')
})
})
describe('deprecation banner', () => {
test('renders a deprecation warning banner on oldest supported Enterprise version', async () => {
const $ = await getDOM(`/en/enterprise/${enterpriseServerReleases.oldestSupported}`)
expect($('.deprecation-banner').length).toBe(1)
})
test('does not render a deprecation warning banner on other Enterprise versions', async () => {
const $ = await getDOM(`/en/enterprise/${enterpriseServerReleases.latest}`)
expect($('.deprecation-banner').length).toBe(0)
})
test('deprecation warning banner includes a date', async () => {
const $ = await getDOM(`/en/enterprise/${enterpriseServerReleases.oldestSupported}`)
expect($('.deprecation-banner b').text().endsWith('discontinued on .')).toBe(false)
})
test('deprecation warning banner says "will be discontinued" when date is in future', async () => {
const $ = await getDOM(`/en/enterprise/${enterpriseServerReleases.oldestSupported}`)
expect($('.deprecation-banner b').text().includes('will be discontinued')).toBe(true)
})
test('deprecation warning banner says "was discontinued" when date is in past', async () => {
const $ = await getDOM(`/en/enterprise/${enterpriseServerReleases.deprecated[0]}`)
expect($('.deprecation-banner b').text().includes('was discontinued')).toBe(true)
})
})
describe('JS and CSS assets', () => {
it('returns the expected CSS file > 2.18', async () => {
const result = await supertest(app)
.get('/enterprise/2.18/dist/index.css')
.set('Referrer', '/en/enterprise/2.18')
expect(result.statusCode).toBe(200)
expect(result.get('x-is-archived')).toBe('true')
expect(result.get('Content-Type')).toBe('text/css; charset=utf-8')
})
it('returns the expected CSS file', async () => {
const result = await supertest(app)
.get('/stylesheets/index.css')
.set('Referrer', '/en/enterprise/2.13')
expect(result.statusCode).toBe(200)
expect(result.get('x-is-archived')).toBe('true')
expect(result.get('Content-Type')).toBe('text/css; charset=utf-8')
})
it('returns the expected JS file > 2.18', async () => {
const result = await supertest(app)
.get('/enterprise/2.18/dist/index.js')
.set('Referrer', '/en/enterprise/2.18')
expect(result.statusCode).toBe(200)
expect(result.get('x-is-archived')).toBe('true')
expect(result.get('Content-Type')).toBe('application/javascript; charset=utf-8')
})
it('returns the expected JS file', async () => {
const result = await supertest(app)
.get('/javascripts/index.js')
.set('Referrer', '/en/enterprise/2.13')
expect(result.statusCode).toBe(200)
expect(result.get('x-is-archived')).toBe('true')
expect(result.get('Content-Type')).toBe('application/javascript; charset=utf-8')
})
it('returns the expected image', async () => {
const result = await supertest(app)
.get('/assets/images/octicons/hamburger.svg')
.set('Referrer', '/en/enterprise/2.17')
expect(result.statusCode).toBe(200)
expect(result.get('x-is-archived')).toBe('true')
expect(result.get('Content-Type')).toBe('image/svg+xml; charset=utf-8')
})
it('returns the expected favicon', async () => {
const result = await supertest(app)
.get('/assets/images/site/favicon.svg')
.set('Referrer', '/en/enterprise/2.18')
expect(result.statusCode).toBe(200)
expect(result.get('x-is-archived')).toBe('true')
expect(result.get('Content-Type')).toBe('image/svg+xml; charset=utf-8')
})
it('returns the expected CSS file ( <2.13 )', async () => {
const result = await supertest(app)
.get('/stylesheets/application.css')
.set('Referrer', '/en/enterprise/2.12')
expect(result.statusCode).toBe(200)
expect(result.get('x-is-archived')).toBe('true')
expect(result.get('Content-Type')).toBe('text/css; charset=utf-8')
})
it('ignores invalid paths', async () => {
const result = await supertest(app)
.get('/pizza/index.css')
.set('Referrer', '/en/enterprise/2.13')
expect(result.statusCode).toBe(404)
expect(result.get('x-is-archived')).toBeUndefined()
})
})