Я пытаюсь написать тест, который проверяет правильность настройки CORS для моего API. API написан на Go и использует GIN. У меня разные настройки CORS в зависимости от группы маршрутизатора. Это выглядит как:
router := gin.New()
router.Use(gin.Recovery())
domainOneCORS := cors.New(cors.Config{
AllowOrigins: []string{"https://domainone.com"},
AllowMethods: []string{"GET", "POST", "PUT", "DELETE", "PATCH"},
AllowHeaders: []string{"Authorization", "Content-Length", "Content-Type", "Origin"},
ExposeHeaders: []string{"Content-Length"},
MaxAge: 12 * time.Hour,
})
domainTwoCORS := cors.New(cors.Config{
AllowOrigins: []string{"https://domaintwo.com"},
AllowMethods: []string{"GET", "POST", "PUT", "DELETE", "PATCH"},
AllowHeaders: []string{"Authorization", "Content-Length", "Content-Type", "Origin"},
ExposeHeaders: []string{"Content-Length"},
MaxAge: 12 * time.Hour,
})
domainOneAPI := router.Group("/one")
domainOneAPI.Use(domainOneCORS)
{
domainOneAPI.GET("", handler.DomainOneHealth)
}
domainTwoAPI := router.Group("/two")
domainTwoAPI.Use(domainTwoCORS)
{
domainTwoAPI.GET("", handler.DomainTwoHealth)
}
Я пытаюсь найти лучший способ проверить свою конфигурацию. Большинство тестов, которые я нашел, используют обработчик и пропускают часть промежуточного программного обеспечения маршрутизатора. Есть ли смысл его тестировать? Даже если я могу имитировать маршрутизатор и ответ, это только подтверждает, что HTTP-клиент может попасть в конечную точку. Отсутствие проверки веб-приложения в другом домене может привести к срабатыванию API. Я обнаружил эту проблему, похожую на эхо.