a
    %@c%                      @   sj   d dl mZ d dlmZ d dlmZ d dlmZ d dlmZ d dlZd dlZd dlZG dd dej	Z
dS )	    )unicode_literals)Calendar)Event)
Parameters)vCalAddressNc                   @   sL   e Zd Zdd Zdd Zdd Zdd Zd	d
 Zdd Zdd Z	dd Z
dS )TestPropertyParamsc                 C   sf   t d}d|jd< t }|d| t|}d}| || t|}| |djdd d S )Nmailto:john.doe@example.orgz	Doe, JohnCNZ	organizersV   BEGIN:VCALENDAR
ORGANIZER;CN="Doe, John":mailto:john.doe@example.org
END:VCALENDAR
	ORGANIZER)r   paramsr   addto_icalassertEqual	from_icalget)selfcal_addressZicalZical_strZexp_strZical2 r   g/var/www/dev/btcams2022/python_venv/lib/python3.9/site-packages/icalendar/tests/test_property_params.pytest_property_params   s    


z'TestPropertyParams.test_property_paramsc                 C   sP   t d}d|jd< t }||d< | | dd | |d jd d d S )Nr   u   Джон Доуr	   r
   utf-8uV   BEGIN:VEVENT
ORGANIZER;CN="Джон Доу":mailto:john.doe@example.org
END:VEVENT
)r   r   r   r   r   decode)r   r   veventr   r   r   test_unicode_param$   s    
z%TestPropertyParams.test_unicode_paramc                 C   s@   |  dd |  dd |  dd |  dd |  dd d S )	NZAramiszAramis Alamedaz"Aramis Alameda"zAramis d'Alamedaz"Aramis d'Alameda"zAramis d"Alamedau   Арамис д'Аламедаu    "Арамис д'Аламеда")_test_quoting)r   r   r   r   test_quoting3   s
    zTestPropertyParams.test_quotingc                 C   sF   t  }td}||jd< |d| | | d|d d  dS )z
        @param cn_param: CN parameter value to test for quoting
        @param cn_quoted: expected quoted parameter in icalendar format
        ztest@mail.comr	   ZATTENDEEs   BEGIN:VEVENT
ATTENDEE;CN=r   s   :test@mail.com
END:VEVENT
N)r   r   r   r   r   r   encode)r   Zcn_paramZ	cn_quotedr   attendeer   r   r   r   >   s    
z TestPropertyParams._test_quotingc                 C   s   d}|D ]8}d| }d| }t d| }| |d jd | qt d}| |d jd d | |d  d	d
 d S )Nz,\;:zSociety\%s 2014zSociety%s 2014z0BEGIN:VEVENT
ORGANIZER;CN=%s:that
END:VEVENT
r
   r	   uj   BEGIN:VEVENT
ORGANIZER;CN=that\, that\; %th%%at%\\ that\::это\, то\; that\\ %th%%at%\:
END:VEVENT
zthat, that; %th%%at%\ that:r   u   это, то; that\ %th%%at%:)r   r   r   r   r   r   )r   ZNON_SAFE_CHARScharZ
cn_escapedZ
cn_decodedr   r   r   r   test_escapingM   s*    z TestPropertyParams.test_escapingc                 C   sp  t dd}| | d | t| dg | |d d | |d d t dddgi}| | d t dd	d
}| | d t ddi}| | d t dddgi}| | d t dddgddgd}| | d | t dt ddd | t dt ddi | t dt dddgi | t dt dddgddgd  d S )!NValue1
parameter1s   PARAMETER1=Value1
PARAMETER1r"   ZValue2s   PARAMETER1=Value1,Value2TRUEzREQ-PARTICIPANT)ZRSVPZROLEs   ROLE=REQ-PARTICIPANT;RSVP=TRUEALTREPzhttp://www.wiz.orgs   ALTREP="http://www.wiz.org"ZMEMBERzMAILTO:projectA@host.comzMAILTO:projectB@host.coms<   MEMBER="MAILTO:projectA@host.com","MAILTO:projectB@host.com"ZValue3Zvalue4)r"   Z
parameter2r%   sM   ALTREP="http://www.wiz.org",value4;PARAMETER1=Value1;PARAMETER2=Value2,Value3z!PARAMETER1=Value 1;param2=Value 2zValue 1zValue 2)r#   ZPARAM2zparam=ZPARAM z<MEMBER="MAILTO:projectA@host.com","MAILTO:projectB@host.com"zMALTREP="http://www.wiz.org",value4;PARAMETER1=Value1;PARAMETER2=Value2,Value3)r#   r%   Z
PARAMETER2)r   r   r   listkeysr   )r   pr   r   r   test_parameters_classi   s`    

	z(TestPropertyParams.test_parameters_classc                 C   sz   d}t j|}|dd }|d d  | |d d  d | |d d j d | |d d jd d d	S )
zParse an ics string and access some property parameters then.
        This is a follow-up of a question recieved per email.

        a  BEGIN:VCALENDAR
VERSION:2.0
PRODID://RESEARCH IN MOTION//BIS 3.0
METHOD:REQUEST
BEGIN:VEVENT
SEQUENCE:2
X-RIM-REVISION:0
SUMMARY:Test meeting from BB
X-MICROSOFT-CDO-ALLDAYEVENT:TRUE
CLASS:PUBLIC
ATTENDEE;PARTSTAT=NEEDS-ACTION;RSVP=TRUE;CN="RembrandXS":MAILTO:rembrand@xs4all.nl
ATTENDEE;PARTSTAT=NEEDS-ACTION;RSVP=TRUE;CN="RembrandDX":MAILTO:rembrand@daxlab.com
ATTENDEE;PARTSTAT=NEEDS-ACTION;RSVP=TRUE;CN="RembrandSB":MAILTO:rembspam@xs4all.nl
UID:XRIMCAL-628059586-522954492-9750559
DTSTART;VALUE=DATE:20120814
DTEND;VALUE=DATE:20120815
DESCRIPTION:Test meeting from BB
DTSTAMP:20120813T151458Z
ORGANIZER:mailto:rembrand@daxlab.com
END:VEVENT
END:VCALENDARZVEVENTr   r   s   MAILTO:rembrand@xs4all.nls-   CN=RembrandXS;PARTSTAT=NEEDS-ACTION;RSVP=TRUEZcnZ
RembrandXSN)	icalendarr   r   walkr   r   r   )r   Zicscaleventr   r   r   %test_parse_and_access_property_params   s    z8TestPropertyParams.test_parse_and_access_property_paramsc                 C   s$   t dd}| tdt| dS )z+Test correct class representation.
        r    r!   z*Parameters\({u?'PARAMETER1': u?'Value1'}\)N)r   
assertTruerematchstr)r   itr   r   r   	test_repr   s    
zTestPropertyParams.test_reprN)__name__
__module____qualname__r   r   r   r   r   r*   r/   r5   r   r   r   r   r      s   G$r   )
__future__r   r+   r   r   r   r   Zunittestr1   ZTestCaser   r   r   r   r   <module>   s   