<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="sk">
	<id>http://www.kiwiki.info/index.php?action=history&amp;feed=atom&amp;title=N%C3%A1vrh_a_implement%C3%A1cia_aplik%C3%A1cie_SAPI</id>
	<title>Návrh a implementácia aplikácie SAPI - História úprav</title>
	<link rel="self" type="application/atom+xml" href="http://www.kiwiki.info/index.php?action=history&amp;feed=atom&amp;title=N%C3%A1vrh_a_implement%C3%A1cia_aplik%C3%A1cie_SAPI"/>
	<link rel="alternate" type="text/html" href="http://www.kiwiki.info/index.php?title=N%C3%A1vrh_a_implement%C3%A1cia_aplik%C3%A1cie_SAPI&amp;action=history"/>
	<updated>2026-05-07T23:23:12Z</updated>
	<subtitle>História úprav pre túto stránku na wiki</subtitle>
	<generator>MediaWiki 1.34.0</generator>
	<entry>
		<id>http://www.kiwiki.info/index.php?title=N%C3%A1vrh_a_implement%C3%A1cia_aplik%C3%A1cie_SAPI&amp;diff=12859&amp;oldid=prev</id>
		<title>Juraj: Zamkol stránku „Návrh a implementácia aplikácie SAPI“ ([Úprava=Povoliť iba správcom] (na neurčito) [Presun=Povoliť iba správcom] (na neurčito))</title>
		<link rel="alternate" type="text/html" href="http://www.kiwiki.info/index.php?title=N%C3%A1vrh_a_implement%C3%A1cia_aplik%C3%A1cie_SAPI&amp;diff=12859&amp;oldid=prev"/>
		<updated>2020-09-27T20:05:20Z</updated>

		<summary type="html">&lt;p&gt;Zamkol stránku „&lt;a href=&quot;/index.php/N%C3%A1vrh_a_implement%C3%A1cia_aplik%C3%A1cie_SAPI&quot; title=&quot;Návrh a implementácia aplikácie SAPI&quot;&gt;Návrh a implementácia aplikácie SAPI&lt;/a&gt;“ ([Úprava=Povoliť iba správcom] (na neurčito) [Presun=Povoliť iba správcom] (na neurčito))&lt;/p&gt;
&lt;table class=&quot;diff diff-contentalign-left&quot; data-mw=&quot;interface&quot;&gt;
				&lt;tr class=&quot;diff-title&quot; lang=&quot;sk&quot;&gt;
				&lt;td colspan=&quot;1&quot; style=&quot;background-color: #fff; color: #222; text-align: center;&quot;&gt;← Staršia verzia&lt;/td&gt;
				&lt;td colspan=&quot;1&quot; style=&quot;background-color: #fff; color: #222; text-align: center;&quot;&gt;Verzia zo dňa a času 20:05, 27. september 2020&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-notice&quot; lang=&quot;sk&quot;&gt;&lt;div class=&quot;mw-diff-empty&quot;&gt;(Žiaden rozdiel)&lt;/div&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;</summary>
		<author><name>Juraj</name></author>
		
	</entry>
	<entry>
		<id>http://www.kiwiki.info/index.php?title=N%C3%A1vrh_a_implement%C3%A1cia_aplik%C3%A1cie_SAPI&amp;diff=12858&amp;oldid=prev</id>
		<title>Juraj na 20:04, 27. september 2020</title>
		<link rel="alternate" type="text/html" href="http://www.kiwiki.info/index.php?title=N%C3%A1vrh_a_implement%C3%A1cia_aplik%C3%A1cie_SAPI&amp;diff=12858&amp;oldid=prev"/>
		<updated>2020-09-27T20:04:58Z</updated>

		<summary type="html">&lt;p&gt;&lt;/p&gt;
&lt;table class=&quot;diff diff-contentalign-left&quot; data-mw=&quot;interface&quot;&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;tr class=&quot;diff-title&quot; lang=&quot;sk&quot;&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #222; text-align: center;&quot;&gt;← Staršia verzia&lt;/td&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #222; text-align: center;&quot;&gt;Verzia zo dňa a času 20:04, 27. september 2020&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l274&quot; &gt;Riadok 274:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Riadok 274:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;lt;span id=&amp;quot;testNesp&amp;quot; label=&amp;quot;testNesp&amp;quot;&amp;gt;[testNesp]&amp;lt;/span&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;lt;span id=&amp;quot;testNesp&amp;quot; label=&amp;quot;testNesp&amp;quot;&amp;gt;[testNesp]&amp;lt;/span&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot;&gt; &lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;{| class=wikitable&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot;&gt; &lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;|-&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot;&gt; &lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;|&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot;&gt; &lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;!Kategória &lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot;&gt; &lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;!Popis&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot;&gt; &lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;!Výsledok&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot;&gt; &lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;|-&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot;&gt; &lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;|HN1 &lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot;&gt; &lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;|    HTTP metóda GET &lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot;&gt; &lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;|    Testovanie vrátenia chybového hlásenia, \\testovanie času odpovede \\a testovanie vráteného stavového kódu 400. &lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot;&gt; &lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;|    Funguje správne&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot;&gt; &lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;|-&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot;&gt; &lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;|HN2 &lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot;&gt; &lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;|    HTTP metóda PUT  &lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot;&gt; &lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;|    Testovanie vrátenia chybového hlásenia, \\testovanie času odpovede \\a testovanie vráteného stavového kódu 400. &lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot;&gt; &lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;|    Funguje správne&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot;&gt; &lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;|-&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot;&gt; &lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;|HN3 &lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot;&gt; &lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;|    HTTP metóda POST &lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot;&gt; &lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;|    Testovanie vrátenia chybového hlásenia, \\testovanie času odpovede \\a testovanie vráteného stavového kódu 400. &lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot;&gt; &lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;|    Vracia nesprávne \\chybové hlásenie&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot;&gt; &lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;|-&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot;&gt; &lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;|HN4 &lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot;&gt; &lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;|    HTTP metóda DELETE &lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot;&gt; &lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;|    Testovanie vrátenia chybového hlásenia, \\testovanie času odpovede \\a testovanie vráteného stavového kódu 400. &lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot;&gt; &lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;|    Funguje správne&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot;&gt; &lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;|}&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;'''Algoritmy zabezpečenia s nesprávne zadanými parametrami'''&amp;lt;br /&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;'''Algoritmy zabezpečenia s nesprávne zadanými parametrami'''&amp;lt;br /&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l280&quot; &gt;Riadok 280:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Riadok 307:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;lt;span id=&amp;quot;testSec2&amp;quot; label=&amp;quot;testSec2&amp;quot;&amp;gt;[testSec2]&amp;lt;/span&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;lt;span id=&amp;quot;testSec2&amp;quot; label=&amp;quot;testSec2&amp;quot;&amp;gt;[testSec2]&amp;lt;/span&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot;&gt; &lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;{| class=wikitable&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot;&gt; &lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;|-&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot;&gt; &lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;|&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot;&gt; &lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;!Kategória &lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot;&gt; &lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;!Popis&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot;&gt; &lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;!Výsledok&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot;&gt; &lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;|-&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot;&gt; &lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;|BN1&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot;&gt; &lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;|    Jednoduchá \\Autentifikácia&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot;&gt; &lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;|    Zadané nesprávne meno a heslo, testovanie času odpovede a testovanie vráteného stavového kódu 401.&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot;&gt; &lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;|    Funguje správne&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot;&gt; &lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;|-&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot;&gt; &lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;|BN2&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot;&gt; &lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;|    Webový token JSON&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot;&gt; &lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;|    Zadaný nesprávny token, testovanie času odpovede a testovanie vráteného stavového kódu 401.&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot;&gt; &lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;|    Vracia nesprávny stavový kód&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot;&gt; &lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;|-&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot;&gt; &lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;|BN3&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot;&gt; &lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;|   API Klúč&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot;&gt; &lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;|    Zadaný nesprávny API kľúč, testovanie času odpovede a testovanie vráteného stavového kódu 401.&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot;&gt; &lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;|    Funguje správne&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot;&gt; &lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;|-&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot;&gt; &lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;|BN4&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot;&gt; &lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;|    OAuth 2.0&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot;&gt; &lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;|    Zadaný nesprávny token serveru tretej strany, testovanie času odpovede a testovanie vráteného stavového kódu 401.&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot;&gt; &lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;|    Funguje správne&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot;&gt; &lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;|}&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;'''Ukážka kódu testovania s nesprávne zadanými parametrami'''&amp;lt;br /&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;'''Ukážka kódu testovania s nesprávne zadanými parametrami'''&amp;lt;br /&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l310&quot; &gt;Riadok 310:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Riadok 364:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;'''Výsledok testovania'''&amp;lt;br /&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;'''Výsledok testovania'''&amp;lt;br /&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;Testovaním sa overili koncové body pre HTTP metódy, koncové body pre algoritmy zabezpečenia a zistili sa určité nedostatky. HTTP metóda PUT so správne zadanými parametrami vracala nesprávny stavový kód, HTTP metóda POST s nesprávne zadanými parametrami vracala nesprávne chybové hlásenie a koncový bod pre webový token JSON s nesprávne zadanými parametrami vracal nesprávny stavový kód. Tieto chyby nevytvárali závažný funkcionálny alebo zabezpečovací problém, boli v kóde odstránené a nahradené správnymi údajmi podľa návrhu API. Po následnom testovaní všetky koncové body spĺňali kritériá návrhu.&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;Testovaním sa overili koncové body pre HTTP metódy, koncové body pre algoritmy zabezpečenia a zistili sa určité nedostatky. HTTP metóda PUT so správne zadanými parametrami vracala nesprávny stavový kód, HTTP metóda POST s nesprávne zadanými parametrami vracala nesprávne chybové hlásenie a koncový bod pre webový token JSON s nesprávne zadanými parametrami vracal nesprávny stavový kód. Tieto chyby nevytvárali závažný funkcionálny alebo zabezpečovací problém, boli v kóde odstránené a nahradené správnymi údajmi podľa návrhu API. Po následnom testovaní všetky koncové body spĺňali kritériá návrhu.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot;&gt; &lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot;&gt; &lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;= Záver =&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot;&gt; &lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot;&gt; &lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;Zámerom bakalárskej práce bolo navrhnúť aplikačné programové rozhranie, vhodne ho zabezpečiť a otestovať. Pri zabezpečení bolo využitých viacero zabezpečovacích algoritmov, a to jednoduchá autentifikácia, API kľúč, webový token JSON a OAuth 2.0. Testovanie prebiehalo na základe špecifikácie určenej pri návrhu s využitím programov Postman a Testmace a programovacieho jazyka JavaScript. Funkčnosť zabezpečenia aplikačného programového rozhrania bolo potrebné preukázať vhodným spôsobom, preto bola vytvorená aplikačná časť vo frameworku Angular, ktorá s navrhnutým aplikačným programovým rozhraním komunikovala.&amp;lt;br /&amp;gt;&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot;&gt; &lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;V úvode bakalárskej práce bolo potrebné oboznámiť sa s tým, ako aplikačné programové rozhranie funguje a ako sa navrhuje. Teoretické poznatky získané pre návrh boli veľmi dôležité, pretože každé aplikačné programové rozhranie musí spĺňať určité kritéria na základe špecifikácie. Ďalším krokom bolo oboznámenie sa s testovaním, a to konkrétne aké metódy je možné využiť a pomocou akých programov tieto metódy aplikovať. Teoretické poznatky bolo potrebné získať aj z oblasti zabezpečenia. To zahŕňalo identifikáciu najviac využívaných zabezpečovacích algoritmov, ich fungovanie a možnosti integrácie. Ďalej nasledovala analýza aplikácie, kde sa vytvoril dátový model, určili sa funkčné a nefunkčné požiadavky pre aplikačné programové rozhranie a aj pre aplikačnú časť. Na záver bolo potrebné vybrať vhodné technológie pre návrh a implementáciu aplikačného programového rozhrania, pre aplikačnú časť a testovanie. Následne samotný návrh a implementáciu zrealizovať.&amp;lt;br /&amp;gt;&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot;&gt; &lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;Výsledkom práce je funkčná aplikácia s možnosťou výberu zabezpečenia. Aplikácia komunikuje s aplikačným programovým rozhraním, ktorého funkcionalita bola otestovaná na základe testov funkčnosti a bezpečnosti.&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot;&gt; &lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot;&gt; &lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;=Zoznam použitej literatúry=&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot;&gt; &lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;[1] Altexsoft blog. What is API: Definition, Types, Specifications, Documentation. url: https://www.altexsoft.com/blog/engineering/what-is-api-definition-types-specifications-documentation/. (vyhľadané: 8.12.2019).&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot;&gt; &lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot;&gt; &lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;[2] Alerta blog. Different types of Application Program Interfaces (APIs). url: https://www.alertra.com/articles/different-types-application-program-interfaces-apis. (vyhľadané: 8.12.2019).&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot;&gt; &lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot;&gt; &lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;[3] MuleSoft. What is a REST API. url: https://www.mulesoft.com/resources/api/what-is-rest-api-design. (vyhľadané: 27.12.2019).&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot;&gt; &lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot;&gt; &lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;[4] World Wide Web Consortium. Relationship to the World Wide Web and REST Architectures. url: https://www.w3.org/TR/2004/NOTE-ws-arch-20040211/#relwwwrest. (vyhľadané: 8.12.2019).&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot;&gt; &lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot;&gt; &lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;[5] Roy Fielding. Request Methods. url: https://tools.ietf.org/html/rfc7231#section-4. (vyhľadané: 8.12.2019).&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot;&gt; &lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot;&gt; &lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;[6] Fermesk Rashidi. What is RESTful API? url: https://www.doprax.com/content/What-is-restful-API. (vyhľadané: 20.12.2019).&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot;&gt; &lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot;&gt; &lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;[7] TheHungryBrain. REST API Architectural Constraints. url: https://www.geeksforgeeks.org/rest-api-architectural-constraints/. (vyhľadané: 27.12.2019).&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot;&gt; &lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot;&gt; &lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;[8] SmartBear. API Endpoints - What Are They? Why Do They Matter? url: https://smartbear.com/learn/performance-monitoring/api-endpoints/. (vyhľadané: 27.12.2019).&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot;&gt; &lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot;&gt; &lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;[9] Dilanka Muthukumarana. RESTful API Design Best Practices. url: https://medium.com/@dilankam/restful-api-design-best-practices-principles-ded471f573f3. (vyhľadané: 27.12.2019).&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot;&gt; &lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot;&gt; &lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;[10] J. Gettys a kol. R. Fielding UC. Irvine. HTTP Message. url: https://www.w3.org/Protocols/rfc2616/rfc2616.html. (vyhľadané: 21.12.2019).&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot;&gt; &lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot;&gt; &lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;[11] RestfulApi contributors. REST API. url: https://restfulapi.net/. (vyhľadané: 21.12.2019).&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot;&gt; &lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot;&gt; &lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;[12] MDN contributors. HTTP request methods. url: https://developer.mozilla.org/en-US/docs/Web/HTTP/Methods. (vyhľadané: 20.12.2019).&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot;&gt; &lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot;&gt; &lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;[13] WHATWG community. Forms. url: https://html.spec.whatwg.org/multipage/forms.html. (vyhľadané: 21.12.2019).&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot;&gt; &lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot;&gt; &lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;[14] SmartBear Team. What is API testing. url: https://smartbear.com/solutions/api-testing/. (vyhľadané: 18.3.2020).&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot;&gt; &lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot;&gt; &lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;[15] Katalon Team. API Testing. url: https://www.katalon.com/api-testing/ (vyhľadané: 18.3.2020).&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot;&gt; &lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot;&gt; &lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;[16] Guru99 Team. Testing. url: https://www.guru99.com/testing. (vyhľadané: 18.3.2020).&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot;&gt; &lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot;&gt; &lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;[17] TestingHelp community. Reliability Testing. url: https://www.softwaretestinghelp.com/reliability-testing/. (vyhľadané: 18.3.2020).&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot;&gt; &lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot;&gt; &lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;[18] Margaret Rouse. Authentication. url: https://searchsecurity.techtarget.com/definition/authentication. (vyhľadané: 15.1.2020).&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot;&gt; &lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot;&gt; &lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;[19] Joseph Dunno. Autorizácia a autentifikácia v modernom webovom priestore. url: https://www.odyzeo.com/blog/autorizacia-a-autentifikacia-v-modernom-webovom-priestore. (vyhľadané: 15.1.2020).&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot;&gt; &lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot;&gt; &lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;[20] RestCase contributors. REST API and beyond. url: https://blog.restcase.com/ (vyhľadané: 15.1.2020).&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot;&gt; &lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot;&gt; &lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;[21] Kristopher Sandoval. 3 Common Methods of API Authentication Explained. url: https://nordicapis.com/3-common-methods-api-authentication-explained/. (vyhľadané: 15.1.2020).&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot;&gt; &lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot;&gt; &lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;[22] JWT documentation. Introduction to JSON Web Tokens. url: https://jwt.io/introduction/. (vyhľadané: 15.1.2020).&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot;&gt; &lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot;&gt; &lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;[23] Rob Sobers. What is OAuth? Definition and How it Works. url: https://www.varonis.com/blog/what-is-oauth/. (vyhľadané: 15.1.2020).&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot;&gt; &lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot;&gt; &lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;[24] Synopsys Editorial Team. What’s the difference? OAuth 1.0 vs OAuth 2.0. url: https://www.synopsys.com/blogs/software-security/oauth-2-0-vs-oauth-1-0/. (vyhľadané: 15.1.2020).&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;</summary>
		<author><name>Juraj</name></author>
		
	</entry>
	<entry>
		<id>http://www.kiwiki.info/index.php?title=N%C3%A1vrh_a_implement%C3%A1cia_aplik%C3%A1cie_SAPI&amp;diff=12857&amp;oldid=prev</id>
		<title>Juraj: Vytvorená stránka „Kategória:Študentské práceKategória:Bakalárske práceKategória:Informatika  {{Praca_uvod|4|Návrh, zabezpečenie a testovanie aplikačného programov…“</title>
		<link rel="alternate" type="text/html" href="http://www.kiwiki.info/index.php?title=N%C3%A1vrh_a_implement%C3%A1cia_aplik%C3%A1cie_SAPI&amp;diff=12857&amp;oldid=prev"/>
		<updated>2020-09-27T19:54:40Z</updated>

		<summary type="html">&lt;p&gt;Vytvorená stránka „&lt;a href=&quot;/index.php/Kateg%C3%B3ria:%C5%A0tudentsk%C3%A9_pr%C3%A1ce&quot; title=&quot;Kategória:Študentské práce&quot;&gt;Kategória:Študentské práce&lt;/a&gt;&lt;a href=&quot;/index.php/Kateg%C3%B3ria:Bakal%C3%A1rske_pr%C3%A1ce&quot; title=&quot;Kategória:Bakalárske práce&quot;&gt;Kategória:Bakalárske práce&lt;/a&gt;&lt;a href=&quot;/index.php/Kateg%C3%B3ria:Informatika&quot; title=&quot;Kategória:Informatika&quot;&gt;Kategória:Informatika&lt;/a&gt;  {{Praca_uvod|4|Návrh, zabezpečenie a testovanie aplikačného programov…“&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Nová stránka&lt;/b&gt;&lt;/p&gt;&lt;div&gt;[[Kategória:Študentské práce]][[Kategória:Bakalárske práce]][[Kategória:Informatika]]&lt;br /&gt;
&lt;br /&gt;
{{Praca_uvod|4|Návrh, zabezpečenie a testovanie aplikačného programového rozhrania|Princíp aplikačného programového rozhrania|Zabezpečenie aplikačného programového rozhrania|Analýza aplikácie SAPI|Návrh a implementácia aplikácie SAPI}}&lt;br /&gt;
&lt;br /&gt;
=  =&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Pre návrh a následnú implementáciu aplikácie SAPI boli využité rôzne technológie, ktoré sú samostatne rozdelené pre návrh a tvorbu API, aplikačnú časť a testovanie. Technológie boli vybrané tak, aby uľahčovali jednotlivé kroky tvorby a zároveň spĺňali určitý štandard, ktorým sú moderné aplikácie v dnešnej dobe vyvíjané.&lt;br /&gt;
&lt;br /&gt;
== Použité technológie ==&lt;br /&gt;
&lt;br /&gt;
===Návrh a tvorba API===&lt;br /&gt;
;Swagger editor:Swagger je program s otvoreným zdrojovým kódom, ktorý pomáha programátorom navrhnúť, zostaviť, dokumentovať a používať webové služby REST API. Formát, ktorý sa vytvorí v swaggeri je ľahko čitateľný strojovo a aj človekom. Swagger využíva špecifikáciu OpenAPI.&amp;lt;br /&amp;gt;&lt;br /&gt;
;OpenAPI:Definuje štandard pre REST API, ktorý umožňuje človeku a počítaču pochopiť možnosti služby bez prístupu k zdrojovému kódu, dokumentácii alebo prostredníctvom kontroly sieťovej prevádzky. Ak je štandard správne aplikovaný, používateľ môže porozumieť a komunikovať so vzdialenou službou s minimálnym množstvom implementačnej logiky.&amp;lt;br /&amp;gt;&lt;br /&gt;
;Node.js:Multiplatformové programové prostredie, ktoré rozširuje programovací jazyk JavaScirpt a umožňuje jeho využitie aj mimo internetového prehliadača, a to aj na strane servera. Aplikácia v Node.js sa spúšťa v jednom procese bez toho, aby sa pre každú požiadavku vytvorilo nové vlákno. Ak je potrebné vytvoriť vstupno-výstupnú operáciu, ako získanie dáta z databázy, namiesto blokovania vlákna a zbytočného čakania na cykly CPU, Node.js obnoví operácie, keď sa vráti odpoveď. To umožňuje zvládnuť tisíce súčasných pripojení k jednému serveru bez toho, aby sa zaťažil procesor.&amp;lt;br /&amp;gt;&lt;br /&gt;
;Express:Flexibilný webový framework pre Node.js, ktorý poskytuje množstvo funkcií pre webové a mobilné aplikácie. Vďaka veľkému počtu metód HTTP a middleware, ktoré sú k dispozícii, je možné jednoducho a rýchlo vytvárať spoľahlivé a výkonné API.&amp;lt;br /&amp;gt;&lt;br /&gt;
;MySQL:Pre ukladanie dát v databáze sa využíval SQL relačný databázový server MySQL, kde každá databáza je tvorená z viacerých tabuliek, ktoré obsahujú riadky a stĺpce. V riadkoch sú uložené záznamy databázy a stĺpce udávajú dátový typ.&amp;lt;br /&amp;gt;&lt;br /&gt;
===Aplikačná časť===&lt;br /&gt;
;HTML:Hypertextový značkovací jazyk (HyperText Markup Language) je základný stavebný blok pre vytváranie webový stránok. Webový prehliadač obdrží HTML dokumenty od webového serveru alebo z lokálneho úložiska a renderuje dokumenty na multimediálne webové stránky. HTML popisuje sémanticky štruktúru webovej stránky. Využíva sa spolu s technológiou ako kaskádové štýly (Cascading Style Sheets CSS - vzhľad stránky) a skriptovacími jazykmi (JavaScript - funkcionalita stránky).&amp;lt;br /&amp;gt;&lt;br /&gt;
;Bootstrap:Patrí k najpoužívanejším CSS knižniciam a využíva sa na programovanie responzívnych web aplikácií. Má predpripravené a upravené jednotlivé komponenty, ktoré je možné jednoducho implementovať a upravovať vo svojom projekte.&amp;lt;br /&amp;gt;&lt;br /&gt;
;Angular:Platforma pre vývoj aplikácií a vytváranie efektívnych a sofistikovaných jednostránkových aplikácií (single-page apps). Zameriava sa na zjednodušenie vývoja a aj testovanie aplikácie. Využíva programovací jazyk TypeScript (JavaScript s využitím voliteľného statického písania) vytvorený firmou Microsoft.&amp;lt;br /&amp;gt;&lt;br /&gt;
;Okta:Spoločnosť, ktorá poskytuje online riešenia pre zabezpečenie a autentifikáciu moderných aplikácií a integráciu ovládačov identity do aplikácii a webových služieb pre vývojárov. V aplikácií sa bude využívať pre OAuth 2.0 server.&amp;lt;br /&amp;gt;&lt;br /&gt;
===Testovanie===&lt;br /&gt;
;Postman:Platforma Postman slúži pre vytváranie API. Funkcie, ktoré obsahuje urýchľujú každý jeden krok pri vytváraní. Umožňuje vytvorenie žiadosti pre získanie dát z API. Jednou z jeho funkcií je, že umožňuje vytvárať testy pre kontrolu funkcionality API.&amp;lt;br /&amp;gt;&lt;br /&gt;
;Testmace:Program, ktorý slúži na vytváranie žiadostí na API s využitím rôznych premenných a možnosťami autentifikácie. Umožňuje písanie testov pomocou grafického editora a vytváranie automatických testov.&amp;lt;br /&amp;gt;&lt;br /&gt;
;JavaScript:Skriptovací interpretovaný programovací jazyk využívaný hlavne pre tvorbu web stránok, ale je možné ho použiť aj na strane servera a vytváranie testov. Testovacie skripty s využitím Postman aplikácie sú písane v JavaScripte. Vytvorené testy kontrolujú funkcionalitu a spoľahlivosť API.&lt;br /&gt;
&lt;br /&gt;
== Implementácia aplikácie SAPI ==&lt;br /&gt;
&lt;br /&gt;
=== Aplikačné programové rozhranie ===&lt;br /&gt;
&lt;br /&gt;
Základom pri tvorbe aplikácie bol návrh API pre senzorický systém, ktorý vyvíja vedúci bakalárskej práce. V tomto základnom návrhu bolo potrebné vyriešiť problematiku zabezpečenia prístupu do API. Ako prvé sa upravili existujúce koncové body, stavové kódy a dokumentácia návrhu API. Následne sa do návrhu pridali schémy zabezpečenia pre jednotlivé zabezpečovacie algoritmy.&amp;lt;br /&amp;gt;&lt;br /&gt;
Na ukážke kódu [[#yamlCode|[yamlCode]]] je možné vidieť návrh koncového bodu '''/auth/application''' pomocou štandardu OpenApi v editore Swagger. Pri návrhu sa najprv definovalo akú HTTP metódu bude koncový bod využívať (POST). Ďalej sa napísal popis pre daný koncový bod, či žiadosť musí mať telo a aký formát použiť (JSON). Ako posledné sa definovali stavové kódy odpovede. Jednotlivé stavové kódy odkazovali k ďalším schémam, ktoré boli ďalej navrhnuté v editore.&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;yaml&amp;quot;&amp;gt;  &amp;quot;/auth/application/&amp;quot;:&lt;br /&gt;
    post:&lt;br /&gt;
      tags:&lt;br /&gt;
        - Auth&lt;br /&gt;
      summary: Save new application detail&lt;br /&gt;
      description: &amp;quot;Return application details. Only for system admin.&amp;quot;&lt;br /&gt;
      requestBody:&lt;br /&gt;
        required: true&lt;br /&gt;
        content:&lt;br /&gt;
          application/json:&lt;br /&gt;
            schema:&lt;br /&gt;
              ref: &amp;quot;#/components/schemas/LoginApplication&amp;quot;&lt;br /&gt;
      responses:&lt;br /&gt;
        &amp;quot;201&amp;quot;:&lt;br /&gt;
          description: Application inserted&lt;br /&gt;
          content:&lt;br /&gt;
            application/json:&lt;br /&gt;
              schema:&lt;br /&gt;
                ref: &amp;quot;#/components/schemas/StateResponse&amp;quot;&lt;br /&gt;
        &amp;quot;400&amp;quot;:&lt;br /&gt;
          description: Incomplete source information&lt;br /&gt;
          content:&lt;br /&gt;
            application/json:&lt;br /&gt;
              schema:&lt;br /&gt;
                ref: &amp;quot;#/components/schemas/StateResponse&amp;quot;&lt;br /&gt;
        &amp;quot;401&amp;quot;:&lt;br /&gt;
          ref: &amp;quot;#/components/responses/UnauthorizedError&amp;quot;&lt;br /&gt;
        &amp;quot;403&amp;quot;:&lt;br /&gt;
          ref: &amp;quot;#/components/responses/PrivilegiesError&amp;quot;&amp;lt;/source&amp;gt;&lt;br /&gt;
&amp;lt;span id=&amp;quot;yamlCode&amp;quot; label=&amp;quot;yamlCode&amp;quot;&amp;gt;[yamlCode]&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''Generovanie šablóny API'''&amp;lt;br /&amp;gt;&lt;br /&gt;
Po dokončení návrhu sa pomocou nástroja na generovanie, vygenerovala šablóna API pre framework Express na základe napísaného návrhu. Príkaz generátora je možné vidieť na ukážke kódu [[#genCode|[genCode]]]. Ako prvý je príkaz pre spustenie Java aplikácie, v tomto prípade aplikácie pre generátor. Ďalej sa definuje súbor s navrhnutým API (api.yaml), server generovania (nodejs-express-server) a súbor uloženia pre generovaný kód.&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;c&amp;quot;&amp;gt; java -jar openapi-generator-cli-4.2.1.jar generate -i &lt;br /&gt;
 api.yaml -g nodejs-express-server -o ./server&amp;lt;/source&amp;gt;&lt;br /&gt;
&amp;lt;span id=&amp;quot;genCode&amp;quot; label=&amp;quot;genCode&amp;quot;&amp;gt;[genCode]&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Po tomto kroku nasledovala implementácia funkcií pre zabezpečovacie algoritmy a pre koncové body (endpoints). Pri koncových bodoch sa musela riešiť komunikácia s MySQL databázou pre získanie dát, ktoré sú v nej uložené. API bolo spúšťané prostredím Node.js.&amp;lt;br /&amp;gt;&lt;br /&gt;
'''Middleware'''&amp;lt;br /&amp;gt;&lt;br /&gt;
Pre identifikáciu typu zabezpečenia sa využíval takzvaný middleware, ktorého základnú funkcionalitu má implementovaný framework Express. Funkcia middleware spočíva v tom, že každá jedna žiadosť smerovaná na API najprv prejde cez middleware. Ak je žiadosť správna, obsahuje hlavičku autorizácie so správnymi údajmi, posiela sa ďalej na API. API žiadosť spracuje a odosiela vhodnú odpoveď. Príklad fungovania middleware je zobrazený na obrázku [[#obrMiddle|4.1]].&lt;br /&gt;
&lt;br /&gt;
[[File:kris_middleware.png|thumb|453x226px|Obr 4.1 Ukážka fungovania middleware&amp;lt;span label=&amp;quot;obrMiddle&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;]]&lt;br /&gt;
&lt;br /&gt;
Implementovaný middleware pre zistenie typu zabezpečenia je zobrazený na ukážke kódu [[#expressCode|[expressCode]]]. Do premennej authStr sa najprv uloží hlavička žiadosti, následne sa zisťuje o aký typ zabezpečenia ide a volá sa príslušná metóda. Metódy sú definované v inom súbore a ako vstupné parametre sa berú žiadosť (req), odpoveď (res) a skok na ďalší koncový bod (next). Ak hlavička nie je definovaná, API vráti stavový kód 401 (Neoprávnený).&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;js&amp;quot;&amp;gt;    this.app.use((req, res, next) =&amp;gt; {&lt;br /&gt;
        let authStr = req.headers.authorization;&lt;br /&gt;
        if (typeof authStr !== 'undefined') {&lt;br /&gt;
            if (authStr.startsWith(&amp;quot;Basic&amp;quot;)) {&lt;br /&gt;
              return authentication.basicAuth(req, res, next);&lt;br /&gt;
&lt;br /&gt;
            } else if (authStr.startsWith(&amp;quot;Bearer&amp;quot;)) {&lt;br /&gt;
              return authentication.jwtAuth(req, res, next);&lt;br /&gt;
&lt;br /&gt;
            } else if (authStr.startsWith(&amp;quot;ApiKey&amp;quot;)) {&lt;br /&gt;
              return authentication.apiKeyAuth(req, res, next);&lt;br /&gt;
&lt;br /&gt;
            } else if (authStr.startsWith(&amp;quot;Oauth&amp;quot;)) {&lt;br /&gt;
              return authentication.oAuth2(req, res, next);&lt;br /&gt;
            }&lt;br /&gt;
        } else {&lt;br /&gt;
          res.status(401).json({ message: &amp;quot;Unsupported Auth.&amp;quot; });&lt;br /&gt;
        }     &lt;br /&gt;
    });&amp;lt;/source&amp;gt;&lt;br /&gt;
&amp;lt;span id=&amp;quot;expressCode&amp;quot; label=&amp;quot;expressCode&amp;quot;&amp;gt;[expressCode]&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''Definovanie koncového bodu'''&amp;lt;br /&amp;gt;&lt;br /&gt;
Pre každý koncový bod bola podľa návrhu API vytvorená asynchrónna funkcia, ktorá mala rovnaký názov ako koncový bod, a navyše v názve pridanú HTTP metódu, ktorú používa. V bloku try, API vytvára dotaz na MySQL databázu, ktorý v prípade správne zadaných hodnôt vracia výsledok dotazu. Ak je dotaz nesprávny, API vracia chybový stavový kód. Vo výnimke catch sa zachytáva nesprávna žiadosť na koncový bod. Na ukážke kódu [[#expressCode2|[expressCode2]]] môžeme vidieť funkciu pre HTTP metódu GET.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;js&amp;quot;&amp;gt;  static authApplicationIdGET({ id }) {&lt;br /&gt;
    return new Promise(&lt;br /&gt;
      async (resolve) =&amp;gt; {&lt;br /&gt;
        try {&lt;br /&gt;
          let sqlString = &amp;quot;SELECT * FROM apps INNER JOIN servers ON &lt;br /&gt;
          apps.server_id = servers.id WHERE apps.id = ?&amp;quot;;&lt;br /&gt;
          authentication.pool.query(options(sqlString, id), &lt;br /&gt;
          (err, result) =&amp;gt; {&lt;br /&gt;
              if (err) {&lt;br /&gt;
                resolve(Service.rejectResponse({&lt;br /&gt;
                'message': &amp;quot;Internal server error&amp;quot;}));&lt;br /&gt;
              } else if (result.length === 0) {&lt;br /&gt;
                resolve(Service.rejectResponse({&lt;br /&gt;
                'message': &amp;quot;ID doesn't exist&amp;quot;}, 400));&lt;br /&gt;
              } else {&lt;br /&gt;
                resolve(Service.successResponse(result, 200));&lt;br /&gt;
              }&lt;br /&gt;
          }); } catch (e) {&lt;br /&gt;
          resolve(Service.rejectResponse(&lt;br /&gt;
            e.message || 'Invalid input',&lt;br /&gt;
            e.status || 405,&lt;br /&gt;
          )); } }, ); }&amp;lt;/source&amp;gt;&lt;br /&gt;
&amp;lt;span id=&amp;quot;expressCode2&amp;quot; label=&amp;quot;expressCode2&amp;quot;&amp;gt;[expressCode2]&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Aplikačná časť ===&lt;br /&gt;
&lt;br /&gt;
Pre názornú ukážku správnosti fungovania API bola vytvorená aplikačná časť (front-end). Zámerom bolo preukázať funkcionalitu jednotlivých zabezpečovacích algoritmov, ich implementáciu a použitie zabezpečenia pri dotazoch na koncové body. Aplikačná časť je tvorená vo webovom prostredí s využitím webového frameworku Angular. Ten obsahuje funkcie pre HTTP metódy, ktorými je možné vytvárať žiadosti na API. Štruktúra webu, ako tlačidlá, formuláre a odkazy, sú písané v HTML. Vzhľad týchto elementov je tvorený triedami knižnice Boostrap.&amp;lt;br /&amp;gt;&lt;br /&gt;
Na ukážke kódu [[#angularCode|[angularCode]]] je možné vidieť Angular funkciu pre prihlásenie pomocou webového tokenu JSON. Využíva sa HTTP metóda POST, kde sa odosiela meno, heslo a telo žiadosti. API overí používateľa a vráti token. Token sa ukladá do lokálneho úložiska prehliadača a používateľ je presmerovaný na domovskú stránku.&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;js&amp;quot;&amp;gt;  jwtLogin() {&lt;br /&gt;
    this._auth.authPost(this.jwtUsername, this.jwtPassword, this.body)&lt;br /&gt;
    .subscribe(&lt;br /&gt;
          res =&amp;gt; {&lt;br /&gt;
            localStorage.setItem('token', res.token);&lt;br /&gt;
            this._router.navigate(['/homepage']);&lt;br /&gt;
          },&lt;br /&gt;
          err =&amp;gt; alert(&amp;quot;Error&amp;quot;)&lt;br /&gt;
        );&lt;br /&gt;
  }&amp;lt;/source&amp;gt;&lt;br /&gt;
&amp;lt;span id=&amp;quot;angularCode&amp;quot; label=&amp;quot;angularCode&amp;quot;&amp;gt;[angularCode]&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''Úvodná stránka aplikácie SAPI'''&amp;lt;br /&amp;gt;&lt;br /&gt;
Na úvodnej stránke sa demonštrujú jednotlivé metódy zabezpečenia. Používateľ si môže zvoliť, aký typ zabezpečenia použiť, ako je možné vidieť na obrázku [[#obrBasic|4.2]].&amp;lt;br /&amp;gt;&lt;br /&gt;
'''Prihlásenie'''&amp;lt;br /&amp;gt;&lt;br /&gt;
Pri každom type zabezpečenia používateľ zadáva meno a heslo (prebehne jednoduchá autentifikácia). Aplikácia odosiela žiadosť na koncový bod API určený pre prihlásenie. V hlavičke žiadosti sa odosiela zašifrované meno a heslo. V tele žiadosti sa odosiela informácia, aký typ zabezpečenia si používateľ zvolil. Táto informácia je určená pre koncový bod prihlásenia. Middleware z hlavičky rozpozná, že ide o jednoduchú autentifikáciu a zavolá príslušnú funkciu. Funkcia pre jednoduchú autentifikáciu vyhľadá meno používateľa v databáze, rozšifruje heslo a porovná ho s heslom zo žiadosti. Ak sú údaje správne, API pokračuje na koncový bod prihlásenia. V prípade nesprávnych údajov, API odosiela odpoveď s chybovým hlásením. Aplikácia odpoveď spracuje a zobrazí chybové hlásenie.&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[File:kris_webUvod.png|thumb|491x340px|Obr. 4.2 Úvodná stránka aplikácie SAPI&amp;lt;span label=&amp;quot;obrBasic&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;]]&lt;br /&gt;
&lt;br /&gt;
'''Odpoveď koncového bodu prihlásenia'''&amp;lt;br /&amp;gt;&lt;br /&gt;
Koncový bod pre prihlásenie si z tela žiadosti vytiahne informáciu o zvolenom type zabezpečenia používateľom a na základe toho odosiela odpoveď. Pri jednoduchej autentifikácii ako odpoveď odosiela zakódované meno a heslo. Pri webovom tokene JSON odosiela vygenerovaný token a pri API kľúči vygenerovaný API kľúč. Aplikácia tieto odpovede spracuje a údaje pre overenie uloží do lokálneho úložiska prehliadača. Pri štandarde OAuth 2.0 využíva server tretej strany (Okta), na ktorý je používateľ presmerovaný a zadáva meno a heslo. Následne po úspešnom overení server Okta vracia token, ktorý aplikácia ukladá do lokálneho úložiska. Presmerovanie na Okta server môžeme vidieť na obrázku [[#obrOauth|1.3]].&lt;br /&gt;
&lt;br /&gt;
[[File:kris_webOauth.png|thumb|604x434px|Obr. 4.3 Overenie pomocou serveru Okta&amp;lt;span label=&amp;quot;obrOauth&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;]]&lt;br /&gt;
&lt;br /&gt;
'''Overovanie po prihlásení'''&amp;lt;br /&amp;gt;&lt;br /&gt;
Po úspešnom prihlásení každá nová žiadosť na API obsahuje hlavičku autorizácie na základe zvoleného typu zabezpečenia. V API middleware rozozná o aký typ zabezpečenia ide a zavolá príslušnú funkciu. Funkcia pre webový token JSON overuje platnosť tokenu a dešifruje ho na základe zabezpečovacieho kľúča. Funkcia pre API kľúč kontroluje, či je zadaný API kľúč pridelený používateľovi. Funkcia pre OAuth 2.0 odosiela token na overovací server Okta. Ak overenie prebehne v poriadku, žiadosť pokračuje na prislušný koncový bod. V aplikácií sa využíva koncový bod /auth/application s HTTP metódami GET, PUT, POST, DELETE a pracuje sa s tabuľkami Aplikácie (Apps) a Servery (Servers).&amp;lt;br /&amp;gt;&lt;br /&gt;
'''Domovská stránka aplikácie SAPI'''&amp;lt;br /&amp;gt;&lt;br /&gt;
Ak sa používateľ úspešne prihlási, je presmerovaný na domovskú stránku (Home). Na tejto stránke môže využiť funkciu pre vypísanie dát do tabuľky na základe zadaného ID aplikácie, prejsť na stránku Aplikácie (Apps) alebo sa odhlásiť (Logout). Po zadaní ID aplikácie a stlačení tlačidla Get, aplikácia odosiela žiadosť HTTP metódou GET na koncový bod. Vo funkcií koncového bodu pre HTTP metódu GET, API vytvára dotaz na databázu pre získanie dát z tabuľky Aplikácie (Apps) a z tabuľky Servery (Servers). Ak je ID aplikácie správne, vracia vybrané dáta späť aplikácií. Dáta do aplikácie prichádzajú asynchrónne a aplikácia ich musí spracovať a uložiť do pola. Následne aplikácia týmito dátami naplní tabuľku pre aplikáciu (App Table) a tabuľku pre server (Server Table). Na základe toho, aké zabezpečenie sa využíva, aplikácia vypíše autorizačnú hlavičku žiadosti. Na obrázku [[#obrHome|1.4]] je možné vidieť, že sa využíva zabezpečenie pomocou webového tokenu JSON.&lt;br /&gt;
&lt;br /&gt;
[[File:kris_webHome.png|thumb|548x359px|Obr 4.4. Domovská stránka aplikácie SAPI&amp;lt;span label=&amp;quot;obrHome&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;]]&lt;br /&gt;
&lt;br /&gt;
'''Stránka Aplikácie'''&amp;lt;br /&amp;gt;&lt;br /&gt;
Na stránke Aplikácie (Apps) sa zobrazuje tabuľka naplnená dátami z databázy. Dáta pochádzajú z tabuľky Aplikácie (Applications). Pri každom načítaní stránky aplikácia odosiela HTTP metódu GET pre získanie dát. Po overení API žiadosť spracuje a vytvára dotaz na databázu pre získanie všetkých dát z tabuľky. Tieto dáta odosiela v odpovedi a aplikácia ich spracuje a zobrazí v tabuľke Dáta Aplikácií (Apps Data). Zobrazovaná tabuľka je určená na ukážku fungovania dotazov na API a HTTP metód (PUT, POST, DELETE). Na stránke sa tiež zobrazí hlavička autorizácie, ktorá sa odosiela v žiadosti na API. Na obrázku [[#obrTable|1.5]] je možné vidieť žiadosť pomocou API kľúča. Používateľ má možnosť kliknúť na tlačidlo Pridaj Dáta (Add Data) pre pridanie dát alebo na tlačidlá pre zmazanie a úpravu dát.&amp;lt;br /&amp;gt;&lt;br /&gt;
'''Tlačidlo Vymaž dáta'''&amp;lt;br /&amp;gt;&lt;br /&gt;
Ak používateľ stlačí tlačidlo Vymaž (na obrázku [[#obrTable|1.5]] červené tlačidlo), zobrazí sa výstražné okno, či chce daný záznam naozaj vymazať. Po kliknutí na tlačidlo OK aplikácia odosiela na API žiadosť s HTTP metódou DELETE spolu s ID aplikácie, ktorá má byť vymazaná. API žiadosť spracuje a zo žiadosti si vyberie ID záznamu, ktorý sa má vymazať. Na databázu vytvára dotaz pre vymazanie dát na základe ID. Aplikácii odosiela odpoveď o vymazaní dát alebo o chybe pri vymazávaní. Aplikácia odpoveď spracuje, pri vymazaní dát z databázy znova načíta stránku bez vymazaného záznamu a pri chybe zobrazí chybové hlásenie.&lt;br /&gt;
&lt;br /&gt;
[[File:kris_webTable.png|thumb|548x359px|Obr. 4.5 Zobrazenie stránky Aplikácie&amp;lt;span label=&amp;quot;obrTable&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;]]&lt;br /&gt;
&lt;br /&gt;
'''Tlačidlo Uprav dáta'''&amp;lt;br /&amp;gt;&lt;br /&gt;
Po stlačení tlačidla Uprav (na obrázku [[#obrTable|1.5]] modré tlačidlo) sa zobrazí modálne okno s vyplneným formulárom, ako je zobrazené na obrázku [[#obrEdit|1.6]]. Používateľ tam má možnosť upraviť dáta konkrétneho záznamu. Po stlačení tlačidla Uprav Dáta (Edit Data) sa odosiela na API požiadavka cez HTTP metódu PUT spolu s upravenými dátami v tele žiadosti. Z tela žiadosti si API vyberie dáta upravené používateľom a odosiela dotaz na databázu pre úpravu dát v tabuľke. Po vykonaní dotazu, API odosiela odpoveď späť aplikácií. Ak úprava dát prebehla v poriadku, aplikácia znova načíta stránku s upravenými dátami. V prípade, že pri úprave nastala chyba, aplikácia chybu vypíše.&amp;lt;br /&amp;gt;&lt;br /&gt;
'''Tlačidlo Pridaj dáta'''&amp;lt;br /&amp;gt;&lt;br /&gt;
Po stlačení tlačidla Pridaj Dáta (Add Data) sa zobrazí modálne okno s formulárom podobne ako na obrázku [[#obrEdit|1.6]] s tým rozdielom, že formulár je prázdny. Po vyplnení dát a stlačení tlačidla Pridaj Dáta (Add Data) sa posiela na API žiadosť s HTTP metódou POST spolu s vyplnenými dátami v tele žiadosti. Z tela žiadosti si API vyberie dáta zadané používateľom. Následne vytvára dotaz na databázu pre pridanie dát do tabuľky. Po vykonaní dotazu, API v odpovedi odosiela informácie o pridaní alebo chybe pri pridávaní dát do databázy. Aplikácia odpoveď spracuje a pri úspešnom pridaní dát znova načíta stránku s pridanými dátami alebo zobrazí chybu pri pridávaní.&lt;br /&gt;
&lt;br /&gt;
[[File:kris_webUprav.png|thumb|377x529px|Obr. 4.6 Modálne okno s formulárom pre úpravu dát&amp;lt;span label=&amp;quot;obrEdit&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;]]&lt;br /&gt;
&lt;br /&gt;
'''Tlačidlo Odhlásenie'''&amp;lt;br /&amp;gt;&lt;br /&gt;
Stlačením tlačidla Odhlásenie (Logout) sa odstránia dáta z lokálneho úložiska a používateľ je presmerovaný na domovskú stránku, kde má možnosť znova si vybrať prihlásenie pomocou jednotlivých typov zabezpečenia. Ak sa používa zabezpečenie s API kľúčom, pri odhlásení aplikácia odosiela žiadosť na API pre odstránenie API kľúča z databázy.&lt;br /&gt;
&lt;br /&gt;
=== Testovanie API ===&lt;br /&gt;
&lt;br /&gt;
Na záver sa vykonalo testovanie aplikačného programového rozhrania. Testovanie spočívalo v kontrole jednotlivých koncových bodov. Zámerom bolo zistiť, či koncové body fungujú správne, to znamená, či vracajú v odpovedi dáta, ktoré majú so správnym stavovým kódom, a či sú správne zabezpečené.&amp;lt;br /&amp;gt;&lt;br /&gt;
'''Postup pri testovaní'''&amp;lt;br /&amp;gt;&lt;br /&gt;
Pri testovaní API, ten kto vykonáva test, nemá prístup ku zdrojovému kódu (black box testovanie). Celý proces sa preto začína naštudovaním dokumentácie návrhu API. Sledujú sa jednotlivé koncové body a to, aké odpovede, dáta a stavové kódy majú vracať pri správnych a aj nesprávnych parametroch žiadosti. Následne sa spraví prvá testovacia žiadosť na API a skúma sa odpoveď. Testovacia žiadosť sa vykoná so správnymi parametrami, ale aj s nesprávnymi (neexistujúce ID aplikácie pri HTTP metóde GET), aby sa skontrolovala odpoveď v obidvoch prípadoch. Správnosť odpovede sa porovnáva s dokumentáciou návrhu API. V poslednom kroku sa manuálne píšu testy. Testy sa píšu pred odoslaním žiadosti a kontrolujú odpoveď na základe toho, aké parametre sa im definovali na testovanie.&amp;lt;br /&amp;gt;&lt;br /&gt;
'''Porovnanie použitých programov'''&amp;lt;br /&amp;gt;&lt;br /&gt;
Použité boli programy Postman a Testmace. Program Postman bol používaný vo väčšej miere. Má lepšiu dokumentáciu k testom a širšie možnosti použitia. S programom Testmace bolo možné otestovať, či sa v odpovedi nachádza konkrétna hodnota alebo porovnanie hodnôt. Viacej možností testovania bolo prístupných len pre platenú verziu a navyše, dokumentáciu k testovaniu nie je na takej úrovni ako pri programe Postman.&amp;lt;br /&amp;gt;&lt;br /&gt;
'''Testovacie scenáre'''&amp;lt;br /&amp;gt;&lt;br /&gt;
Spočívali v kontrole koncových bodov pre jednotlivé HTTP metódy a kontrole koncových bodov zabezpečovacích algoritmov. Testovanie bolo rozdelené do dvoch častí: testovanie so správnymi parametrami a testovanie s nesprávnymi parametrami. Rozdelenie je možné vidieť v tabuľke [[#testScenare|[testScenare]]].&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;testScenare&amp;quot; label=&amp;quot;testScenare&amp;quot;&amp;gt;[testScenare]&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''HTTP metódy so správne zadanými parametrami'''&amp;lt;br /&amp;gt;&lt;br /&gt;
Pre testovanie jednotlivých HTTP metód sa využíval koncový bod '''/auth/application'''. V prípade HTTP metód GET a DELETE bolo zadané ID, ktoré sa nachádzalo v tabuľke Aplikácie (Apps) a v pri metódach PUT a POST sa zadávali všetky údaje podľa návrhu API. Tabuľka [[#testSpravne|[testSpravne]]] bližšie popisuje tieto testovacie scenáre.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;testSpravne&amp;quot; label=&amp;quot;testSpravne&amp;quot;&amp;gt;[testSpravne]&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''Algoritmy zabezpečenia so správne zadanými parametrami'''&amp;lt;br /&amp;gt;&lt;br /&gt;
Pri testovaní koncových bodov zabezpečovacích algoritmov sa zadávali rôzne overovacie údaje. Pre jednoduchú autentifikáciu sa zadávalo správne meno a heslo, pre webový token JSON správny token, pre overenie API kľúčom správny kľúč API a pre OAuth 2.0 token vygenerovaný serverom tretej strany. Kontrolovalo sa, či overenie prebehlo správne a následné presmerovanie na požadovaný koncový bod. Testovacie scenáre zobrazuje tabuľka [[#testSec1|[testSec1]]].&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;testSec1&amp;quot; label=&amp;quot;testSec1&amp;quot;&amp;gt;[testSec1]&amp;lt;/span&amp;gt;&lt;br /&gt;
{|class=wikitable&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
!Kategória&lt;br /&gt;
!Popis &lt;br /&gt;
!Výsledok&lt;br /&gt;
|-&lt;br /&gt;
|BS1&lt;br /&gt;
|Jednoduchá Autentifikácia&lt;br /&gt;
|    Zadané meno a heslo, \\testovanie času odpovede \\a testovanie vráteného stavového kódu 200.&lt;br /&gt;
|   Funguje správne&lt;br /&gt;
|-&lt;br /&gt;
|BS2&lt;br /&gt;
|Webový token JSON&lt;br /&gt;
|    Zadaný token, testovanie času odpovede a testovanie vráteného stavového kódu 200.&lt;br /&gt;
|    Funguje správne&lt;br /&gt;
|-&lt;br /&gt;
|BS3&lt;br /&gt;
|API Klúč&lt;br /&gt;
|    adaný kľúč API, testovanie času odpovede a testovanie vráteného stavového kódu 201.&lt;br /&gt;
|    Funguje správne&lt;br /&gt;
|-&lt;br /&gt;
|BS4&lt;br /&gt;
|OAuth 2.0&lt;br /&gt;
|    Zadaný token serveru tretej strany, testovanie času odpovede a testovanie vráteného stavového kódu 200.&lt;br /&gt;
|    Funguje správne&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
'''Ukážka kódu testovania so správne zadanými parametrami'''&amp;lt;br /&amp;gt;&lt;br /&gt;
Na ukážke kódu [[#testCode|[testCode]]] je možné vidieť testovanie HTTP metódy GET pri zadaní správneho ID, ktoré sa nachádza v tabuľke Aplikácie (Apps). V prvom teste sa kontrolovalo, či stavový kód odpovede je 200 (OK), a či telo odpovede je vo formáte JSON. Ďalšie testy kontrolovali hlavičku odpovede a rýchlosť odpovede, ktorá mala byť menej ako 200ms. Nasledujúci test kontroloval, či zadané ID aplikácie sa rovná ID aplikácii v odpovedi. Ako posledné sa porovnávalo ID servera, ktoré je priradené k aplikácií, s ID v odpovedi. Tým sa skontrolovala správnosť vybratých údajov z databázy.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;js&amp;quot;&amp;gt;pm.test(&amp;quot;Status Code is 200 and has JSON body&amp;quot;, () =&amp;gt; {&lt;br /&gt;
  pm.response.to.not.be.error;&lt;br /&gt;
  pm.response.to.have.status(200);&lt;br /&gt;
  pm.response.to.have.jsonBody();&lt;br /&gt;
  pm.response.to.not.have.jsonBody(&amp;quot;error&amp;quot;);&lt;br /&gt;
});&lt;br /&gt;
pm.test(&amp;quot;Content-Type is present and is &lt;br /&gt;
        equal to application/json&amp;quot;, () =&amp;gt; {&lt;br /&gt;
  pm.response.to.have.header(&amp;quot;Content-Type&amp;quot;);&lt;br /&gt;
  pm.expect(pm.response.headers.get(&amp;quot;Content-Type&amp;quot;)).to.eql(&lt;br /&gt;
    &amp;quot;application/json; charset=utf-8&amp;quot;&lt;br /&gt;
  );&lt;br /&gt;
});&lt;br /&gt;
pm.test(&amp;quot;Response time is less than 200ms&amp;quot;, () =&amp;gt; {&lt;br /&gt;
  pm.expect(pm.response.responseTime).to.be.below(200);&lt;br /&gt;
});&lt;br /&gt;
pm.test(&amp;quot;Path ID is equal to response ID&amp;quot;, () =&amp;gt; {&lt;br /&gt;
  let pathNum = pm.request.url.getPath();&lt;br /&gt;
  let jsonData = pm.response.json();&lt;br /&gt;
  let appId = jsonData[0].apps.id;&lt;br /&gt;
  pm.expect(appId).to.eql(parseInt(pathNum[25]));&lt;br /&gt;
});&lt;br /&gt;
&lt;br /&gt;
pm.test(&amp;quot;Apps server_id is equal to Servers id&amp;quot;, () =&amp;gt; {&lt;br /&gt;
  let jsonData = pm.response.json();&lt;br /&gt;
  let appsServerId = jsonData[0].apps.server_id;&lt;br /&gt;
  let serverId = jsonData[0].servers.id;&lt;br /&gt;
  pm.expect(appsServerId).to.eql(serverId);&lt;br /&gt;
});&amp;lt;/source&amp;gt;&lt;br /&gt;
&amp;lt;span id=&amp;quot;testCode&amp;quot; label=&amp;quot;testCode&amp;quot;&amp;gt;[testCode]&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''HTTP metódy s nesprávne zadanými parametrami'''&amp;lt;br /&amp;gt;&lt;br /&gt;
Testovanie prebiehalo podobne ako pri testovaní so správnymi parametrami s tým rozdielom, že pri HTTP metódach GET a DELETE sa zadalo ID, ktoré sa nenachádza v tabuľke Aplikácie (Apps). Pre HTTP metódy PUT a POST sa vynechal jeden údaj potrebný pre správne vykonanie metódy. Popísane testovacie scenáre je možné vidieť v tabuľke [[#testNesp|[testNesp]]]&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;testNesp&amp;quot; label=&amp;quot;testNesp&amp;quot;&amp;gt;[testNesp]&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''Algoritmy zabezpečenia s nesprávne zadanými parametrami'''&amp;lt;br /&amp;gt;&lt;br /&gt;
Pre testovanie koncových bodov zabezpečovacích algoritmov sa vyplnili nesprávne overovacie údaje alebo sa nevyplnili žiadne overovacie údaje. Tým sa overilo správne fungovanie zabezpečenia API v prípade, že by sa chcel niekto do systému dostať s nesprávnymi údajmi. Tabuľka [[#testSec2|[testSec2]]] bližšie špecifikuje testovacie scenáre.&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;testSec2&amp;quot; label=&amp;quot;testSec2&amp;quot;&amp;gt;[testSec2]&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''Ukážka kódu testovania s nesprávne zadanými parametrami'''&amp;lt;br /&amp;gt;&lt;br /&gt;
Ukážka kód [[#testCode2|[testCode2]]] zobrazuje HTTP metódu GET s nesprávne zadanými parametrami. Stavový kód sa testoval na kód 400 (nesprávna žiadosť) a telo odpovede muselo obsahovať chybové hlásenie a správu o tomto hlásení.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;js&amp;quot;&amp;gt;pm.test(&amp;quot;Status Code is 400 and has JSON body&amp;quot;, () =&amp;gt; {&lt;br /&gt;
  pm.response.to.be.error;&lt;br /&gt;
  pm.response.to.have.status(400);&lt;br /&gt;
  pm.response.to.have.jsonBody();&lt;br /&gt;
  pm.response.to.have.jsonBody(&amp;quot;error&amp;quot;);&lt;br /&gt;
});&lt;br /&gt;
&lt;br /&gt;
pm.test(&amp;quot;Content-Type is present and &lt;br /&gt;
        is equal to application/json&amp;quot;, () =&amp;gt; {&lt;br /&gt;
  pm.response.to.have.header(&amp;quot;Content-Type&amp;quot;);&lt;br /&gt;
  pm.expect(pm.response.headers.get(&amp;quot;Content-Type&amp;quot;)).to.eql(&lt;br /&gt;
    &amp;quot;application/json; charset=utf-8&amp;quot;&lt;br /&gt;
  );&lt;br /&gt;
});&lt;br /&gt;
&lt;br /&gt;
pm.test(&amp;quot;In response is error message and &lt;br /&gt;
        response time is less than 200ms&amp;quot;, () =&amp;gt; {&lt;br /&gt;
    let jsonData = pm.response.json();&lt;br /&gt;
    pm.expect(jsonData.error).to.have.property('message');&lt;br /&gt;
    pm.expect(pm.response.responseTime).to.be.below(200);&lt;br /&gt;
  }&lt;br /&gt;
);&amp;lt;/source&amp;gt;&lt;br /&gt;
&amp;lt;span id=&amp;quot;testCode2&amp;quot; label=&amp;quot;testCode2&amp;quot;&amp;gt;[testCode2]&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''Výsledok testovania'''&amp;lt;br /&amp;gt;&lt;br /&gt;
Testovaním sa overili koncové body pre HTTP metódy, koncové body pre algoritmy zabezpečenia a zistili sa určité nedostatky. HTTP metóda PUT so správne zadanými parametrami vracala nesprávny stavový kód, HTTP metóda POST s nesprávne zadanými parametrami vracala nesprávne chybové hlásenie a koncový bod pre webový token JSON s nesprávne zadanými parametrami vracal nesprávny stavový kód. Tieto chyby nevytvárali závažný funkcionálny alebo zabezpečovací problém, boli v kóde odstránené a nahradené správnymi údajmi podľa návrhu API. Po následnom testovaní všetky koncové body spĺňali kritériá návrhu.&lt;/div&gt;</summary>
		<author><name>Juraj</name></author>
		
	</entry>
</feed>