1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889 |
- # Copyright (C) 2012-2024 Zammad Foundation, https://zammad-foundation.org/
- require 'rails_helper'
- RSpec.describe 'iCal endpoints', type: :request do
- context 'with no existing session' do
- it 'gives HTTP Basic auth prompt (#3064)' do
- get '/ical/tickets'
- expect(response.body).to eq("HTTP Basic: Access denied.\n")
- end
- end
- describe 'time zone', authenticated_as: :user do
- let(:group) { create(:group) }
- let(:user) { create(:agent) }
- before do
- user.groups << group
- create(:ticket, group: group, owner: user, state_name: 'open', pending_time: 1.day.ago)
- end
- it 'returns zero offset time if no time zone set' do
- get '/ical/tickets'
- expect(response.body).to match %r{DTSTART:\d{8}T0{6}Z}
- end
- it 'returns selected time zone' do
- Setting.set 'timezone_default', 'Europe/Vilnius'
- get '/ical/tickets'
- expect(response.body).to match %r{DTSTART;TZID=Europe/Vilnius:\d{8}T0{6}}
- end
- end
- # https://github.com/zammad/zammad/issues/3962
- context 'with request method PROPFIND', authenticated_as: :user do
- let(:user) { create(:agent) }
- it 'contains correct request method' do
- get '/ical/tickets', headers: { 'REQUEST_METHOD' => 'PROPFIND' }
- expect(response.request.request_method).to eq('PROPFIND')
- end
- it 'returns the desired calendar file' do
- get '/ical/tickets', headers: { 'REQUEST_METHOD' => 'PROPFIND' }
- expect(response.body).to match(%r{BEGIN:VCALENDAR})
- end
- end
- describe 'methods', authenticated_as: :user do
- let(:group) { create(:group) }
- let(:user) { create(:agent) }
- let(:ticket_1) { create(:ticket, title: SecureRandom.uuid, group: group, owner: user, state_name: 'open') }
- let(:ticket_2) { create(:ticket, title: SecureRandom.uuid, group: group, owner: user, state_name: 'pending reminder', pending_time: 1.day.from_now) }
- before do
- user.groups << group
- ticket_1
- ticket_2
- end
- it 'returns open tickets', :aggregate_failures do
- get '/ical/tickets/new_open'
- expect(response.body).to include(ticket_1.title)
- expect(response.body).not_to include(ticket_2.title)
- end
- it 'returns pending tickets', :aggregate_failures do
- get '/ical/tickets/pending'
- expect(response.body).not_to include(ticket_1.title)
- expect(response.body).to include(ticket_2.title)
- end
- it 'raises error on unknown method', :aggregate_failures do
- get '/ical/tickets/xxx'
- expect(json_response['error']).to eq('An unknown method name was requested.')
- expect(response).to have_http_status(:unprocessable_entity)
- end
- end
- end
|