From 78d473f3e660e89c6635f635f345e7f1bddb6bd2 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Karl=20Erik=20=C3=95unapuu?= Date: Thu, 30 Jul 2020 13:10:13 +0300 Subject: [PATCH] Create tests for jobs triggered by registrant confirmations --- config/application.yml.sample | 1 + test/fixtures/files/legaldoc.pdf | Bin 0 -> 7613 bytes test/jobs/domain_delete_confirm_job_test.rb | 62 +++++++++++++++++--- test/jobs/domain_update_confirm_job_test.rb | 31 ++++++++++ 4 files changed, 86 insertions(+), 8 deletions(-) create mode 100644 test/fixtures/files/legaldoc.pdf diff --git a/config/application.yml.sample b/config/application.yml.sample index 691740b2a..8f71d75d8 100644 --- a/config/application.yml.sample +++ b/config/application.yml.sample @@ -166,6 +166,7 @@ test: lhv_keystore: 'test/fixtures/files/keystore.jks' lhv_keystore_password: 'testtest' lhv_keystore_alias: 'testtest' + legal_documents_dir: 'test/fixtures/files' # Airbrake // Errbit: airbrake_host: "https://your-errbit-host.ee" diff --git a/test/fixtures/files/legaldoc.pdf b/test/fixtures/files/legaldoc.pdf new file mode 100644 index 0000000000000000000000000000000000000000..1ddf7a0e8cd4188cf5af1650ae4745eecf5d1d61 GIT binary patch literal 7613 zcmaiZc|6oz`+t$8LAEH_##+{yF)Jqf64|n4XE4TC2D3zDDP)%=5h4^JiDWC1J+f!1 zEFpxfE%y9odhX}B@B4Q@-`Deby=Kli*XLT^=epkK^T%~0Otf_5Ao4JPM9YJgmo3#T zxc~(q80h2d0YIZc23P`)><)xdC8i)9ycZcu1nGET$XG3`i;pW-MFl`26R{X?KtQ(K z8yP^D2?s;JN@?x;^_K-}XQS2oXY$O@#Ot~J$1aNmQTVo`N!Py# z&rCi<9^WXvoqzEu!`vg2=IT3LvGDWsV%#KL6su&aLBP?OggOp!Rx7p&oxd{)Lob^XW`yQ$W?{+PIZGOaEJjaR!%YB4o-gT>;ZlIJ&byM^g<8B8k?9(k3 zYvwcOdN-6BUS}{KItm|LJ-E89+&~X#>YnEpnlSB*k~@-GC4@32=)dOPG8*3t<%_&? zxYo2a%`9+JSnT_w_77~K>{DUSkkPrW1c%Tyhvyq8kFJ=8x{oG zkc_zzr#^*b8-LnomGBjAN*yOMlcqiiuA^4_yPu2g2<$fUHyVw!=%6to@pK%3NvG2I zS1dx|ePS?FYQfabn{%#4A<>+wC-xvI9OxshKX9AX-}KqI zw0biA$_jp)?w93kAA3k8eNOl($s62#&CphL0kFbG`kT-w??9%SGnJC%ORv7a$rWK; z>8Cf^p2gwJ;?~d^DtDE4j&4Cde*uWN%osk-{JFmT`kJ@Um7(y|(9Crsa$daNLmdR}&NEWdY3LPAZXKYAZU^b7H z-cT}cG_OMOyb+Nqvq;M?I5%c$v6z(YU}3JsbIShiyANF#Qu1RRF3GiM-&OxvqM-kC zQe3J?d=9VY%*%iOdVP}Cj~~2x0%FTb{vR$k(NOk7ZmgAVd-T9#0>+SLJI` zPB5gN0JUGxfkHDM&a3HINW{Cjie|(l*~n|_>g^Dlk31Q#Am0wJ@>=5cUozP*DQ#JC zulV4VQ_^MOk@&9Js{gG)$xXN6PJ>vHGfHTYM9Un*RX(WZts2p8&`uf~A?>mW@{MxJ zn-24fk@adGmri*F)iC=DnaDikjj~ZMtEL$3;a{w#JlZvVCN8N;H=anI+e|pAU2s~z zNBAg%#S?3Zdj$UA$3|}{3X8Y3aD!Rq?UGSJ;sdf0y3Z<8E-@AI+Yw+8#Lg18<#1g` zL1u$`<+}p!iTCdd=P8f{0XnNuE??x)a0e?{b<*mCms zE{sfm>(T4@7$J4nlQVtnyn$uwBg-Al{1Q-$c;1Ks!&m;26c|)|0aQE}%OiN(n%E}6 zm6>-%Af=`BfFHn{ca)QR!Y0`x;yJ;Bpsr?F6|1P@`Snp=K!sBtucg7Ty!P<5Vtjo) zOjh?%caJ#?4u56MP;NYAx^m*m6D{4rk12rbA5xUY&*p_}4t~)X2z)67A{w*s$a}TR z%aFt;emPjI+Z+U}25Q#~7j_9feyU4kLRYPTHCg1Xtw{k^<&P;f6g_Xj<#B)a>km%9 z%YO3CFO~0&x8dE_jOIi7Lt04O-1&3vIyb&(sd;!bS;OxXPJ>;V`O**sv+ysHmKiDS z;CBr9V*UAVF6}cG1b#5;DKi^kJ*lnSQ)ZdfaVM}uTG2Hw)8*ZT0zL10&eQP7c-Ysz zc}t!AI@x?fQ2oQO&&fCPrC*GbePHKhyKNM#dY{{rH5|=KmNnoWOFAFf?^@CeSbqDt zM21f#p?b2_0p7-&iZ`{roN^`|79N&dZhF1?>9we~u2s6g`w}mMw4p-yEB8|iDh=34 zzEW_}vdyy(<^AbX+xI@NJ^uKp+|FIh+cT>~dc(u>Oj_q^;-$M^S8Wzl@a_JM6P^BUKgim`26o5(J{ z0R8#6WP?!P*nN(R;fK-s59X{S@rsPjou<$SYN?r0@JoSW50Qmm81<3PaVZ)%mRhWW z()Hb$9{Yb>zYzN@)Y&kzykGz7x~X2~p-JRx?~Yfy%C)82JeY_&;+>=M=ym*J;4T*- zbmCXNM7pfCb8*eP(UEtyUc8fT72XSVg4~a~>>KWMvl;XwL+CEA->VXwGW!ASRNRgY zUt8TSZ1>sxbXLQK;UwJS<|96sx$hjSzt!6I_9SkgzaTZ8Vl*+at)t98(wU}x)mGNw=sxQwP-gILk~Hv0LZJD44Ddk7ZNFP>dwjcej?AT znu_o1gPi+3t;M?f>cC+c`;f#l4$hz)X z2j#;iRm%;0y$^o~Uitg_?8l|Ov{k|0q z7S7U%Cmm&lKsmA_xXrdU35iH~;~2$@#H-)?rw5jYD%~TOR(Og5>cPpuL+yLAbr;>< z>B*SmCsr63k8kxN?5jKN0{29#jc2{3U_ zD8CBK*#ELQ-)aJ$HHW|7oz1y?EQ%PF>< z`)dhC<}Z|3`5VU<2mIiTy+*1l)AnO6{OboOLFqXS^paA8iWrn_Im%I8$zfr0ogwK1 z!wRBOOUA0Wtf`v0uT7NSKL-8%%|a*gtbB^&%EubxqE(kV1EaBcGxB@i{Fs!jda*<@&Qvg`i|19v zPvPocL-@*|dn_Cjg}_Y2)wXSYM{DOCqSkEV3}XO; zhaYnrcP4Gi4_If%W8jXF@V*FZ6ZwUOGnGw8wA&UX)6Y)4o!u#z#^bzqErD)?UDpj8 zm%%V{sY>H!$18`u*{I8}4!4K;;^X7dHMg>qA&JFzjftJIrsxe}?zM&=-Hxwz;%W~0 zNXEfa*Bfz~COKJbI^iN9;mtCM0W{s!d9;rM%m=mRl_PSmk3S176E{*Zw%bbq zzz%D=E|`E^MQ-Zw@#%>96rR#-3m*OWgl=#3sGL{X?B-jwzO;%=1Ez$nW2=l;xK>-% z9OM-}g@ksOuG2d%PT>^qHOxIP6E>tno(j+P|L)Yg+wbXf`13~(z4c^yKy;^yrFB`} zr<}T}aaWJ+Xl~P~-Uarz)>jXfS$q;F#*PmOk4T+wsacO>cQYjfM6Xg_7L|WW-wN43 zGr^!Y7NZ)r(|^oS(%SWuVmn_g?`oC-RM5j+K=uqYXOb$+5E~K3_|5882-`^BTY0t-%@fxyg|jiMmcP~+V=Oq6&A9VGBYa3C3g+R<7?V1D zCi}R=`1{4fo#J_UcVC3;3>1c9a{HD53$#~q25kzlNrEpIjXIrpg_U5N$K*Y+45ysq z?sqzW`-{+s6Mb_Z{wb%*yI|w+q5F2B=HWwmT8DQSalUJdhmT+1_0|3G%H5aO>p~6H zvzL)@|0e;fj9-=)AAxQ&d$Vk7ze+LDaulzJ^DePSwi2i4DxMTp>)7$deE-4JI)6d- zOpH{FiMZXpfospK?v2Gr+N5bctd;&+N?`wS%(QZ5=>lqy?+gFe%g!=0jcQ}U(J>Y? z)GFj{9dq^rj9QGoGaq%pO^Tn1oyA=dE!?K3*Z&#<84PmaaF*>q6?>KrB7U>k*`IRx z`4>~J>%JQ1%^`j(RWq5BlS!ba=tec!y!*c5oUJG%d%K2TXs2#NTWL{CZgT7sEvIw9 zCzf0>YG^Kk>C6`vG0#NScFk$EhqV%?HyPUG^zFVg&Ez$LD}$`3IgLu(7tJP-@?yPmV>!KwXOVn#IEM?Djsv^SoWctbu2qG zvT_-0kdlZ}f$)k8u&~#YFDeh}fj86j@#sO-lhM#cU*M-(Ln+&Sr3a5968FTC_ZII2 zia}V1a+xiAqF*4njP84AneT^;D@)4G@C)2;YqmREc*E>k1@mV9fj(UsYintEj25|g zq7mDD$3wgH7JIi@!kv|x8Hs8gdK*3GcU@|s%0JaIMtqWZ?h^7nEnd`0#_sqz`{qlU zNEtoHc~i>f>4r|nO3n;#n1oWqM{tg_UQxWv>cWY~61@Ygchp<+fKPy*!Po)l(^$E7NT75xay zyhe7pssaagBJKkZ25u{6P|nT>0We5dstHi&IyazfoF%^FADYYRw!lW$G998ghd-5{ znf(Rpv9)E(lSrOJy+*;hj`HptT!>R!lY@%n+l39wC1xLK*?%kjd?JC%-k_@uhUeva zYn!20c5w2RXTJ+*Y0rwSNIdv0VkPqS9CNd}Ty7R*6vBHwchPV~E-~j2v6nl^V=r4T zGEagRn4xWfRtUFR%5ISmX#h5HqPK$AQxxgLaW!1PUvkJUoK9kI7nxOxRotIHz&G@sr@f? zth7S*A1>uAJ!M`xQ7K($WLZ+q9h#~bIfu+&)P6s4yWg45>8wQOE*Nle`BJLz`ReJXpT$tNPAE6|7G2D<95tKGdB|T4Kr(0~dXri#aOMQ_%nJ6;{3dcS;I?8z4F?RW0^bm#9I>5^+jAz(Y zB*V|w%UrBT$VN}l;du*+TR_S~ZfO`e907fuoc|#?Rwf!1NBJ#E3w$%V)NZ@UT7JLi8>u-rJ1*kj za_)=3@6y72Q>wl9_|8Uk#DE*|XocPu?2bbEMkC2|yT-peVr$Y~a({ZF?#80M!ot=X zieX4uE2P8v-2Q5c8H%*HkS^~qGk5Vv+`aT{?PjSI_HI4--JaBEcQz(Yr5_aT)pW~~ zTVm}@qd5mIg?&_xg}(OY31eZ3(o@T}`Yaz}y3JPCFX!NEf4cF$L;qd*BqU%d(r`g^ zp*nZAZ$D|j$wE@gn0tfVv-qrN=gZ>sQ1;?&-`Hol9%vp#%J+9|X1l4NwBs{YJsF;| zN(gjek>e8ym#Zw<^W0kKX(h-tjq`c@A=<%_P(dHGN=UY_*n47IvL(h!@RFj%`O?O` z&7TDcx^*p}VvrxsF>qF*_m}f*+&F1U5_jvRUxaP4p@E4m(N{R^8DCU%c!zz)9NkRd z$e!1C>tBnS*yi+XtVWO7rkOyy@4g8pCbc~!q_;d{04AmmEI*E!Fh9795wTfyw0 zHOPWu5AK5GswlUI?|LduZ@$7h|C>02Yr5jpPHV5i^u~)b5fiuMxP^iqsE<)bAFPiT zwC+c5U+59L*3;s;XC%62&_`^qP~r4?0#1DY;L(fP#z!Bm`uzEyRyut4ZuTQ?azTW+ zyRuo6B42VXv{TBO8F6J#g+?j0^TTsjmXA-BmCjZS4LMXGm?d+v#oHcy8530(YQb98 zk>XuDAG$vs!t%5$ODd!4Tm}S<>I$mHcSxt|#*9APBSj!^rJv4-S=L33NB*#iy#9Q~ zDrWXksvS8|xejyot~Q{aWf@Q}*ZR);36w$#7-Y^V=PGsNFi0pgEL@Si_r?`j2GKUy zGdyLOD(NCN*lu|3*m?>uiX|o|J~?^dxjhe$w@dq*UIcvNxr4-u;X!$&Zoy^q76MQG zXqo>luFAe|UnU#+VMT^z%f!-2#T>-&tuTY@m}75AIxKl_xQ$!6!+DCM+?@oZrMZsV z@in7R_nntSPKxksXo)_#WI|t|)dtLxnc0ximX14epC2aN@$qCD7mweK&?sMZxuuiO z_2@Ee1d626-SI9j=@9LF^_&*{8fczwvKRks@r7A4q4#FT)>U5>BbNS4YnRrwr8RWn zFhzy`GXq)u|d z639RlQ~>~@g`zEJ1^|#I#`gjik8>x}>;ND$GS=G?NSo2TQ@i9?1t6^%Z3>|FmjB(I zM*X>gKbq&j+BTgx`-qv^%+o0lV!pIXT``JF#nB89Cb*xpp@4sE!2g|%RNM*dvf{RdSZ zR-Y6$7EkXa?FiI$*=eb`8SR?QOK&QY_;*rvlIB$<+j3hi4#ZoXDe@04?io}#10PQN z&y9?I(O=-#GY#(fFWgZ4GmHPB0mzKvOr~+doJhg`mTF)~SXwFmPd4C*B(kPEhDa;3 z0p^c63IMu{cO|=%Y!Ose{I8$=zpDKw2Z1z-ngT%PJ{AN#?Q#T2EBW6z00I9AUx!M% zf4qnM9T_lDxcLAfw1QL5pq>`c7Kqk>Dk62j zFc=gHr6wJv1A|h_se@9~)YMRisB42&0RLNs##}8Q7fpApizkWV4Fth8sj#S(K_b;* r8tN!GN)xH2rKo|>M8FW*5Df^8ej3^A*-$ie literal 0 HcmV?d00001 diff --git a/test/jobs/domain_delete_confirm_job_test.rb b/test/jobs/domain_delete_confirm_job_test.rb index 51af58c24..b999bd3c7 100644 --- a/test/jobs/domain_delete_confirm_job_test.rb +++ b/test/jobs/domain_delete_confirm_job_test.rb @@ -1,17 +1,11 @@ require "test_helper" class DomainDeleteConfirmJobTest < ActiveSupport::TestCase - def setup - super - + setup do + @legal_doc_path = 'test/fixtures/files/legaldoc.pdf' @domain = domains(:shop) @new_registrant = contacts(:william) @user = users(:api_bestnames) - - @domain.update!(pending_json: { new_registrant_id: @new_registrant.id, - new_registrant_name: @new_registrant.name, - new_registrant_email: @new_registrant.email, - current_user_id: @user.id }) end def teardown @@ -19,6 +13,11 @@ class DomainDeleteConfirmJobTest < ActiveSupport::TestCase end def test_rejected_registrant_verification_notifies_registrar + @domain.update!(pending_json: { new_registrant_id: @new_registrant.id, + new_registrant_name: @new_registrant.name, + new_registrant_email: @new_registrant.email, + current_user_id: @user.id }) + DomainDeleteConfirmJob.enqueue(@domain.id, RegistrantVerification::REJECTED) last_registrar_notification = @domain.registrar.notifications.last @@ -27,10 +26,57 @@ class DomainDeleteConfirmJobTest < ActiveSupport::TestCase end def test_accepted_registrant_verification_notifies_registrar + @domain.update!(pending_json: { new_registrant_id: @new_registrant.id, + new_registrant_name: @new_registrant.name, + new_registrant_email: @new_registrant.email, + current_user_id: @user.id }) + DomainDeleteConfirmJob.enqueue(@domain.id, RegistrantVerification::CONFIRMED) last_registrar_notification = @domain.registrar.notifications.last assert_equal(last_registrar_notification.attached_obj_id, @domain.id) assert_equal(last_registrar_notification.text, 'Registrant confirmed domain deletion: shop.test') end + + def test_marks_domain_as_pending_delete_after_acceptance + epp_xml = "\n\n \n \n" \ + " \n #{@domain.name}\n \n \n \n" \ + " \n #{@legal_doc_path}\n" \ + " \n \n 20alla-1594212240\n \n\n" + + @domain.registrant_verification_asked!(epp_xml, @user.id) + @domain.pending_delete! + @domain.reload + + assert @domain.registrant_delete_confirmable?(@domain.registrant_verification_token) + assert_equal @user.id, @domain.pending_json['current_user_id'] + + DomainDeleteConfirmJob.enqueue(@domain.id, RegistrantVerification::CONFIRMED) + @domain.reload + + assert @domain.statuses.include? DomainStatus::PENDING_DELETE + assert @domain.statuses.include? DomainStatus::SERVER_HOLD + assert_not @domain.statuses.include? DomainStatus::PENDING_DELETE_CONFIRMATION + end + + def test_clears_pending_flags_after_delete_denial + epp_xml = "\n\n \n \n" \ + " \n #{@domain.name}\n \n \n \n" \ + " \n #{@legal_doc_path}\n" \ + " \n \n 20alla-1594212240\n \n\n" + + @domain.registrant_verification_asked!(epp_xml, @user.id) + @domain.pending_delete! + @domain.reload + + assert @domain.registrant_delete_confirmable?(@domain.registrant_verification_token) + assert_equal @user.id, @domain.pending_json['current_user_id'] + + DomainDeleteConfirmJob.enqueue(@domain.id, RegistrantVerification::REJECTED) + @domain.reload + + assert_equal ['ok'], @domain.statuses + assert_not @domain.statuses.include? DomainStatus::PENDING_DELETE_CONFIRMATION + assert_not @domain.statuses.include? DomainStatus::PENDING_DELETE + end end diff --git a/test/jobs/domain_update_confirm_job_test.rb b/test/jobs/domain_update_confirm_job_test.rb index 070b5d5f7..59bbf758d 100644 --- a/test/jobs/domain_update_confirm_job_test.rb +++ b/test/jobs/domain_update_confirm_job_test.rb @@ -7,6 +7,7 @@ class DomainUpdateConfirmJobTest < ActiveSupport::TestCase @domain = domains(:shop) @new_registrant = contacts(:william) @user = users(:api_bestnames) + @legal_doc_path = 'test/fixtures/files/legaldoc.pdf' @domain.update!(pending_json: { new_registrant_id: @new_registrant.id, new_registrant_name: @new_registrant.name, @@ -33,4 +34,34 @@ class DomainUpdateConfirmJobTest < ActiveSupport::TestCase assert_equal(last_registrar_notification.attached_obj_id, @domain.id) assert_equal(last_registrar_notification.text, 'Registrant confirmed domain update: shop.test') end + + def test_changes_domain_registrant_after_approval + epp_xml = "\n\n \n \n \n #{@domain.name}\n" \ + " \n #{@new_registrant.code}\n \n \n \n \n \n" \ + " \n #{@legal_doc_path}\n \n" \ + " \n 20alla-1594199756\n \n\n" + @domain.pending_json['frame'] = epp_xml + @domain.update(pending_json: @domain.pending_json) + + @domain.reload + DomainUpdateConfirmJob.enqueue(@domain.id, RegistrantVerification::CONFIRMED) + @domain.reload + + assert_equal @domain.registrant.code, @new_registrant.code + end + + def test_clears_pending_update_after_denial + epp_xml = "\n\n \n \n \n #{@domain.name}\n" \ + " \n #{@new_registrant.code}\n \n \n \n \n \n" \ + " \n #{@legal_doc_path}\n \n" \ + " \n 20alla-1594199756\n \n\n" + @domain.pending_json['frame'] = epp_xml + @domain.update(pending_json: @domain.pending_json) + + DomainUpdateConfirmJob.enqueue(@domain.id, RegistrantVerification::REJECTED) + @domain.reload + + assert_not @domain.statuses.include? DomainStatus::PENDING_DELETE_CONFIRMATION + assert_not @domain.statuses.include? DomainStatus::PENDING_DELETE + end end