{"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\/cs\/blog\/news\/testmace-bystryj-start","title":{"rendered":"TestMace. Rychl\u00fd start","gt_translate_keys":[{"key":"rendered","format":"text"}]},"content":{"rendered":"<p><img decoding=\"async\" alt=\"TestMace. Rychl\u00fd start\" src=\"\/wp-content\/uploads\/2019\/12\/ca19545f1cc06814a69a6a3e6d9f3a5a.jpg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Ahoj v\u0161ichni. Pomalu vych\u00e1z\u00edme z \u00fastran\u00ed a pokra\u010dujeme v s\u00e9rii \u010dl\u00e1nk\u016f o na\u0161em produktu. Po <noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/post\/458372\/\">p\u0159edchoz\u00ed \u010d\u00e1sti, \u017ee v takov\u00e9m syst\u00e9mu se pou\u017e\u00edvaj\u00ed speci\u00e1ln\u00ed hlavn\u00ed odbo\u010dova\u010de:<\/a><\/noindex> p\u0159ehledov\u00e9m \u010dl\u00e1nku jsme obdr\u017eeli \u0159adu zp\u011btn\u00fdch vazeb (v\u011bt\u0161inou pozitivn\u00edch), n\u00e1vrh\u016f a bug report\u016f. Dnes v\u00e1m uk\u00e1\u017eeme <noindex><a rel=\"nofollow\" href=\"https:\/\/client.testmace.com\">TestMace<\/a><\/noindex> v akci a budete m\u00edt mo\u017enost ocenit n\u011bkter\u00e9 funkce na\u0161\u00ed aplikace. Pro hlub\u0161\u00ed pochopen\u00ed doporu\u010dujeme nahl\u00e9dnout do na\u0161\u00ed dokumentace na adrese <noindex><a rel=\"nofollow\" href=\"http:\/\/docs-ru.testmace.com\">http:\/\/docs-ru.testmace.com<\/a><\/noindex>. Tak jdeme na to! <\/p>\n<p><noindex><a rel=\"nofollow\" name=\"habracut\"><\/a><\/noindex><\/p>\n<h1 id=\"ustanovka\">Instalace<\/h1>\n<p><\/p>\n<p>Za\u010dneme s n\u011b\u010d\u00edm ban\u00e1ln\u00edm. Aplikace je dostupn\u00e1 a skute\u010dn\u011b testovateln\u00e1 na t\u0159ech platform\u00e1ch \u2014 Linux, Windows, MacOS. M\u016f\u017eete si st\u00e1hnout instal\u00e1tor pro svou c\u00edlovou OS z <noindex><a rel=\"nofollow\" href=\"https:\/\/client.testmace.com\">na\u0161ich str\u00e1nek<\/a><\/noindex>. Pro u\u017eivatele Linuxu je k dispozici mo\u017enost instalace <noindex><a rel=\"nofollow\" href=\"https:\/\/snapcraft.io\/testmace\">snap bal\u00ed\u010dku<\/a><\/noindex>. Douf\u00e1me, \u017ee se brzy dostaneme i do Microsoft Store a App Store (je to v\u016fbec pot\u0159eba? Co si o tom mysl\u00edte?).<\/p>\n<p><\/p>\n<h1 id=\"podopytnyy-scenariy\">Testovac\u00ed sc\u00e9n\u00e1\u0159<\/h1>\n<p><\/p>\n<p>Jako p\u0159\u00edklad jsme vybrali n\u00e1sleduj\u00edc\u00ed standardn\u00ed sc\u00e9n\u00e1\u0159:<\/p>\n<p><\/p>\n<ul>\n<li>p\u0159ihl\u00e1s\u00edme se: u\u017eivatel \u2014 admin, heslo \u2014 password<\/li>\n<li>p\u0159id\u00e1me nov\u00fd z\u00e1znam<\/li>\n<li>zkontrolujeme spr\u00e1vn\u00e9 p\u0159id\u00e1n\u00ed z\u00e1znamu<\/li>\n<\/ul>\n<p><\/p>\n<p>Testovat budeme na <noindex><a rel=\"nofollow\" href=\"https:\/\/testmace-quick-start.herokuapp.com\/\">https:\/\/testmace-quick-start.herokuapp.com\/<\/a><\/noindex>. Je to b\u011b\u017en\u00fd <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/typicode\/json-server\">json-server<\/a><\/noindex>, kter\u00fd je ide\u00e1ln\u00ed pro testov\u00e1n\u00ed podobn\u00fdch aplikac\u00ed. Pouze jsme p\u0159idali autorizaci pomoc\u00ed tokenu na v\u0161echny routy json-serveru a vytvo\u0159ili metodu login pro z\u00edsk\u00e1n\u00ed tohoto tokenu. Budeme postupovat krok za krokem, postupn\u011b vylep\u0161ovat n\u00e1\u0161 projekt.<\/p>\n<p><\/p>\n<h2 id=\"sozdanie-proekta-i-popytka-sozdat-suschnost-bez-avtorizacii\">Vytvo\u0159en\u00ed projektu a pokus o vytvo\u0159en\u00ed entity bez autorizace<\/h2>\n<p><\/p>\n<p>Nejprve vytvo\u0159\u00edme nov\u00fd projekt (<strong>Soubor<\/strong>-&gt;<strong>Nov\u00fd projekt<\/strong>). Pokud spou\u0161t\u00edte aplikaci poprv\u00e9, nov\u00fd projekt se otev\u0159e automaticky. Nejprve se pokus\u00edme prov\u00e9st \u017e\u00e1dost o vytvo\u0159en\u00ed nov\u00e9ho z\u00e1znamu (snad je mo\u017en\u00e9 vytv\u00e1\u0159en\u00ed z\u00e1znam\u016f bez autorizace). V kontextov\u00e9m menu uzlu Project vyberte polo\u017eku <strong>P\u0159idat uzel<\/strong> -&gt; <strong>RequestStep<\/strong>. Jako n\u00e1zev uzlu zadejte <strong>vytvo\u0159it-p\u0159\u00edsp\u011bvek<\/strong>. V\u00fdsledkem bude, \u017ee se v stromov\u00e9 struktu\u0159e vytvo\u0159\u00ed nov\u00fd uzel a otev\u0159e se z\u00e1lo\u017eka tohoto uzlu. Nastav\u00edme n\u00e1sleduj\u00edc\u00ed parametry \u017e\u00e1dosti:<\/p>\n<p><\/p>\n<ul>\n<li>Typ \u017e\u00e1dosti: 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>T\u011blo \u017e\u00e1dosti: json s hodnotou <code>{\"title\": \"Nov\u00fd testovac\u00ed p\u0159\u00edsp\u011bvek rychl\u00fd start\"}<\/code><br \/>\nPokud jste v\u0161e ud\u011blali spr\u00e1vn\u011b, rozhran\u00ed by m\u011blo vypadat takto:<\/li>\n<\/ul>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"TestMace. Rychl\u00fd start\" src=\"\/wp-content\/uploads\/2019\/12\/a5c81dc4977dd73a4975643bf8ced3da.jpg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Pokud se v\u0161ak pokus\u00edme prov\u00e9st \u017e\u00e1dost, server vr\u00e1t\u00ed k\u00f3d 401 a bez autorizace n\u00e1m na tomto serveru nic neprojde. No, v podstat\u011b to bylo o\u010dek\u00e1van\u00e9).<\/p>\n<p><\/p>\n<h2 id=\"dobavlyaem-zapros-na-avtorizaciyu\">P\u0159id\u00e1v\u00e1n\u00ed \u017e\u00e1dosti o autorizaci<\/h2>\n<p><\/p>\n<p>Jak ji\u017e bylo \u0159e\u010deno, m\u00e1me POST endpoint <code>\/login<\/code>, kter\u00fd p\u0159ij\u00edm\u00e1 jako t\u011blo \u017e\u00e1dosti json ve form\u00e1tu: <code>{\"username\": \"\", \"password\": \"\"}<\/code>, kde <code>u\u017eivatelsk\u00e9 jm\u00e9no<\/code> a <code>heslo<\/code> (op\u011bt, jak bylo uvedeno v\u00fd\u0161e) maj\u00ed v\u00fdznamy <code>admin<\/code> a <code>heslo<\/code> odpov\u00eddaj\u00edc\u00edm zp\u016fsobem. Na tuto \u017e\u00e1dost tento endpoint vrac\u00ed json ve form\u00e1tu <code>{\"token\": \"\"}<\/code>. Vyu\u017eijeme jej pro autorizaci. Vytvo\u0159\u00edme <strong>RequestStep<\/strong> uzel s n\u00e1zvem <strong>login<\/strong>, jako rodi\u010d bude vystupovat <strong>Projekt<\/strong> uzel. Pomoc\u00ed drag-and-drop p\u0159esu\u0148te tento uzel v hierarchii v\u00fd\u0161e ne\u017e uzel <strong>vytvo\u0159it-p\u0159\u00edsp\u011bvek<\/strong>. Ur\u010d\u00edme nov\u011b vytvo\u0159en\u00e9mu po\u017eadavku n\u00e1sleduj\u00edc\u00ed parametry:<\/p>\n<p><\/p>\n<ul>\n<li>Typ \u017e\u00e1dosti: 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>T\u011blo \u017e\u00e1dosti: json s hodnotou <code>{\"username\": \"admin\", \"password\": \"password\"}<\/code><\/li>\n<\/ul>\n<p><\/p>\n<p>Provedeme po\u017eadavek a obdr\u017e\u00edme dvoustovkov\u00fd k\u00f3d s tokenem v odpov\u011bdi. Takto n\u011bjak:<\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"TestMace. Rychl\u00fd start\" 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\">Refaktoring: odstran\u011bn\u00ed duplicity dom\u00e9ny<\/h2>\n<p><\/p>\n<p>Zat\u00edm nejsou po\u017eadavky spojeny do jednotn\u00e9ho sc\u00e9n\u00e1\u0159e. Ale to nen\u00ed jedin\u00e1 nev\u00fdhoda. Pokud se na to pod\u00edv\u00e1te bl\u00ed\u017ee, m\u016f\u017eete si v\u0161imnout, \u017ee minim\u00e1ln\u011b dom\u00e9na je duplikov\u00e1na v obou po\u017eadavc\u00edch. Nen\u00ed to dobr\u00e9. Je \u010das refaktorovat tuto \u010d\u00e1st budouc\u00edho sc\u00e9n\u00e1\u0159e a v tom n\u00e1m pomohou prom\u011bnn\u00e9.<\/p>\n<p><\/p>\n<p>V prvn\u00edm p\u0159ibl\u00ed\u017een\u00ed prom\u011bnn\u00e9 pln\u00ed stejnou roli jako v jin\u00fdch podobn\u00fdch n\u00e1stroj\u00edch a programovac\u00edch jazyc\u00edch \u2014 odstran\u011bn\u00ed duplicity, zv\u00fd\u0161en\u00ed \u010ditelnosti atd. Podrobn\u011bji o prom\u011bnn\u00fdch si m\u016f\u017eete p\u0159e\u010d\u00edst v <noindex><a rel=\"nofollow\" href=\"https:\/\/docs-ru.testmace.com\/variables\/user-variables\">na\u0161\u00ed dokumentaci<\/a><\/noindex>. V tomto p\u0159\u00edpad\u011b budou pot\u0159eba u\u017eivatelsk\u00e9 prom\u011bnn\u00e9. <\/p>\n<p><\/p>\n<p>Definujeme prom\u011bnnou na \u00farovni projektu uzlu <code>domain<\/code> s hodnotou <code>https:\/\/testmace-quick-start.herokuapp.com<\/code>. K tomu je pot\u0159eba<\/p>\n<p><\/p>\n<ul>\n<li>Otev\u0159\u00edt z\u00e1lo\u017eku s t\u00edmto uzlem a kliknout na ikonu kalkula\u010dky vpravo naho\u0159e<\/li>\n<li>Kliknout na <strong>+ ADD VARIABLE<\/strong><\/li>\n<li>Zadat n\u00e1zev a hodnotu prom\u011bnn\u00e9<br \/>\nV na\u0161em p\u0159\u00edpad\u011b dialog s p\u0159idanou prom\u011bnnou bude vypadat n\u00e1sledovn\u011b:<\/li>\n<\/ul>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"TestMace. Rychl\u00fd start\" src=\"\/wp-content\/uploads\/2019\/12\/071ac6dca2c5a49b78b11719fae5f650.jpg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>OK. Nyn\u00ed d\u00edky d\u011bdi\u010dnosti m\u016f\u017eeme tuto prom\u011bnnou pou\u017e\u00edt v potomc\u00edch jak\u00e9koliv \u00farovn\u011b zano\u0159en\u00ed. V na\u0161em p\u0159\u00edpad\u011b to jsou uzly <strong>login<\/strong> a <strong>vytvo\u0159it-p\u0159\u00edsp\u011bvek<\/strong>. Abychom mohli prom\u011bnnou pou\u017e\u00edt v textov\u00e9m poli, je nutn\u00e9 napsat <code>${}<\/code>. Nap\u0159\u00edklad, url pro login se p\u0159evede na <code>${domain}\/login<\/code>, a pro <strong>vytvo\u0159it-p\u0159\u00edsp\u011bvek<\/strong> uzel bude url vypadat takto <code>${domain}\/posts<\/code>.<\/p>\n<p><\/p>\n<p>Takto jsme, veden\u00fdm principem DRY, o n\u011bco vylep\u0161ili sc\u00e9n\u00e1\u0159.<\/p>\n<p><\/p>\n<h2 id=\"sohranyaem-token-v-peremennuyu\">Ukl\u00e1d\u00e1me token do prom\u011bnn\u00e9<\/h2>\n<p><\/p>\n<p>Jeliko\u017e jsme se u\u017e bavili o prom\u011bnn\u00fdch, poj\u010fme se tomuto t\u00e9matu v\u011bnovat podrobn\u011bji. V tuto chv\u00edli, v p\u0159\u00edpad\u011b \u00fasp\u011b\u0161n\u00e9ho p\u0159ihl\u00e1\u0161en\u00ed, dost\u00e1v\u00e1me od serveru autoriza\u010dn\u00ed token, kter\u00fd budeme pot\u0159ebovat v dal\u0161\u00edch po\u017eadavc\u00edch. Poj\u010fme tento token ulo\u017eit do prom\u011bnn\u00e9. Proto\u017ee hodnota prom\u011bnn\u00e9 bude ur\u010dena b\u011bhem b\u011bhu sc\u00e9n\u00e1\u0159e, pou\u017eijeme k tomu speci\u00e1ln\u00ed mechanismus \u2014 <noindex><a rel=\"nofollow\" href=\"https:\/\/docs-ru.testmace.com\/variables\/user-variables\/dynamic-variables\">dynamick\u00e9 prom\u011bnn\u00e9<\/a><\/noindex>.<\/p>\n<p><\/p>\n<p>Nejprve provedeme \u017e\u00e1dost o p\u0159ihl\u00e1\u0161en\u00ed. Na kart\u011b <strong>Parsed<\/strong> Pro odpov\u011b\u010f naje\u010fte kurzorem na token a v kontextov\u00e9m menu (kter\u00e9 vyvol\u00e1te prav\u00fdm tla\u010d\u00edtkem my\u0161i nebo stisknut\u00edm tla\u010d\u00edtka &#8230;) vyberte polo\u017eku <strong>P\u0159i\u0159adit k prom\u011bnn\u00e9<\/strong>. Otev\u0159e se dialog s n\u00e1sleduj\u00edc\u00edmi poli:<\/p>\n<p><\/p>\n<ul>\n<li><strong>Path<\/strong> \u2014 kter\u00e1 \u010d\u00e1st odpov\u011bdi se vezme (v na\u0161em p\u0159\u00edpad\u011b je to <code>body.token<\/code>)<\/li>\n<li><strong>Aktu\u00e1ln\u00ed hodnota<\/strong> \u2014 jak\u00e1 hodnota le\u017e\u00ed na cest\u011b Path (v na\u0161em p\u0159\u00edpad\u011b je to hodnota tokenu)<\/li>\n<li><strong>N\u00e1zev prom\u011bnn\u00e9<\/strong> \u2014 n\u00e1zev prom\u011bnn\u00e9, kam <strong>Aktu\u00e1ln\u00ed hodnota<\/strong> se ulo\u017e\u00ed. V na\u0161em p\u0159\u00edpad\u011b to bude <code>token<\/code><\/li>\n<li><strong>Node<\/strong> \u2014 v jak\u00e9m z p\u0159edk\u016f se prom\u011bnn\u00e1 vytvo\u0159\u00ed <strong>N\u00e1zev prom\u011bnn\u00e9<\/strong>. Zvol\u00edme Project<\/li>\n<\/ul>\n<p><\/p>\n<p>Vypln\u011bn\u00fd dialog vypad\u00e1 n\u00e1sledovn\u011b:<\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"TestMace. Rychl\u00fd start\" src=\"\/wp-content\/uploads\/2019\/12\/f524934dd1a4cb238afb6666135b360b.jpg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Nyn\u00ed se p\u0159i ka\u017ed\u00e9m proveden\u00ed uzlu <strong>login<\/strong> dynamick\u00e1 prom\u011bnn\u00e1 <code>token<\/code> bude aktualizovat novou hodnotu z odpov\u011bdi. A tato prom\u011bnn\u00e1 bude ulo\u017eena v <strong>Projekt<\/strong> uzlu a d\u00edky d\u011bdi\u010dnosti bude dostupn\u00e1 potomk\u016fm.<\/p>\n<p><\/p>\n<p>Abychom se dostali k dynamick\u00fdm prom\u011bnn\u00fdm, je t\u0159eba pou\u017e\u00edt <noindex><a rel=\"nofollow\" href=\"https:\/\/docs-ru.testmace.com\/variables\/variables\">vestav\u011bnou prom\u011bnnou<\/a><\/noindex> <code>$dynamicVar<\/code>. Nap\u0159\u00edklad, abychom dos\u00e1hli ulo\u017een\u00e9ho tokenu, mus\u00edme zavolat <code>${$dynamicVar.token}<\/code>.<\/p>\n<p><\/p>\n<h2 id=\"prokidyvaem-avtorizacionnyy-token-v-zaprosy\">P\u0159en\u00e1\u0161\u00edme autoriza\u010dn\u00ed token do po\u017eadavk\u016f<\/h2>\n<p><\/p>\n<p>V p\u0159edchoz\u00edch kroc\u00edch jsme z\u00edskali autoriza\u010dn\u00ed token a v\u0161e, co mus\u00edme ud\u011blat, je p\u0159idat hlavi\u010dku <code>Authorization<\/code> s hodnotou <code>Bearer<\/code> do v\u0161ech po\u017eadavk\u016f, kter\u00e9 vy\u017eaduj\u00ed autorizaci, v\u010detn\u011b <strong>vytvo\u0159it-p\u0159\u00edsp\u011bvek<\/strong>. K tomu existuje n\u011bkolik zp\u016fsob\u016f:<\/p>\n<p><\/p>\n<ol>\n<li>Ru\u010dn\u00ed kop\u00edrov\u00e1n\u00ed tokenu a p\u0159id\u00e1n\u00ed autoriza\u010dn\u00edho z\u00e1hlav\u00ed do zaj\u00edmav\u00fdch dotaz\u016f. Tento zp\u016fsob funguje, av\u0161ak jeho pou\u017eit\u00ed je omezeno pouze na dotazy typu &#171;ud\u011blal a vyhodil&#187;. Pro opakovan\u00e9 prov\u00e1d\u011bn\u00ed sc\u00e9n\u00e1\u0159\u016f nen\u00ed vhodn\u00fd.<\/li>\n<li>Vyu\u017e\u00edt funk\u010dnost <noindex><a rel=\"nofollow\" href=\"https:\/\/docs-ru.testmace.com\/work-with\/authorization\">autorizace<\/a><\/noindex>.<\/li>\n<li>Pou\u017e\u00edt <noindex><a rel=\"nofollow\" href=\"https:\/\/docs-ru.testmace.com\/other\/default-http-headers\">v\u00fdchoz\u00ed hlavi\u010dky<\/a><\/noindex><\/li>\n<\/ol>\n<p><\/p>\n<p>Pou\u017eit\u00ed druh\u00e9ho zp\u016fsobu se zd\u00e1 b\u00fdt evidentn\u00ed, nicm\u00e9n\u011b v kontextu tohoto \u010dl\u00e1nku nen\u00ed takov\u00fd p\u0159\u00edstup\u2026 zaj\u00edmav\u00fd. No opravdu: mechanismus autorizac\u00ed je v\u00e1m v\u00edce m\u00e9n\u011b zn\u00e1m z jin\u00fdch n\u00e1stroj\u016f (i kdy\u017e m\u00e1me v\u011bci jako <noindex><a rel=\"nofollow\" href=\"https:\/\/docs-ru.testmace.com\/work-with\/authorization#inherit-from-parent\">d\u011bdi\u010dnost autorizac\u00ed<\/a><\/noindex>) a sotva vyvol\u00e1 ot\u00e1zky. <\/p>\n<p><\/p>\n<p>Jin\u00e1 v\u011bc jsou v\u00fdchoz\u00ed hlavi\u010dky! Pokud to shrneme, tak v\u00fdchoz\u00ed hlavi\u010dky jsou HTTP hlavi\u010dky d\u011bd\u011bn\u00e9 od p\u0159edk\u016f, kter\u00e9 se standardn\u011b p\u0159id\u00e1vaj\u00ed k po\u017eadavku, pokud je v\u00fdslovn\u011b nevypnete. Pomoc\u00ed t\u00e9to funk\u010dnosti m\u016f\u017eeme nap\u0159\u00edklad implementovat vlastn\u00ed autorizaci nebo se jednodu\u0161e zbavit duplikace ve sc\u00e9n\u00e1\u0159\u00edch. Pou\u017eijeme tuto funkci k p\u0159en\u00e1\u0161en\u00ed tokenu v hlavi\u010dk\u00e1ch.<\/p>\n<p><\/p>\n<p>D\u0159\u00edve jsme opatrn\u011b ulo\u017eili token do dynamick\u00e9 prom\u011bnn\u00e9 <code>$dynamicVar.token<\/code> na \u00farovni uzlu projektu. Nyn\u00ed zb\u00fdv\u00e1 ud\u011blat n\u00e1sleduj\u00edc\u00ed:<\/p>\n<p><\/p>\n<ol>\n<li>Definovat v\u00fdchoz\u00ed hlavi\u010dku <code>Authorization<\/code> s hodnotou <code>Bearer ${$dynamicVar.token}<\/code> na \u00farovni uzlu projektu. K tomu je t\u0159eba v rozhran\u00ed uzlu projektu otev\u0159\u00edt dialog s v\u00fdchoz\u00edmi hlavi\u010dkami (tla\u010d\u00edtko <strong>Headers<\/strong> v prav\u00e9m horn\u00edm rohu) a p\u0159idat odpov\u00eddaj\u00edc\u00ed hlavi\u010dku. Dialog se vypln\u011bn\u00fdmi hodnotami bude vypadat n\u00e1sledovn\u011b:<br \/>\n<img decoding=\"async\" alt=\"TestMace. Rychl\u00fd start\" src=\"\/wp-content\/uploads\/2019\/12\/9abd888cbf96e53b633e8f0fd3389297.jpg\" style=\"display:block;margin: 0 auto;\" \/><\/li>\n<li>Vypnout tuto hlavi\u010dku z po\u017eadavku p\u0159ihl\u00e1\u0161en\u00ed. To je pochopiteln\u00e9: v dob\u011b p\u0159ihl\u00e1\u0161en\u00ed je\u0161t\u011b nem\u00e1me token a t\u00edmto po\u017eadavkem si ho pr\u00e1v\u011b vytvo\u0159\u00edme. Proto v rozhran\u00ed po\u017eadavku p\u0159ihl\u00e1\u0161en\u00ed na z\u00e1lo\u017ece <strong>Headers<\/strong> v oblasti <strong>Inherited<\/strong> od\u0161krtneme za\u0161krt\u00e1vac\u00ed pol\u00ed\u010dko u hlavi\u010dky Authorization. <\/li>\n<\/ol>\n<p><\/p>\n<p>Na tom je to v\u0161echno. Nyn\u00ed bude hlavi\u010dka autorizace p\u0159id\u00e1na ke v\u0161em po\u017eadavk\u016fm, kter\u00e9 jsou potomky uzlu projektu, s v\u00fdjimkou uzlu p\u0159ihl\u00e1\u0161en\u00ed. To znamen\u00e1, \u017ee v t\u00e9to f\u00e1zi u\u017e m\u00e1me sc\u00e9n\u00e1\u0159 p\u0159ipraven\u00fd a zb\u00fdv\u00e1 ho pouze spustit. Spustit sc\u00e9n\u00e1\u0159 lze v\u00fdb\u011brem polo\u017eky <strong>Spustit<\/strong> v kontextov\u00e9m menu uzlu projektu. <\/p>\n<p><\/p>\n<h2 id=\"proveryaem-korrektnost-sozdaniya-posta\">Ov\u011b\u0159ujeme spr\u00e1vnost vytvo\u0159en\u00ed p\u0159\u00edsp\u011bvku<\/h2>\n<p><\/p>\n<p>V t\u00e9to f\u00e1zi n\u00e1\u0161 sc\u00e9n\u00e1\u0159 um\u00ed p\u0159ihl\u00e1sit a pomoc\u00ed autoriza\u010dn\u00edho tokenu vytvo\u0159it p\u0159\u00edsp\u011bvek. Je v\u0161ak nutn\u00e9 se ujistit, \u017ee nov\u011b vytvo\u0159en\u00fd p\u0159\u00edsp\u011bvek m\u00e1 spr\u00e1vn\u00e9 jm\u00e9no. To znamen\u00e1, \u017ee v podstat\u011b zb\u00fdv\u00e1 ud\u011blat n\u00e1sleduj\u00edc\u00ed:<\/p>\n<p><\/p>\n<ul>\n<li>Odeslat po\u017eadavek na z\u00edsk\u00e1n\u00ed p\u0159\u00edsp\u011bvku podle id, <\/li>\n<li>Ov\u011b\u0159it, \u017ee jm\u00e9no, kter\u00e9 p\u0159i\u0161lo ze serveru, odpov\u00edd\u00e1 jm\u00e9nu p\u0159edan\u00e9mu p\u0159i vytv\u00e1\u0159en\u00ed p\u0159\u00edsp\u011bvku<\/li>\n<\/ul>\n<p><\/p>\n<p>Pod\u00edvejme se na prvn\u00ed krok. Proto\u017ee hodnota id se ur\u010duje b\u011bhem b\u011bhu skriptu, je nutn\u00e9 vytvo\u0159it dynamickou prom\u011bnnou (pojmenujme ji <code>postId<\/code>) z uzlu <strong>vytvo\u0159it-p\u0159\u00edsp\u011bvek<\/strong> na \u00farovni uzlu projektu. Jak to ud\u011blat ji\u017e v\u00edme, sta\u010d\u00ed se obr\u00e1tit na sekci <strong>Ukl\u00e1d\u00e1me token do prom\u011bnn\u00e9<\/strong>. Zb\u00fdv\u00e1 pouze vytvo\u0159it po\u017eadavek na z\u00edsk\u00e1n\u00ed p\u0159\u00edsp\u011bvku podle tohoto id. K tomu vytvo\u0159\u00edme RequestStep <strong>get-post<\/strong> s n\u00e1sleduj\u00edc\u00edmi parametry:<\/p>\n<p><\/p>\n<ul>\n<li>Typ po\u017eadavku: GET<\/li>\n<li>URL: ${domain}\/posts\/${$dynamicVar.postId}<\/li>\n<\/ul>\n<p><\/p>\n<p>Pro realizaci druh\u00e9ho kroku se mus\u00edme sezn\u00e1mit s <noindex><a rel=\"nofollow\" href=\"https:\/\/docs-ru.testmace.com\/node-types\/assertion\">Assertion<\/a><\/noindex> uzlem. Assertion uzel je uzel, kter\u00fd umo\u017e\u0148uje ps\u00e1t kontroly pro ur\u010dit\u00e9 po\u017eadavky. Ka\u017ed\u00fd assertion uzel m\u016f\u017ee obsahovat n\u011bkolik tvrzen\u00ed (kontrol). Podrobn\u011bji o v\u0161ech typech assertion\u016f se m\u016f\u017eete do\u010d\u00edst v na\u0161\u00ed <noindex><a rel=\"nofollow\" href=\"https:\/\/docs-ru.testmace.com\/node-types\/assertion\">dokumentaci<\/a><\/noindex>. Budeme pou\u017e\u00edvat <code>Compare<\/code> asserci s oper\u00e1torem <code>equal.<\/code>Existuje n\u011bkolik zp\u016fsob\u016f, jak vytv\u00e1\u0159et assertiony:<\/p>\n<p><\/p>\n<ol>\n<li>Dlouh\u00fd. Ru\u010dn\u011b z kontextov\u00e9ho menu RequestStep uzlu vytvo\u0159te uzel Assertion. Do vytvo\u0159en\u00e9ho uzlu Assertion p\u0159idejte po\u017eadovan\u00fd assertion a vypl\u0148te pole.<\/li>\n<li>Rychl\u00fd. Vytvo\u0159te uzel Assertion spolu s assertionem z odpov\u011bdi RequestStep uzlu pomoc\u00ed kontextov\u00e9ho menu.<\/li>\n<\/ol>\n<p><\/p>\n<p>Vyu\u017eijeme druhou metodu. Takto to bude vypadat pro n\u00e1\u0161 p\u0159\u00edpad.<\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"TestMace. Rychl\u00fd start\" src=\"\/wp-content\/uploads\/2019\/12\/7f1d81669cb4c10db5f0afa3bf04eddf.jpg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Pro ty, kte\u0159\u00ed nepochopili, zde se d\u011bje n\u00e1sleduj\u00edc\u00ed:<\/p>\n<p><\/p>\n<ol>\n<li>Ud\u011bl\u00e1te po\u017eadavek v uzlu <strong>get-post<\/strong><\/li>\n<li>Na z\u00e1lo\u017ece <strong>Parsed<\/strong> odpov\u011bdi vyvol\u00e1te kontextov\u00e9 menu a vyberete <strong>Vytvo\u0159it assertion<\/strong> -&gt; <strong>Compare<\/strong> -&gt; <strong>Rovn\u00fd<\/strong><\/li>\n<\/ol>\n<p><\/p>\n<p>Gratuluji, vytvo\u0159ili jsme prvn\u00ed test! Je to jednoduch\u00e9, \u017ee? Te\u010f m\u016f\u017eete spustit skript cel\u00fd a u\u017e\u00edvat si v\u00fdsledek. Zb\u00fdv\u00e1 jen trochu refaktorovat a vy\u010dlenit <code>title<\/code> do samostatn\u00e9 prom\u011bnn\u00e9. Ale to nech\u00e1me na v\u00e1s jako dom\u00e1c\u00ed \u00fakol)<\/p>\n<p><\/p>\n<h1 id=\"zaklyuchenie\">Z\u00e1v\u011br<\/h1>\n<p><\/p>\n<p>V t\u00e9to p\u0159\u00edru\u010dce jsme vytvo\u0159ili plnohodnotn\u00fd skript a z\u00e1rove\u0148 p\u0159ehled n\u011bkter\u00fdch funkc\u00ed na\u0161eho produktu. Samoz\u0159ejm\u011b jsme nevyu\u017eili zdaleka ve\u0161kerou funkcionalitu a v n\u00e1sleduj\u00edc\u00edch \u010dl\u00e1nc\u00edch provedeme podrobn\u00fd p\u0159ehled mo\u017enost\u00ed TestMace. Sledujte aktualizace!<\/p>\n<p><\/p>\n<p>P.S. Pro ty, kte\u0159\u00ed se necht\u011bj\u00ed reprodukovat v\u0161echny kroky, jsme laskav\u011b vytvo\u0159ili <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/TestMace\/testmace-quick-start-project\">repuzit\u00e1\u0159e<\/a><\/noindex> s projektem z \u010dl\u00e1nku. Otev\u0159\u00edt ho m\u016f\u017eete pomoc\u00ed <strong>Soubor<\/strong> -&gt; <strong>Otev\u0159\u00edt projekt<\/strong> a vyberte slo\u017eku Project.<\/p>\n<p>Zdroj: <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-news"],"aioseo_notices":[],"aioseo_head":"\n\t\t<!-- All in One SEO 5.0.3 - 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\/cs\/blog\/news\/testmace-bystryj-start\" \/>\n\t\t<meta name=\"generator\" content=\"All in One SEO (AIOSEO) 5.0.3\" \/>\n\t\t<meta property=\"og:locale\" content=\"cs_CZ\" \/>\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\/cs\/blog\/news\/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. Rychl\u00fd start | ProHoster","description":"Ahoj v\u0161ichni.","canonical_url":"https:\/\/prohoster.info\/cs\/blog\/news\/testmace-bystryj-start","robots":"max-image-preview:large","keywords":"","webmasterTools":{"miscellaneous":""},"schema":null,"og:locale":"cs_CZ","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\/cs\/blog\/news\/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\/cs\/wp-json\/wp\/v2\/posts\/54167","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/prohoster.info\/cs\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/prohoster.info\/cs\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/prohoster.info\/cs\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/prohoster.info\/cs\/wp-json\/wp\/v2\/comments?post=54167"}],"version-history":[{"count":0,"href":"https:\/\/prohoster.info\/cs\/wp-json\/wp\/v2\/posts\/54167\/revisions"}],"wp:attachment":[{"href":"https:\/\/prohoster.info\/cs\/wp-json\/wp\/v2\/media?parent=54167"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/prohoster.info\/cs\/wp-json\/wp\/v2\/categories?post=54167"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/prohoster.info\/cs\/wp-json\/wp\/v2\/tags?post=54167"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}