{"id":54167,"date":"2019-12-19T00:00:00","date_gmt":"2019-12-18T21:00:00","guid":{"rendered":"https:\/\/prohoster.info\/blog\/blog_prohoster\/testmace-bystryj-start"},"modified":"2020-02-18T14:02:08","modified_gmt":"2020-02-18T11:02:08","slug":"testmace-bystryj-start","status":"publish","type":"post","link":"https:\/\/prohoster.info\/sq\/blog\/novosti-interneta\/testmace-bystryj-start","title":{"rendered":"TestMace. Fillim i shpejt\u00eb","gt_translate_keys":[{"key":"rendered","format":"text"}]},"content":{"rendered":"<p><img decoding=\"async\" alt=\"TestMace. Fillim i shpejt\u00eb\" src=\"\/wp-content\/uploads\/2019\/12\/ca19545f1cc06814a69a6a3e6d9f3a5a.jpg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>P\u00ebrsh\u00ebndetje t\u00eb gjith\u00ebve. Ne po dalim ngadal\u00eb nga hije dhe vazhdojm\u00eb serin\u00eb e artikujve rreth produktit ton\u00eb. Pas <noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/post\/458372\/\">t\u00eb kaluar\u00ebn<\/a><\/noindex> artikullit p\u00ebrmbledh\u00ebs mor\u00ebm shum\u00eb komente (kryesisht pozitive), propozime dhe raportime p\u00ebr defekte. Sot do t\u00eb tregojm\u00eb <noindex><a rel=\"nofollow\" href=\"https:\/\/client.testmace.com\">TestMace<\/a><\/noindex> n\u00eb praktik\u00eb dhe ju do t\u00eb mund t\u00eb vler\u00ebsoni disa karakteristika t\u00eb aplikacionit ton\u00eb. P\u00ebr nj\u00eb imazh m\u00eb t\u00eb plot\u00eb, ju rekomandojm\u00eb t\u00eb konsultoheni me dokumentacionin ton\u00eb n\u00eb adres\u00ebn <noindex><a rel=\"nofollow\" href=\"http:\/\/docs-ru.testmace.com\">http:\/\/docs-ru.testmace.com<\/a><\/noindex>. Pra, le t\u00eb nisim! <\/p>\n<p><noindex><a rel=\"nofollow\" name=\"habracut\"><\/a><\/noindex><\/p>\n<h1 id=\"ustanovka\">Instalimi<\/h1>\n<p><\/p>\n<p>T\u00eb fillojm\u00eb me t\u00eb zakonshmet. Aplikacioni \u00ebsht\u00eb i disponuesh\u00ebm dhe me t\u00eb v\u00ebrtet\u00eb testi b\u00ebhet n\u00eb tri platforma \u2014 Linux, Windows, MacOS. Ju mund t\u00eb shkarkoni instaluesin p\u00ebr sistemin operativ t\u00eb interesit nga <noindex><a rel=\"nofollow\" href=\"https:\/\/client.testmace.com\">websajti yn\u00eb<\/a><\/noindex>. P\u00ebr p\u00ebrdoruesit e Linux-it ka mund\u00ebsin\u00eb e instalimit t\u00eb <noindex><a rel=\"nofollow\" href=\"https:\/\/snapcraft.io\/testmace\">paket\u00ebs snap<\/a><\/noindex>. Shpresojm\u00eb t\u00eb arrijm\u00eb s\u00eb shpejti t\u00eb jemi t\u00eb pranish\u00ebm edhe n\u00eb Microsoft Store dhe App Store (por a \u00ebsht\u00eb e nevojshme? \u00c7far\u00eb mendoni?).<\/p>\n<p><\/p>\n<h1 id=\"podopytnyy-scenariy\">Scenari i eksperimentit<\/h1>\n<p><\/p>\n<p>Kemi zgjedhur skenarin e m\u00ebposht\u00ebm si subjekt:<\/p>\n<p><\/p>\n<ul>\n<li>do t\u00eb hyjm\u00eb: p\u00ebrdoruesi \u2014 admin, fjal\u00ebkalimi \u2014 password<\/li>\n<li>do t\u00eb shtojm\u00eb nj\u00eb regjistrim t\u00eb ri<\/li>\n<li>do t\u00eb verifikojm\u00eb shtimin e sakt\u00eb t\u00eb regjistrimit<\/li>\n<\/ul>\n<p><\/p>\n<p>Do ta testojm\u00eb n\u00eb <noindex><a rel=\"nofollow\" href=\"https:\/\/testmace-quick-start.herokuapp.com\/\">https:\/\/testmace-quick-start.herokuapp.com\/<\/a><\/noindex>. Ky \u00ebsht\u00eb nj\u00eb <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/typicode\/json-server\">json-server<\/a><\/noindex>, i p\u00ebrsosur p\u00ebr testimin e aplikacioneve t\u00eb tilla. Ne vet\u00ebm kemi shtuar autentifikimin me token n\u00eb t\u00eb gjitha ruterat e json-server dhe kemi krijuar metod\u00ebn e login p\u00ebr t\u00eb marr\u00eb k\u00ebt\u00eb token. Do t\u00eb ecim hap pas hapi, duke p\u00ebrmir\u00ebsuar gradualisht projektin ton\u00eb.<\/p>\n<p><\/p>\n<h2 id=\"sozdanie-proekta-i-popytka-sozdat-suschnost-bez-avtorizacii\">Krijimi i projektit dhe p\u00ebrpjekja p\u00ebr t\u00eb krijuar nj\u00eb entitet pa autorizim<\/h2>\n<p><\/p>\n<p>S\u00eb pari, le t\u00eb krijojm\u00eb nj\u00eb projekt t\u00eb ri (<strong>File<\/strong>-&gt;<strong>New project<\/strong>). N\u00ebse po e ndizni aplikacionin p\u00ebr her\u00eb t\u00eb par\u00eb, projekti i ri do t\u00eb hapet automatikisht. Le t\u00eb fillojm\u00eb me nj\u00eb k\u00ebrkes\u00eb p\u00ebr t\u00eb krijuar nj\u00eb regjistrim t\u00eb ri (ndoshta krijimi i regjistrimeve \u00ebsht\u00eb i disponuesh\u00ebm pa autorizim). Zgjidhni n\u00eb menun\u00eb kontekstuale Project pik\u00ebt <strong>Add node<\/strong> -&gt; <strong>RequestStep<\/strong>. Si em\u00ebr t\u00eb nodit do t\u00eb caktojm\u00eb <strong>create-post<\/strong>. Si rezultat, n\u00eb pem\u00eb do t\u00eb krijohet nj\u00eb nod i ri dhe do t\u00eb hapet skeda e k\u00ebtij nodi. Le t\u00eb caktojm\u00eb parametrat e m\u00ebposht\u00ebm t\u00eb k\u00ebrkes\u00ebs:<\/p>\n<p><\/p>\n<ul>\n<li>Lloji i k\u00ebrkes\u00ebs: POST<\/li>\n<li>url: <noindex><a rel=\"nofollow\" href=\"https:\/\/testmace-quick-start.herokuapp.com\/posts\">https:\/\/testmace-quick-start.herokuapp.com\/posts<\/a><\/noindex><\/li>\n<li>Trupi i k\u00ebrkes\u00ebs: json me vler\u00ebn <code>{\"title\": \"New testmace quick start post\"}<\/code><br \/>\nN\u00ebse e keni b\u00ebr\u00eb gjith\u00e7ka si\u00e7 duhet, nd\u00ebrfaqja do t\u00eb duket si\u00e7vijon:<\/li>\n<\/ul>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"TestMace. Fillim i shpejt\u00eb\" src=\"\/wp-content\/uploads\/2019\/12\/a5c81dc4977dd73a4975643bf8ced3da.jpg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Megjithat\u00eb, n\u00ebse p\u00ebrpiqemi t\u00eb realizojm\u00eb k\u00ebrkes\u00ebn, serveri do t\u00eb kthej\u00eb kodin 401 dhe pa autorizim, nuk do t\u00eb kemi mund\u00ebsi t\u00eb punojm\u00eb n\u00eb k\u00ebt\u00eb server. \u00c7far\u00eb do t\u00eb thoshim, e pritur).<\/p>\n<p><\/p>\n<h2 id=\"dobavlyaem-zapros-na-avtorizaciyu\">Shtoni k\u00ebrkes\u00ebn p\u00ebr autorizim<\/h2>\n<p><\/p>\n<p>Si\u00e7 u tha m\u00eb par\u00eb, ne kemi POST endpoint <code>\/login<\/code>, i cili pranon si trup t\u00eb k\u00ebrkes\u00ebs json t\u00eb k\u00ebtij lloji: <code>{\"username\": \"&lt;username&gt;\", \"password\": \"&lt;password&gt;\"}<\/code>, ku <code>username<\/code> dhe <code>password<\/code> (po ashtu, nga hyrja e m\u00ebsip\u00ebrme) kan\u00eb vlera <code>admin<\/code> dhe <code>password<\/code> p\u00ebrkat\u00ebsisht. N\u00eb p\u00ebrgjigje, ky endpoint kthen json t\u00eb k\u00ebtij lloji <code>{\"token\": \"&lt;token&gt;}\".<\/code>Ne do ta p\u00ebrdorim p\u00ebr autorizim. Le t\u00eb krijojm\u00eb <strong>RequestStep<\/strong> nj\u00eb nod me emrin <strong>ky\u00e7ni<\/strong>, si prind do t\u00eb sh\u00ebrbej\u00eb <strong>Project<\/strong> nodi. Me an\u00eb t\u00eb drag-and-drop, l\u00ebvizni k\u00ebt\u00eb nod n\u00eb pem\u00eb lart se nodi <strong>create-post<\/strong>. Le t\u00eb caktojm\u00eb parametrat e m\u00ebposht\u00ebm p\u00ebr k\u00ebrkes\u00ebn e sapokrijuar:<\/p>\n<p><\/p>\n<ul>\n<li>Lloji i k\u00ebrkes\u00ebs: POST<\/li>\n<li>url: <noindex><a rel=\"nofollow\" href=\"https:\/\/testmace-quick-start.herokuapp.com\/login\">https:\/\/testmace-quick-start.herokuapp.com\/login<\/a><\/noindex><\/li>\n<li>Trupi i k\u00ebrkes\u00ebs: json me vler\u00ebn <code>{\"username\": \"admin\", \"password\": \"password\"}<\/code><\/li>\n<\/ul>\n<p><\/p>\n<p>Do ta realizojm\u00eb k\u00ebrkes\u00ebn dhe do t\u00eb marrim nj\u00eb kod dyqind me tokenin n\u00eb p\u00ebrgjigje. K\u00ebshtu:<\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"TestMace. Fillim i shpejt\u00eb\" src=\"\/wp-content\/uploads\/2019\/12\/222b2a0b965b4c1135b5b62c0b7424ba.jpg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<h2 id=\"refaktoring-ubiraem-dublirovanie-domena\">Rr\u00ebfimi: heqja e dublikimeve t\u00eb domenit<\/h2>\n<p><\/p>\n<p>Derisa k\u00ebrkesat nuk lidhen n\u00eb nj\u00eb skenar t\u00eb vet\u00ebm. Por kjo nuk \u00ebsht\u00eb e vetmja e met\u00eb. N\u00ebse shikoni me kujdes, do t\u00eb vini re se t\u00eb pakt\u00ebn domeni \u00ebsht\u00eb i dublikuar n\u00eb t\u00eb dyja k\u00ebrkesat. E keqe. \u00cbsht\u00eb koha p\u00ebr t\u00eb rifaktorizuar k\u00ebt\u00eb pjes\u00eb t\u00eb skenarit t\u00eb ardhsh\u00ebm dhe ne do t\u00eb ndihmojm\u00eb me k\u00ebt\u00eb variablat.<\/p>\n<p><\/p>\n<p>N\u00eb nj\u00eb kuptim t\u00eb par\u00eb, variablat kan\u00eb t\u00eb nj\u00ebjtin funksion si n\u00eb instrumente dhe gjuh\u00eb t\u00eb tjera programuese \u2014 eliminimin e dublimeve, rritjen e lexueshm\u00ebris\u00eb, etj. M\u00eb shum\u00eb p\u00ebr variablat mund t\u00eb lexoni n\u00eb <noindex><a rel=\"nofollow\" href=\"https:\/\/docs-ru.testmace.com\/variables\/user-variables\">dokumentacionin ton\u00eb<\/a><\/noindex>. N\u00eb k\u00ebt\u00eb rast na nevojiten variablat e p\u00ebrdoruesve. <\/p>\n<p><\/p>\n<p>Le t\u00eb p\u00ebrcaktojm\u00eb n\u00eb nivelin e nodit t\u00eb Projektit variabl\u00ebn <code>domain<\/code> me vler\u00eb <code>https:\/\/testmace-quick-start.herokuapp.com<\/code>. P\u00ebr k\u00ebt\u00eb \u00ebsht\u00eb e nevojshme<\/p>\n<p><\/p>\n<ul>\n<li>T\u00eb hapim sked\u00ebn e k\u00ebtij nodi dhe t\u00eb klikojm\u00eb n\u00eb ikon\u00ebn e kalkulatorit n\u00eb t\u00eb djathte lart<\/li>\n<li>T\u00eb klikojm\u00eb n\u00eb <strong>+ ADD VARIABLE<\/strong><\/li>\n<li>T\u00eb shkruajm\u00eb emrin dhe vler\u00ebn e variabl\u00ebs<br \/>\nN\u00eb rastin ton\u00eb, dialogu me variabl\u00ebn e shtuar do t\u00eb duket si m\u00eb posht\u00eb:<\/li>\n<\/ul>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"TestMace. Fillim i shpejt\u00eb\" src=\"\/wp-content\/uploads\/2019\/12\/071ac6dca2c5a49b78b11719fae5f650.jpg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Mir\u00eb. Tani, p\u00ebr shkak t\u00eb trash\u00ebgimis\u00eb, ne mund ta p\u00ebrdorim k\u00ebt\u00eb variab\u00ebl n\u00eb pasardh\u00ebsit e \u00e7do niveli t\u00eb thell\u00ebsis\u00eb. N\u00eb rastin ton\u00eb, k\u00ebto jan\u00eb nodet <strong>ky\u00e7ni<\/strong> dhe <strong>create-post<\/strong>. P\u00ebr t\u00eb p\u00ebrdorur variabl\u00ebn n\u00eb fush\u00ebn e tekstit, duhet t\u00eb shkruajm\u00eb <code>${&lt;variable_name&gt;}<\/code>. P.sh., url p\u00ebr login shnd\u00ebrrohet n\u00eb <code>${domain}\/login<\/code>, p\u00ebrkat\u00ebsisht p\u00ebr <strong>create-post<\/strong> nodi url do t\u00eb duket si <code>${domain}\/posts<\/code>.<\/p>\n<p><\/p>\n<p>N\u00eb k\u00ebt\u00eb m\u00ebnyr\u00eb, duke u udh\u00ebhequr nga principi DRY, p\u00ebrmir\u00ebsuam pak skenarin.<\/p>\n<p><\/p>\n<h2 id=\"sohranyaem-token-v-peremennuyu\">Ruajm\u00eb tokenin n\u00eb variab\u00ebl<\/h2>\n<p><\/p>\n<p>Pasi po flasim p\u00ebr variablat, le t\u00eb zgjerojm\u00eb pak k\u00ebt\u00eb tem\u00eb. Deri n\u00eb k\u00ebt\u00eb moment, n\u00eb rastin e login-it t\u00eb suksessh\u00ebm, ne marrim nga serveri nj\u00eb token autentikimi, t\u00eb cilin do ta kemi nevoj\u00eb p\u00ebr k\u00ebrkesat e ardhshme. Le t\u00eb ruajm\u00eb k\u00ebt\u00eb token n\u00eb nj\u00eb variab\u00ebl. Duke qen\u00eb se vlera e variabl\u00ebs do t\u00eb p\u00ebrcaktohet gjat\u00eb ekzekutimit t\u00eb skenarit, do t\u00eb p\u00ebrdorim p\u00ebr k\u00ebt\u00eb nj\u00eb mekaniz\u00ebm t\u00eb ve\u00e7ant\u00eb \u2014 <noindex><a rel=\"nofollow\" href=\"https:\/\/docs-ru.testmace.com\/variables\/user-variables\/dynamic-variables\">variablat dinamike<\/a><\/noindex>.<\/p>\n<p><\/p>\n<p>S\u00eb pari, do t\u00eb realizojm\u00eb k\u00ebrkes\u00ebn p\u00ebr login. N\u00eb sked\u00ebn <strong>Parsed<\/strong> p\u00ebr t\u00eb marr\u00eb p\u00ebrgjigjen, vendosni kursorin mbi token dhe n\u00eb menun\u00eb e kontekstit (e cila thirret me t\u00eb djatht\u00ebn ose duke klikuar n\u00eb butonin &#8230;) zgjidhni opsionin <strong>\u00ebsht\u00eb ideal. Le t\u00eb shqyrtojm\u00eb s\u00eb bashku se si funksionon. N\u00eb sked\u00ebn e p\u00ebrgjigjes t\u00eb nyj\u00ebs id n\u00eb menun\u00eb e kontekstit, duhet t\u00eb zgjidhni opsionin<\/strong>. Nj\u00eb dialog do t\u00eb shfaqet me fushat e m\u00ebposhtme:<\/p>\n<p><\/p>\n<ul>\n<li><strong>Path<\/strong> \u2014 cili pjes\u00eb e p\u00ebrgjigjes merret (n\u00eb rastin ton\u00eb kjo \u00ebsht\u00eb <code>body.token<\/code>)<\/li>\n<li><strong>Vlera aktuale<\/strong> \u2014 cila vler\u00eb ndodhet n\u00eb rrug\u00ebn Path (n\u00eb rastin ton\u00eb, kjo \u00ebsht\u00eb vlera e tokenit)<\/li>\n<li><strong>\u2014 n\u00eb cilin nga pararend\u00ebsit do t\u00eb krijojm\u00eb variabl\u00ebn dinamike. Do t\u00eb zgjidhim<\/strong> \u2014 emri i variabl\u00ebs ku <strong>Vlera aktuale<\/strong> do t\u00eb ruhet. N\u00eb rastin ton\u00eb, kjo do t\u00eb jet\u00eb <code>token<\/code><\/li>\n<li><strong>Node<\/strong> \u2014 n\u00eb cilin nga paraardh\u00ebsit do t\u00eb krijohet variabla <strong>\u2014 n\u00eb cilin nga pararend\u00ebsit do t\u00eb krijojm\u00eb variabl\u00ebn dinamike. Do t\u00eb zgjidhim<\/strong>. Do t\u00eb zgjedhim Project<\/li>\n<\/ul>\n<p><\/p>\n<p>Dialogu i plot\u00ebsuar duket si m\u00eb posht\u00eb:<\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"TestMace. Fillim i shpejt\u00eb\" src=\"\/wp-content\/uploads\/2019\/12\/f524934dd1a4cb238afb6666135b360b.jpg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Tani, \u00e7do her\u00eb q\u00eb ekzekutohet nodi <strong>ky\u00e7ni<\/strong> variabla dinamike <code>token<\/code> do t\u00eb p\u00ebrdit\u00ebsohet me vler\u00ebn e re nga p\u00ebrgjigjja. Dhe kjo variabla do t\u00eb ruhet n\u00eb <strong>Project<\/strong> nodi dhe p\u00ebrmes trash\u00ebgimis\u00eb do t\u00eb jet\u00eb e disponueshme p\u00ebr pasardh\u00ebsit.<\/p>\n<p><\/p>\n<p>P\u00ebr t'u referuar variablave dinamik\u00eb, \u00ebsht\u00eb e nevojshme t\u00eb p\u00ebrdoret <noindex><a rel=\"nofollow\" href=\"https:\/\/docs-ru.testmace.com\/variables\/variables\">variabla e integruar<\/a><\/noindex> <code>$dynamicVar<\/code>. P\u00ebr shembull, p\u00ebr t\u00eb arritur n\u00eb token e ruajtur, \u00ebsht\u00eb e nevojshme t\u00eb th\u00ebrras\u00ebsh <code>${$dynamicVar.token}<\/code>.<\/p>\n<p><\/p>\n<h2 id=\"prokidyvaem-avtorizacionnyy-token-v-zaprosy\">P\u00ebrshtatni tokenin e autorizimit n\u00eb k\u00ebrkesa<\/h2>\n<p><\/p>\n<p>N\u00eb hapat e m\u00ebparsh\u00ebm, ne mor\u00ebm tokenin e autorizimit dhe gjith\u00e7ka q\u00eb duhet t\u00eb b\u00ebjm\u00eb \u00ebsht\u00eb t\u00eb shtojm\u00eb nj\u00eb kok\u00eb <code>Authorization<\/code> me vler\u00ebn <code>Bearer<\/code> n\u00eb t\u00eb gjitha k\u00ebrkesat q\u00eb k\u00ebrkojn\u00eb autorizim, duke p\u00ebrfshir\u00eb dhe n\u00eb <strong>create-post<\/strong>. P\u00ebr k\u00ebt\u00eb ka disa m\u00ebnyra:<\/p>\n<p><\/p>\n<ol>\n<li>Kopjoni manualisht token dhe shtoni titullin e autorizimit n\u00eb k\u00ebrkesat q\u00eb ju interesojn\u00eb. Ky metod\u00eb funksionon, megjithat\u00eb p\u00ebrdorimi i saj \u00ebsht\u00eb i kufizuar vet\u00ebm n\u00eb k\u00ebrkesat e tipit &#171;e b\u00ebra dhe e hodha&#187;. Nuk \u00ebsht\u00eb e p\u00ebrshtatshme p\u00ebr ekzekutimin e shum\u00ebfisht\u00eb t\u00eb skenar\u00ebve<\/li>\n<li>T\u00eb p\u00ebrdorni funksionalitetin <noindex><a rel=\"nofollow\" href=\"https:\/\/docs-ru.testmace.com\/work-with\/authorization\">OAuth 2.0 \u00ebsht\u00eb zhvilluar vet\u00ebm p\u00ebr<\/a><\/noindex>.<\/li>\n<li>P\u00ebrdorni <noindex><a rel=\"nofollow\" href=\"https:\/\/docs-ru.testmace.com\/other\/default-http-headers\">kokat standarde<\/a><\/noindex><\/li>\n<\/ol>\n<p><\/p>\n<p>P\u00ebrdorimi i m\u00ebnyr\u00ebs s\u00eb dyt\u00eb duket i qart\u00eb, megjithat\u00eb n\u00eb kontekstin e k\u00ebtij artikulli ky qasje\u2026 nuk \u00ebsht\u00eb interesante. Po t\u00eb jemi t\u00eb sinqert\u00eb: mekanizmat e autorizimit plus-minus jan\u00eb t\u00eb njohura p\u00ebr ju nga mjetet e tjera (edhe pse kemi gj\u00ebra si <noindex><a rel=\"nofollow\" href=\"https:\/\/docs-ru.testmace.com\/work-with\/authorization#inherit-from-parent\">trash\u00ebgimia e autorizimeve<\/a><\/noindex>) dhe \u00ebsht\u00eb e v\u00ebshtir\u00eb t\u00eb ngjallin pyetje. <\/p>\n<p><\/p>\n<p>Nj\u00eb tjet\u00ebr gj\u00eb jan\u00eb kokat standarde! N\u00ebse duhet ta thjesht\u00ebzojm\u00eb, kokat standarde jan\u00eb kokat HTTP t\u00eb trash\u00ebguara nga paraardh\u00ebsit, t\u00eb cilat n\u00eb m\u00ebnyr\u00eb standarde shtohen n\u00eb k\u00ebrkes\u00eb n\u00ebse nuk jan\u00eb shky\u00e7ur shprehimisht. Me k\u00ebt\u00eb funksionalitet, p\u00ebr shembull, mund t\u00eb realizoni nj\u00eb autorizim t\u00eb personalizuar ose thjesht t\u00eb evitoni shumimin n\u00eb skenar\u00eb. Do ta aplikojm\u00eb k\u00ebt\u00eb funksionalitet p\u00ebr t\u00eb p\u00ebrfshir\u00eb tokenin n\u00eb kokat.<\/p>\n<p><\/p>\n<p>Kur ne paraprakisht ruajm\u00eb tokenin n\u00eb variabl\u00ebn dinamike <code>$dynamicVar.token<\/code> n\u00eb nivelin e nodit Project. Na mbetet t\u00eb b\u00ebjm\u00eb si m\u00eb posht\u00eb:<\/p>\n<p><\/p>\n<ol>\n<li>T\u00eb p\u00ebrcaktojm\u00eb kok\u00ebn standarde <code>Authorization<\/code> me vler\u00eb <code>Bearer ${$dynamicVar.token}<\/code> n\u00eb nivelin e nodit Project. P\u00ebr k\u00ebt\u00eb, n\u00eb nd\u00ebrfaqen e nodit Project \u00ebsht\u00eb e nevojshme t\u00eb hapim dialogun me kokat standarde (butoni <strong>Headers<\/strong> n\u00eb k\u00ebndin e sip\u00ebrm t\u00eb djatht\u00eb) dhe t\u00eb shtojm\u00eb kok\u00ebn p\u00ebrkat\u00ebse. Dialogu me vlerat e plota do t\u00eb duket si m\u00eb posht\u00eb:<br \/>\n<img decoding=\"async\" alt=\"TestMace. Fillim i shpejt\u00eb\" src=\"\/wp-content\/uploads\/2019\/12\/9abd888cbf96e53b633e8f0fd3389297.jpg\" style=\"display:block;margin: 0 auto;\" \/><\/li>\n<li>\u00c7aktivizoni k\u00ebt\u00eb kok\u00eb nga k\u00ebrkesa e login. Kjo \u00ebsht\u00eb e qart\u00eb: n\u00eb momentin e login-it nuk e kemi ende tokenin dhe me k\u00ebt\u00eb k\u00ebrkes\u00eb do ta vendosim at\u00eb. Prandaj n\u00eb nd\u00ebrfaqen e k\u00ebrkes\u00ebs s\u00eb login n\u00eb sked\u00ebn <strong>Headers<\/strong> n\u00eb zon\u00ebn <strong>Inherited<\/strong> t\u00eb heqim mark\u00ebn nga koka e autorizimit. <\/li>\n<\/ol>\n<p><\/p>\n<p>Kjo \u00ebsht\u00eb gjith\u00e7ka. Tani, koka e autorizimit do t\u00eb shtohet n\u00eb t\u00eb gjitha k\u00ebrkesat q\u00eb jan\u00eb pasardh\u00ebs t\u00eb nodit Project, p\u00ebrve\u00e7 nodit t\u00eb login-it. K\u00ebshtu, n\u00eb k\u00ebt\u00eb faz\u00eb kemi nj\u00eb skenar t\u00eb gatsh\u00ebm dhe na mbetet vet\u00ebm ta fillojm\u00eb. Mund ta fillojm\u00eb skenarin duke zgjedhur pik\u00ebn <strong>Ekzekuto<\/strong> n\u00eb menun\u00eb kontekstuale t\u00eb nodit Project. <\/p>\n<p><\/p>\n<h2 id=\"proveryaem-korrektnost-sozdaniya-posta\">Kontrolloni sakt\u00ebsin\u00eb e krijimit t\u00eb postit<\/h2>\n<p><\/p>\n<p>N\u00eb k\u00ebt\u00eb faz\u00eb skenari yn\u00eb di t\u00eb b\u00ebj\u00eb login dhe, duke p\u00ebrdorur tokenin e autorizimit, t\u00eb krijoj\u00eb nj\u00eb post. Megjithat\u00eb, na nevojitet t\u00eb sigurohemi q\u00eb posti i ri t\u00eb ket\u00eb emrin korrekt. Pra, n\u00eb thelb, na mbetet t\u00eb b\u00ebjm\u00eb sa vijon:<\/p>\n<p><\/p>\n<ul>\n<li>T\u00eb d\u00ebrgojm\u00eb nj\u00eb k\u00ebrkes\u00eb p\u00ebr t\u00eb marr\u00eb postin sipas id, <\/li>\n<li>T\u00eb kontrollojm\u00eb q\u00eb emri, q\u00eb ka ardhur nga serveri, \u00ebsht\u00eb n\u00eb p\u00ebrputhje me emrin e kaluar gjat\u00eb krijimit t\u00eb postit<\/li>\n<\/ul>\n<p><\/p>\n<p>Le t'i hedhim nj\u00eb sy hapit t\u00eb par\u00eb. Duke u bazuar n\u00eb at\u00eb q\u00eb id p\u00ebrcaktohet gjat\u00eb ekzekutimit t\u00eb skriptit, duhet t\u00eb krijojm\u00eb nj\u00eb variabl\u00eb dinamike (t\u00eb quajtur <code>postId<\/code>) nga nodi <strong>create-post<\/strong> n\u00eb nivelin e nodit Project. Si ta b\u00ebjm\u00eb k\u00ebt\u00eb, ne e dim\u00eb tashm\u00eb, \u00ebsht\u00eb e mjaftueshme t\u00eb citojm\u00eb seksionin <strong>Ruajm\u00eb tokenin n\u00eb variab\u00ebl<\/strong>. Na mbetet vet\u00ebm t\u00eb krijojm\u00eb nj\u00eb k\u00ebrkes\u00eb p\u00ebr t\u00eb marr\u00eb postin sipas k\u00ebtij id. P\u00ebr k\u00ebt\u00eb, le t\u00eb krijojm\u00eb nj\u00eb RequestStep <strong>get-post<\/strong> me parametrat e m\u00ebposht\u00ebm:<\/p>\n<p><\/p>\n<ul>\n<li>Tipi i k\u00ebrkes\u00ebs: GET<\/li>\n<li>URL: ${domain}\/posts\/${$dynamicVar.postId}<\/li>\n<\/ul>\n<p><\/p>\n<p>P\u00ebr realizimin e hapit t\u00eb dyt\u00eb, na nevojitet t\u00eb njihemi me <noindex><a rel=\"nofollow\" href=\"https:\/\/docs-ru.testmace.com\/node-types\/assertion\">Assertion<\/a><\/noindex> nodi. Nodi Assertion \u00ebsht\u00eb nj\u00eb nod\u00eb q\u00eb lejon t\u00eb shkruhen verifikime p\u00ebr k\u00ebrkesa t\u00eb caktuara. \u00c7do nodi Assertion mund t\u00eb p\u00ebrmbaj\u00eb disa pohime (kontrollesh). M\u00eb shum\u00eb rreth t\u00eb gjitha llojeve t\u00eb pohimeve do t\u00eb mund t\u00eb lexoni n\u00eb <noindex><a rel=\"nofollow\" href=\"https:\/\/docs-ru.testmace.com\/node-types\/assertion\">dokumentacion<\/a><\/noindex>. Ne do ta p\u00ebrdorim <code>Compare<\/code> pohimin me operatorin <code>equal<\/code>. Ka disa m\u00ebnyra p\u00ebr t\u00eb krijuar pohime:<\/p>\n<p><\/p>\n<ol>\n<li>M\u00eb e gjat\u00eb. Nga menuja kontekstuale t\u00eb nodit RequestStep, krijoni nj\u00eb nod\u00eb Assertion manualisht. N\u00eb nodin e krijuar Assertion, shtoni pohimin q\u00eb ju intereson dhe plot\u00ebsoni fushat.<\/li>\n<li>Shpejt. Krijoni nj\u00eb nod t\u00eb Assertsionit s\u00eb bashku me assertion-in nga p\u00ebrgjigja e nodit RequestStep p\u00ebrmes menus\u00eb kontekstuale<\/li>\n<\/ol>\n<p><\/p>\n<p>T\u00eb dyta p\u00ebrdorim. K\u00ebshtu do t\u00eb duket p\u00ebr rastin ton\u00eb.<\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"TestMace. Fillim i shpejt\u00eb\" src=\"\/wp-content\/uploads\/2019\/12\/7f1d81669cb4c10db5f0afa3bf04eddf.jpg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>P\u00ebr ata q\u00eb nuk e kuptuan, k\u00ebtu ndodh p\u00ebr siguiente:<\/p>\n<p><\/p>\n<ol>\n<li>B\u00ebni nj\u00eb k\u00ebrkes\u00eb n\u00eb nodin <strong>get-post<\/strong><\/li>\n<li>N\u00eb sked\u00ebn <strong>Parsed<\/strong> t\u00eb p\u00ebrgjigjes, thoni menus\u00eb kontekstuale dhe zgjidhni <strong>Krijo assertion<\/strong> -&gt; <strong>Compare<\/strong> -&gt; <strong>Baraz<\/strong><\/li>\n<\/ol>\n<p><\/p>\n<p>Urime, krijuam testin ton\u00eb t\u00eb par\u00eb! E thjesht\u00eb, a nuk \u00ebsht\u00eb e v\u00ebrtet\u00eb? Tani mund t\u00eb ekzekutoni skenarin plot\u00ebsisht dhe t\u00eb shijoni rezultatin. Ka mbetur p\u00ebr t\u00eb refaktorizuar pak dhe nxjerr\u00eb <code>title<\/code> n\u00eb nj\u00eb variab\u00ebl t\u00eb ve\u00e7ant\u00eb. Por ne do ta l\u00ebm\u00eb k\u00ebt\u00eb p\u00ebr ju si detyr\u00eb sht\u00ebpie)<\/p>\n<p><\/p>\n<h1 id=\"zaklyuchenie\">P\u00ebrfundimi<\/h1>\n<p><\/p>\n<p>N\u00eb k\u00ebt\u00eb udh\u00ebzues ne krijuam nj\u00eb skenar t\u00eb plot\u00eb dhe gjithashtu b\u00ebm\u00eb nj\u00eb p\u00ebrmbledhje t\u00eb disa ve\u00e7orive t\u00eb produktit ton\u00eb. Sigurisht, ne nuk e shfryt\u00ebzuam t\u00eb gjith\u00eb funksionalitetin dhe n\u00eb artikujt e ardhsh\u00ebm do t\u00eb b\u00ebjm\u00eb nj\u00eb p\u00ebrmbledhje t\u00eb detajuar t\u00eb mund\u00ebsive t\u00eb TestMace. Q\u00ebndroni n\u00eb kontroll t\u00eb azhurnimeve!<\/p>\n<p><\/p>\n<p>P.S. P\u00ebr ata q\u00eb e kan\u00eb t\u00eb v\u00ebshtir\u00eb t\u00eb riprodhojn\u00eb t\u00eb gjitha hapat, ne kemi vendosur me mir\u00ebsjellje <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/TestMace\/testmace-quick-start-project\">repo<\/a><\/noindex> me projektin nga artikulli. Mund ta hapni me <strong>File<\/strong> -&gt; <strong>Hap projektin<\/strong> dhe zgjidhni dosjen Projekt.<\/p>\n<p>Burimi: <a content=\"nofollow\" rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/post\/458964\/\">habr.com<\/a><\/p>","protected":false,"gt_translate_keys":[{"key":"rendered","format":"html"}]},"excerpt":{"rendered":"<p>\u0412\u0441\u0435\u043c \u043f\u0440\u0438\u0432\u0435\u0442. \u041c\u044b \u043f\u043e\u0442\u0438\u0445\u043e\u043d\u044c\u043a\u0443 \u0432\u044b\u0445\u043e\u0434\u0438\u043c \u0438\u0437 \u0442\u0435\u043d\u0438 \u0438 \u043f\u0440\u043e\u0434\u043e\u043b\u0436\u0430\u0435\u043c \u0441\u0435\u0440\u0438\u044e \u0441\u0442\u0430\u0442\u0435\u0439 \u043e \u043d\u0430\u0448\u0435\u043c \u043f\u0440\u043e\u0434\u0443\u043a\u0442\u0435. \u041f\u043e\u0441\u043b\u0435 \u043f\u0440\u0435\u0434\u044b\u0434\u0443\u0449\u0435\u0439 \u043e\u0431\u0437\u043e\u0440\u043d\u043e\u0439 \u0441\u0442\u0430\u0442\u044c\u0438 \u043c\u044b \u043f\u043e\u043b\u0443\u0447\u0438\u043b\u0438 \u043c\u043d\u043e\u0436\u0435\u0441\u0442\u0432\u043e \u043e\u0442\u0437\u044b\u0432\u043e\u0432 (\u043f\u0440\u0435\u0438\u043c\u0443\u0449\u0435\u0441\u0442\u0432\u0435\u043d\u043d\u043e \u043f\u043e\u043b\u043e\u0436\u0438\u0442\u0435\u043b\u044c\u043d\u044b\u0445), \u043f\u0440\u0435\u0434\u043b\u043e\u0436\u0435\u043d\u0438\u0439 \u0438 bug \u0440\u0435\u043f\u043e\u0440\u0442\u043e\u0432. \u0421\u0435\u0433\u043e\u0434\u043d\u044f \u043c\u044b \u043f\u043e\u043a\u0430\u0436\u0435\u043c TestMace \u0432 \u0434\u0435\u043b\u0435 \u0438 \u0432\u044b \u043f\u043e \u0434\u043e\u0441\u0442\u043e\u0438\u043d\u0441\u0442\u0432\u0443 \u0441\u043c\u043e\u0436\u0435\u0442\u0435 \u043e\u0446\u0435\u043d\u0438\u0442\u044c \u043d\u0435\u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0444\u0438\u0448\u043a\u0438 \u043d\u0430\u0448\u0435\u0433\u043e \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f. \u0414\u043b\u044f \u0431\u043e\u043b\u0435\u0435 \u043f\u043e\u043b\u043d\u043e\u0433\u043e \u043f\u043e\u0433\u0440\u0443\u0436\u0435\u043d\u0438\u044f \u0441\u043e\u0432\u0435\u0442\u0443\u044e \u043e\u0431\u0440\u0430\u0442\u0438\u0442\u044c\u0441\u044f \u043a \u043d\u0430\u0448\u0435\u0439 \u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0430\u0446\u0438\u0438 \u043f\u043e \u0430\u0434\u0440\u0435\u0441\u0443 [&hellip;]<\/p>\n","protected":false,"gt_translate_keys":[{"key":"rendered","format":"html"}]},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[702],"tags":[],"class_list":["post-54167","post","type-post","status-publish","format-standard","hentry","category-novosti-interneta"],"aioseo_notices":[],"aioseo_head":"\n\t\t<!-- All in One SEO 5.0.0.1 - aioseo.com -->\n\t<meta name=\"description\" content=\"\u0412\u0441\u0435\u043c \u043f\u0440\u0438\u0432\u0435\u0442.\" \/>\n\t<meta name=\"robots\" content=\"max-image-preview:large\" \/>\n\t<meta name=\"author\" content=\"Yuri Gagarin\"\/>\n\t<link rel=\"canonical\" href=\"https:\/\/prohoster.info\/sq\/blog\/novosti-interneta\/testmace-bystryj-start\" \/>\n\t<meta name=\"generator\" content=\"All in One SEO (AIOSEO) 5.0.0.1\" \/>\n\t\t<meta property=\"og:locale\" content=\"sq_AL\" \/>\n\t\t<meta property=\"og:site_name\" content=\"ProHoster | \u041a\u0443\u043f\u0438\u0442\u044c \u043d\u0430\u0434\u0435\u0436\u043d\u044b\u0439 \u0445\u043e\u0441\u0442\u0438\u043d\u0433 \u0434\u043b\u044f \u0441\u0430\u0439\u0442\u043e\u0432 \u0441 \u0437\u0430\u0449\u0438\u0442\u043e\u0439 \u043e\u0442 DDoS, VPS VDS \u0441\u0435\u0440\u0432\u0435\u0440\u044b\" \/>\n\t\t<meta property=\"og:type\" content=\"article\" \/>\n\t\t<meta property=\"og:title\" content=\"\ud83e\udd47TestMace. \u0411\u044b\u0441\u0442\u0440\u044b\u0439 \u0441\u0442\u0430\u0440\u0442 | ProHoster\" \/>\n\t\t<meta property=\"og:description\" content=\"\u0412\u0441\u0435\u043c \u043f\u0440\u0438\u0432\u0435\u0442.\" \/>\n\t\t<meta property=\"og:url\" content=\"https:\/\/prohoster.info\/sq\/blog\/novosti-interneta\/testmace-bystryj-start\" \/>\n\t\t<meta property=\"og:image\" content=\"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg\" \/>\n\t\t<meta property=\"og:image:secure_url\" content=\"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg\" \/>\n\t\t<meta property=\"og:image:width\" content=\"350\" \/>\n\t\t<meta property=\"og:image:height\" content=\"350\" \/>\n\t\t<meta property=\"article:published_time\" content=\"2019-12-18T21:00:00+00:00\" \/>\n\t\t<meta property=\"article:modified_time\" content=\"2020-02-18T11:02:08+00:00\" \/>\n\t\t<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/prohoster\" \/>\n\t\t<meta property=\"article:author\" content=\"https:\/\/www.facebook.com\/prohoster\" \/>\n\t\t<!-- All in One SEO -->\n\n","aioseo_head_json":{"title":"\ud83e\udd47TestMace. Fillimi i shpejt\u00eb | ProHoster","description":"P\u00ebrsh\u00ebndetje t\u00eb gjith\u00ebve.","canonical_url":"https:\/\/prohoster.info\/sq\/blog\/novosti-interneta\/testmace-bystryj-start","robots":"max-image-preview:large","keywords":"","webmasterTools":{"miscellaneous":""},"schema":null,"og:locale":"sq_AL","og:site_name":"ProHoster | \u041a\u0443\u043f\u0438\u0442\u044c \u043d\u0430\u0434\u0435\u0436\u043d\u044b\u0439 \u0445\u043e\u0441\u0442\u0438\u043d\u0433 \u0434\u043b\u044f \u0441\u0430\u0439\u0442\u043e\u0432 \u0441 \u0437\u0430\u0449\u0438\u0442\u043e\u0439 \u043e\u0442 DDoS, VPS VDS \u0441\u0435\u0440\u0432\u0435\u0440\u044b","og:type":"article","og:title":"\ud83e\udd47TestMace. \u0411\u044b\u0441\u0442\u0440\u044b\u0439 \u0441\u0442\u0430\u0440\u0442 | ProHoster","og:description":"\u0412\u0441\u0435\u043c \u043f\u0440\u0438\u0432\u0435\u0442.","og:url":"https:\/\/prohoster.info\/sq\/blog\/novosti-interneta\/testmace-bystryj-start","og:image":"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg","og:image:secure_url":"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg","og:image:width":350,"og:image:height":350,"article:published_time":"2019-12-18T21:00:00+00:00","article:modified_time":"2020-02-18T11:02:08+00:00","article:publisher":"https:\/\/www.facebook.com\/prohoster","article:author":"https:\/\/www.facebook.com\/prohoster"},"aioseo_meta_data":{"post_id":"54167","title":null,"description":null,"keywords":null,"keyphrases":null,"primary_term":null,"canonical_url":null,"og_title":null,"og_description":null,"og_object_type":"default","og_image_type":"default","og_image_url":null,"og_image_width":null,"og_image_height":null,"og_image_custom_url":null,"og_image_custom_fields":null,"og_video":null,"og_custom_url":null,"og_article_section":null,"og_article_tags":null,"twitter_use_og":false,"twitter_card":"default","twitter_image_type":"default","twitter_image_url":null,"twitter_image_custom_url":null,"twitter_image_custom_fields":null,"twitter_title":null,"twitter_description":null,"schema":{"blockGraphs":[],"customGraphs":[],"default":{"data":{"Article":[],"Course":[],"Dataset":[],"FAQPage":[],"Movie":[],"Person":[],"Product":[],"ProductReview":[],"Car":[],"Recipe":[],"Service":[],"SoftwareApplication":[],"WebPage":[]},"graphName":"","isEnabled":true},"graphs":[]},"schema_type":null,"schema_type_options":null,"pillar_content":false,"robots_default":true,"robots_noindex":false,"robots_noarchive":false,"robots_nosnippet":false,"robots_nofollow":false,"robots_noimageindex":false,"robots_noodp":false,"robots_notranslate":false,"robots_max_snippet":null,"robots_max_videopreview":null,"robots_max_imagepreview":"large","priority":null,"frequency":null,"local_seo":null,"seo_analyzer_scan_date":"2026-01-24 10:17:19","breadcrumb_settings":null,"limit_modified_date":false,"reviewed_by":null,"ai":null,"created":"2021-02-28 20:10:34","updated":"2026-01-24 10:17:19","focus_keyword":null,"additional_keywords":null,"truseo_locale":null},"gt_translate_keys":[{"key":"link","format":"url"}],"_links":{"self":[{"href":"https:\/\/prohoster.info\/sq\/wp-json\/wp\/v2\/posts\/54167","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/prohoster.info\/sq\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/prohoster.info\/sq\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/prohoster.info\/sq\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/prohoster.info\/sq\/wp-json\/wp\/v2\/comments?post=54167"}],"version-history":[{"count":0,"href":"https:\/\/prohoster.info\/sq\/wp-json\/wp\/v2\/posts\/54167\/revisions"}],"wp:attachment":[{"href":"https:\/\/prohoster.info\/sq\/wp-json\/wp\/v2\/media?parent=54167"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/prohoster.info\/sq\/wp-json\/wp\/v2\/categories?post=54167"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/prohoster.info\/sq\/wp-json\/wp\/v2\/tags?post=54167"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}