# frozen_string_literal: true require 'test_helper' module Api module V1 class ContactControllerTest < ActionDispatch::IntegrationTest setup do @rol = create :rol @site = @rol.site @usuarie = @rol.usuarie end teardown do @site&.destroy end test 'el sitio tiene que existir' do @site.destroy post v1_site_contact_url(site_id: @site.hostname), params: { name: SecureRandom.hex, pronouns: SecureRandom.hex, contact: SecureRandom.hex, from: "#{SecureRandom.hex}@sutty.nl", body: SecureRandom.hex, gdpr: true } assert_response :unprocessable_entity, response.status assert_equal 'site_exists', response.body end test 'hay que enviar desde el sitio principal' do post v1_site_contact_url(site_id: @site.hostname), params: { name: SecureRandom.hex, pronouns: SecureRandom.hex, contact: SecureRandom.hex, from: "#{SecureRandom.hex}@sutty.nl", body: SecureRandom.hex, gdpr: true } assert_response :unprocessable_entity, response.status assert_equal 'site_is_origin', response.body end test 'hay que dar consentimiento' do post v1_site_contact_url(site_id: @site.hostname), headers: { Origin: @site.url }, params: { name: SecureRandom.hex, pronouns: SecureRandom.hex, contact: SecureRandom.hex, from: "#{SecureRandom.hex}@sutty.nl", body: SecureRandom.hex } assert_response :unprocessable_entity, response.status assert_equal 'gave_consent', response.body end test 'enviar un mensaje genera correos' do ActionMailer::Base.deliveries.clear redirect = "#{@site.url}/?thanks" 10.times do create :rol, site: @site end post v1_site_contact_url(site_id: @site.hostname), headers: { Origin: @site.url }, params: { name: SecureRandom.hex, pronouns: SecureRandom.hex, contact: SecureRandom.hex, from: "#{SecureRandom.hex}@sutty.nl", body: SecureRandom.hex, gdpr: true, redirect: redirect } assert_equal redirect, response.headers['Location'] assert_equal 2, ActionMailer::Base.deliveries.size end test 'se puede enviar mensajes a dominios propios' do ActionMailer::Base.deliveries.clear @site.update name: 'example.org.' redirect = "#{@site.url}?thanks" 10.times do create :rol, site: @site end post v1_site_contact_url(site_id: @site.hostname), headers: { Origin: @site.url }, params: { name: SecureRandom.hex, pronouns: SecureRandom.hex, contact: SecureRandom.hex, from: "#{SecureRandom.hex}@sutty.nl", body: SecureRandom.hex, gdpr: true, redirect: redirect } assert_equal redirect, response.headers['Location'] assert_equal 2, ActionMailer::Base.deliveries.size end end end end