Skip to content

Commit d5531a3

Browse files
Refatora configuração do roteador para usar array de origens CORS e simplifica a lógica de configuração
1 parent a6b41ba commit d5531a3

4 files changed

Lines changed: 14 additions & 37 deletions

File tree

fontes/infraestrutura/centro-configuracoes/configuracao-roteador.ts

Lines changed: 2 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -21,19 +21,13 @@ export class ConfiguracaoRoteador extends ConfiguracaoComum {
2121
const roteador = componentes['roteador'] as RoteadorInterface;
2222
roteador.ativarDesativarBodyParser(this.bodyParser);
2323
roteador.ativarDesativarCors(this.cors);
24-
if (typeof roteador.configurarOrigensCors === 'function') {
25-
roteador.configurarOrigensCors(this.origensCors);
26-
} else if (typeof (roteador as any).configurarCors === 'function') {
27-
(roteador as any).configurarCors(this.origensCors);
28-
}
24+
roteador.configurarOrigensCors(this.origensCors);
2925
roteador.ativarDesativarCookieParser(this.cookieParser);
3026
roteador.ativarDesativarExpressJson(this.json);
3127
roteador.ativarDesativarHelmet(this.helmet);
3228
roteador.ativarDesativarMorgan(this.morgan);
3329
roteador.ativarDesativarPassport(this.passport);
34-
if (typeof roteador.configurarPorta === 'function') {
35-
roteador.configurarPorta(this.porta);
36-
}
30+
roteador.configurarPorta(this.porta);
3731
// Nota: configurarArquivosEstaticos é chamado em liquido.ts com caminho absoluto
3832
}
3933
}

fontes/infraestrutura/roteador/roteador.ts

Lines changed: 9 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -32,7 +32,7 @@ export class Roteador implements RoteadorInterface {
3232
bodyParser = false;
3333

3434
cors = false;
35-
origensCors: string | string[] = '*';
35+
origensCors: string[] = ['*'];
3636
passport = false;
3737

3838
constructor(autoDocumentador: AutoDocumentador) {
@@ -163,7 +163,8 @@ export class Roteador implements RoteadorInterface {
163163
return;
164164
}
165165

166-
this.origensCors = origem && origem.trim().length > 0 ? origem : '*';
166+
this.origensCors = origem.split(',').
167+
map(origem => origem.trim()).filter(origem => origem.length > 0);
167168
}
168169

169170
/**
@@ -173,22 +174,17 @@ export class Roteador implements RoteadorInterface {
173174
* lista de origens permitidas.
174175
*/
175176
resolverOpcoesCors(): { origin: string[] } | undefined {
176-
if (this.origensCors === '*') {
177+
178+
if (Array.isArray(this.origensCors)
179+
&& this.origensCors.length === 1
180+
&& this.origensCors[0] === '*') {
177181
return undefined;
178182
}
179-
180-
const origens = Array.isArray(this.origensCors)
181-
? this.origensCors
182-
: this.origensCors
183-
.split(',')
184-
.map(origem => origem.trim())
185-
.filter(origem => origem.length > 0);
186-
187-
if (origens.length === 0) {
183+
if (this.origensCors.length === 0) {
188184
return undefined;
189185
}
190186

191-
return { origin: origens };
187+
return { origin: this.origensCors };
192188
}
193189

194190
ativarDesativarPassport(valor: boolean): void {

testes/infraestrutura/centro-configuracoes.test.ts

Lines changed: 1 addition & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -198,21 +198,7 @@ describe('Testes das classes de configuração', () => {
198198
expect(roteador.configurarArquivosEstaticos).not.toHaveBeenCalled();
199199
});
200200

201-
it('deve repassar origensCors ao roteador sem depender de configurarPorta', () => {
202-
const config = new ConfiguracaoRoteador({ origensCors: ['https://exemplo.com'] });
203-
const roteador = {
204-
ativarDesativarBodyParser: jest.fn(),
205-
ativarDesativarCors: jest.fn(),
206-
ativarDesativarCookieParser: jest.fn(),
207-
ativarDesativarExpressJson: jest.fn(),
208-
ativarDesativarHelmet: jest.fn(),
209-
ativarDesativarMorgan: jest.fn(),
210-
ativarDesativarPassport: jest.fn(),
211-
configurarOrigensCors: jest.fn()
212-
};
213-
config.configurar({ roteador });
214-
expect(roteador.configurarOrigensCors).toHaveBeenCalledWith(['https://exemplo.com']);
215-
});
201+
216202

217203
it('não deve chamar configurarArquivosEstaticos quando diretorioEstatico for vazio', () => {
218204
const config = new ConfiguracaoRoteador({ diretorioEstatico: '' });

testes/infraestrutura/cors-origem.test.ts

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -103,7 +103,8 @@ describe('CORS com origem configurável', () => {
103103
ativarDesativarExpressJson: jest.fn(),
104104
ativarDesativarHelmet: jest.fn(),
105105
ativarDesativarMorgan: jest.fn(),
106-
ativarDesativarPassport: jest.fn()
106+
ativarDesativarPassport: jest.fn(),
107+
configurarPorta: jest.fn(),
107108
};
108109

109110
configuracao.configurar({ roteador: roteadorSimulado });

0 commit comments

Comments
 (0)