mirror of
https://github.com/hedgedoc/hedgedoc.git
synced 2025-05-27 21:44:21 -04:00
fix(config): Replace HD_DOMAIN and HD_EDITOR_BASE_URL with HD_BASE_URL
Signed-off-by: Tilman Vatteroth <git@tilmanvatteroth.de>
This commit is contained in:
parent
65ac00913b
commit
5e1fdbe81d
21 changed files with 255 additions and 92 deletions
|
@ -1,3 +1,3 @@
|
|||
NEXT_PUBLIC_USE_MOCK_API=true
|
||||
HD_EDITOR_BASE_URL="http://localhost:3001/"
|
||||
HD_BASE_URL="http://localhost:3001/"
|
||||
HD_RENDERER_BASE_URL="http://127.0.0.1:3001/"
|
||||
|
|
|
@ -1,3 +1,3 @@
|
|||
NEXT_PUBLIC_USE_MOCK_API=true
|
||||
HD_EDITOR_BASE_URL="http://127.0.0.1:3001/"
|
||||
HD_BASE_URL="http://127.0.0.1:3001/"
|
||||
HD_RENDERER_BASE_URL="http://127.0.0.1:3001/"
|
||||
|
|
|
@ -10,7 +10,7 @@
|
|||
"analyze": "cross-env ANALYZE=true yarn build",
|
||||
"dev": "cross-env PORT=3001 next dev",
|
||||
"dev:test": "cross-env PORT=3001 NODE_ENV=test NEXT_PUBLIC_TEST_MODE=true next dev",
|
||||
"dev:with-local-backend": "cross-env PORT=3001 NEXT_PUBLIC_USE_MOCK_API=false HD_EDITOR_BASE_URL=http://localhost:8080/ HD_RENDERER_BASE_URL=http://localhost:8080/ next dev",
|
||||
"dev:with-local-backend": "cross-env PORT=3001 NEXT_PUBLIC_USE_MOCK_API=false HD_BASE_URL=http://localhost:8080/ HD_RENDERER_BASE_URL=http://localhost:8080/ next dev",
|
||||
"format": "prettier -c \"src/**/*.{ts,tsx,js}\" \"cypress/**/*.{ts,tsx}\"",
|
||||
"format:fix": "prettier -w \"src/**/*.{ts,tsx,js}\" \"cypress/**/*.{ts,tsx}\"",
|
||||
"lint": "eslint --max-warnings=0 --ext .ts,.tsx src",
|
||||
|
|
|
@ -7,7 +7,7 @@ import { BaseUrlFromEnvExtractor } from './base-url-from-env-extractor'
|
|||
|
||||
describe('BaseUrlFromEnvExtractor', () => {
|
||||
it('should return the base urls if both are valid urls', () => {
|
||||
process.env.HD_EDITOR_BASE_URL = 'https://editor.example.org/'
|
||||
process.env.HD_BASE_URL = 'https://editor.example.org/'
|
||||
process.env.HD_RENDERER_BASE_URL = 'https://renderer.example.org/'
|
||||
const baseUrlFromEnvExtractor = new BaseUrlFromEnvExtractor()
|
||||
const result = baseUrlFromEnvExtractor.extractBaseUrls()
|
||||
|
@ -19,42 +19,52 @@ describe('BaseUrlFromEnvExtractor', () => {
|
|||
})
|
||||
|
||||
it('should return an empty optional if no var is set', () => {
|
||||
process.env.HD_EDITOR_BASE_URL = undefined
|
||||
process.env.HD_BASE_URL = undefined
|
||||
process.env.HD_RENDERER_BASE_URL = undefined
|
||||
const baseUrlFromEnvExtractor = new BaseUrlFromEnvExtractor()
|
||||
expect(baseUrlFromEnvExtractor.extractBaseUrls().isEmpty()).toBeTruthy()
|
||||
})
|
||||
|
||||
it("should return an empty optional if editor base url isn't an URL", () => {
|
||||
process.env.HD_EDITOR_BASE_URL = 'bibedibabedibu'
|
||||
process.env.HD_BASE_URL = 'bibedibabedibu'
|
||||
process.env.HD_RENDERER_BASE_URL = 'https://renderer.example.org/'
|
||||
const baseUrlFromEnvExtractor = new BaseUrlFromEnvExtractor()
|
||||
expect(baseUrlFromEnvExtractor.extractBaseUrls().isEmpty()).toBeTruthy()
|
||||
})
|
||||
|
||||
it("should return an empty optional if renderer base url isn't an URL", () => {
|
||||
process.env.HD_EDITOR_BASE_URL = 'https://editor.example.org/'
|
||||
process.env.HD_BASE_URL = 'https://editor.example.org/'
|
||||
process.env.HD_RENDERER_BASE_URL = 'bibedibabedibu'
|
||||
const baseUrlFromEnvExtractor = new BaseUrlFromEnvExtractor()
|
||||
expect(baseUrlFromEnvExtractor.extractBaseUrls().isEmpty()).toBeTruthy()
|
||||
})
|
||||
|
||||
it("should return an empty optional if editor base url isn't ending with a slash", () => {
|
||||
process.env.HD_EDITOR_BASE_URL = 'https://editor.example.org'
|
||||
it("should return an optional if editor base url isn't ending with a slash", () => {
|
||||
process.env.HD_BASE_URL = 'https://editor.example.org'
|
||||
process.env.HD_RENDERER_BASE_URL = 'https://renderer.example.org/'
|
||||
const baseUrlFromEnvExtractor = new BaseUrlFromEnvExtractor()
|
||||
expect(baseUrlFromEnvExtractor.extractBaseUrls().isEmpty()).toBeTruthy()
|
||||
const result = baseUrlFromEnvExtractor.extractBaseUrls()
|
||||
expect(result.isPresent()).toBeTruthy()
|
||||
expect(result.get()).toStrictEqual({
|
||||
renderer: 'https://renderer.example.org/',
|
||||
editor: 'https://editor.example.org/'
|
||||
})
|
||||
})
|
||||
|
||||
it("should return an empty optional if renderer base url isn't ending with a slash", () => {
|
||||
process.env.HD_EDITOR_BASE_URL = 'https://editor.example.org/'
|
||||
it("should return an optional if renderer base url isn't ending with a slash", () => {
|
||||
process.env.HD_BASE_URL = 'https://editor.example.org/'
|
||||
process.env.HD_RENDERER_BASE_URL = 'https://renderer.example.org'
|
||||
const baseUrlFromEnvExtractor = new BaseUrlFromEnvExtractor()
|
||||
expect(baseUrlFromEnvExtractor.extractBaseUrls().isEmpty()).toBeTruthy()
|
||||
const result = baseUrlFromEnvExtractor.extractBaseUrls()
|
||||
expect(result.isPresent()).toBeTruthy()
|
||||
expect(result.get()).toStrictEqual({
|
||||
renderer: 'https://renderer.example.org/',
|
||||
editor: 'https://editor.example.org/'
|
||||
})
|
||||
})
|
||||
|
||||
it('should copy editor base url to renderer base url if renderer base url is omitted', () => {
|
||||
process.env.HD_EDITOR_BASE_URL = 'https://editor.example.org/'
|
||||
process.env.HD_BASE_URL = 'https://editor.example.org/'
|
||||
delete process.env.HD_RENDERER_BASE_URL
|
||||
const baseUrlFromEnvExtractor = new BaseUrlFromEnvExtractor()
|
||||
const result = baseUrlFromEnvExtractor.extractBaseUrls()
|
||||
|
|
|
@ -6,6 +6,7 @@
|
|||
import type { BaseUrls } from '../components/common/base-url/base-url-context-provider'
|
||||
import { Logger } from './logger'
|
||||
import { isTestMode } from './test-modes'
|
||||
import { MissingTrailingSlashError, parseUrl } from '@hedgedoc/commons'
|
||||
import { Optional } from '@mrdrogdrog/optional'
|
||||
|
||||
/**
|
||||
|
@ -16,27 +17,22 @@ export class BaseUrlFromEnvExtractor {
|
|||
private logger = new Logger('Base URL Configuration')
|
||||
|
||||
private extractUrlFromEnvVar(envVarName: string, envVarValue: string | undefined): Optional<URL> {
|
||||
return Optional.ofNullable(envVarValue)
|
||||
.filter((value) => {
|
||||
const endsWithSlash = value.endsWith('/')
|
||||
if (!endsWithSlash) {
|
||||
this.logger.error(`${envVarName} must end with an '/'`)
|
||||
}
|
||||
return endsWithSlash
|
||||
})
|
||||
.map((value) => {
|
||||
try {
|
||||
return new URL(value)
|
||||
} catch (error) {
|
||||
return null
|
||||
}
|
||||
})
|
||||
try {
|
||||
return parseUrl(envVarValue)
|
||||
} catch (error) {
|
||||
if (error instanceof MissingTrailingSlashError) {
|
||||
this.logger.error(`The path in ${envVarName} must end with an '/'`)
|
||||
return Optional.empty()
|
||||
} else {
|
||||
throw error
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private extractEditorBaseUrlFromEnv(): Optional<URL> {
|
||||
const envValue = this.extractUrlFromEnvVar('HD_EDITOR_BASE_URL', process.env.HD_EDITOR_BASE_URL)
|
||||
const envValue = this.extractUrlFromEnvVar('HD_BASE_URL', process.env.HD_BASE_URL)
|
||||
if (envValue.isEmpty()) {
|
||||
this.logger.error("HD_EDITOR_BASE_URL isn't a valid URL!")
|
||||
this.logger.error("HD_BASE_URL isn't a valid URL!")
|
||||
}
|
||||
return envValue
|
||||
}
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue