<?xml version="1.0"?>
<puzzles xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="http://www.0pdd.com/puzzles.xsd" date="2024-10-14T08:35:40+00:00" version="BUILD">
  <puzzle alive="false">
    <issue href="https://github.com/h1alexbel/fakehub/issues/28" closed="2024-07-18T05:18:50+00:00">28</issue>
    <ticket>9</ticket>
    <estimate>25</estimate>
    <role>DEV</role>
    <id>9-8508d2b5</id>
    <lines>31-33</lines>
    <body>Create unit tests for home.rs. We need to create a few unit testes for home endpoints, bootstrapping, and fetching. Don't forget to remove this puzzle.</body>
    <file>src/routes/home.rs</file>
    <author>@l3r8yJ</author>
    <email>l3r8y@duck.com</email>
    <time>2024-06-05T10:10:23Z</time>
    <children/>
  </puzzle>
  <puzzle alive="false">
    <issue href="https://github.com/h1alexbel/fakehub/issues/43" closed="2024-07-11T10:34:18+00:00">43</issue>
    <ticket>13</ticket>
    <estimate>15</estimate>
    <role>DEV</role>
    <id>13-97a91bb1</id>
    <lines>24-27</lines>
    <body>Handle port argument We should process the port argument and pass it to the server on `start` command. Start command should be added also with clap</body>
    <file>cli/src/args.rs</file>
    <author>@h1alexbel</author>
    <email>aliaksei.bialiauski@hey.com</email>
    <time>2024-06-23T16:21:11Z</time>
    <children>
      <puzzle alive="true">
        <issue href="https://github.com/h1alexbel/fakehub/issues/76">76</issue>
        <ticket>43</ticket>
        <estimate>30</estimate>
        <role>DEV</role>
        <id>43-8af1c1b2</id>
        <lines>53-57</lines>
        <body>Enable starts_server integration test. We should enable this integration test that checks whether server starts or not. This test should output success message in info!. For now it does not work. Probably some error with logging configuration. Don't forget to remove this puzzle.</body>
        <file>cli/tests/integration_test.rs</file>
        <author>Aliaksei Bialiauski</author>
        <email>aliaksei.bialiauski@hey.com</email>
        <time>2024-07-11T10:34:14Z</time>
        <children/>
      </puzzle>
    </children>
  </puzzle>
  <puzzle alive="true">
    <issue href="https://github.com/h1alexbel/fakehub/issues/52">52</issue>
    <ticket>41</ticket>
    <estimate>15</estimate>
    <role>DEV</role>
    <id>41-6875de44</id>
    <lines>28-31</lines>
    <body>Add --report argument. Let's add --report option for generating reports in desired formats: We should support following formats: xml, tex, and txt. User should have ability to generate report in multiple formats as well: --report tex,xml,txt.</body>
    <file>cli/src/args.rs</file>
    <author>@h1alexbel</author>
    <email>aliaksei.bialiauski@hey.com</email>
    <time>2024-06-26T11:44:16Z</time>
    <children/>
  </puzzle>
  <puzzle alive="true">
    <issue href="https://github.com/h1alexbel/fakehub/issues/53">53</issue>
    <ticket>41</ticket>
    <estimate>60</estimate>
    <role>DEV</role>
    <id>41-a34da1fd</id>
    <lines>26-28</lines>
    <body>Add function for appending new content into the template. We need to create new function that will append input into the template, thus it will build a detailed report.</body>
    <file>server/src/report/latex.rs</file>
    <author>@h1alexbel</author>
    <email>aliaksei.bialiauski@hey.com</email>
    <time>2024-06-26T11:44:16Z</time>
    <children/>
  </puzzle>
  <puzzle alive="false">
    <issue href="https://github.com/h1alexbel/fakehub/issues/54" closed="2024-10-01T14:38:43+00:00">54</issue>
    <ticket>41</ticket>
    <estimate>60</estimate>
    <role>DEV</role>
    <id>41-8e9aa4b2</id>
    <lines>53-56</lines>
    <body>Add support of @ExtendsWith from JUnit in order to pass expected as test parameter. We should use extensions in order to pass expected as parameters into test. If there is no crate with such functionality - let's develop and release one.</body>
    <file>server/src/report/latex.rs</file>
    <author>@h1alexbel</author>
    <email>aliaksei.bialiauski@hey.com</email>
    <time>2024-06-26T11:44:16Z</time>
    <children/>
  </puzzle>
  <puzzle alive="true">
    <issue href="https://github.com/h1alexbel/fakehub/issues/55">55</issue>
    <ticket>41</ticket>
    <estimate>45</estimate>
    <role>DEV</role>
    <id>41-6165498f</id>
    <lines>22-24</lines>
    <body>Create similar to latex.rs functions for XML and TXT formats. Let's create similar to latex.rs functions for generating reports in XML and TXT. Don't forget to remove this puzzle.</body>
    <file>server/src/report/mod.rs</file>
    <author>@h1alexbel</author>
    <email>aliaksei.bialiauski@hey.com</email>
    <time>2024-06-26T11:44:16Z</time>
    <children/>
  </puzzle>
  <puzzle alive="true">
    <issue href="https://github.com/h1alexbel/fakehub/issues/57">57</issue>
    <ticket>35</ticket>
    <estimate>45</estimate>
    <role>DEV</role>
    <id>35-caa80163</id>
    <lines>123-127</lines>
    <body>advisories.yml is broken. We can't compile an Open API spec with advisories.yml due to this error: -attribute (get).responses.200.content.'application/json'.schema. is not of type `object` (./paths/advisories.yml). This issue is critical, since it potentially affect all the endpoints containing same structure. Don't forget to remove this puzzle.</body>
    <file>github-api/github.yml</file>
    <author>@rultor</author>
    <email>me@rultor.com</email>
    <time>2024-06-26T15:16:50Z</time>
    <children/>
  </puzzle>
  <puzzle alive="false">
    <issue href="https://github.com/h1alexbel/fakehub/issues/73" closed="2024-09-02T10:22:17+00:00">73</issue>
    <ticket>17</ticket>
    <estimate>40</estimate>
    <role>DEV</role>
    <id>17-2c1e333d</id>
    <lines>38-43</lines>
    <body>Apply XMLed user to the &lt;users/&gt; node in storage. We should apply XMLed user to the &lt;users&gt; XML node in storage. First we need to check that user with provided name does not exist, and only then apply it to the storage. Keep in mind that application function in the storage should be thread-safe (as well as #xml function). Don't forget to create unit tests that prove that.</body>
    <file>server/src/objects/user.rs</file>
    <author>@h1alexbel</author>
    <email>aliaksei.bialiauski@hey.com</email>
    <time>2024-07-11T10:34:04Z</time>
    <children/>
  </puzzle>
  <puzzle alive="false">
    <issue href="https://github.com/h1alexbel/fakehub/issues/74" closed="2024-07-21T13:19:55+00:00">74</issue>
    <ticket>17</ticket>
    <estimate>30</estimate>
    <role>DEV</role>
    <id>17-e45e524d</id>
    <lines>44-46</lines>
    <body>Configure clippy to reject code with #unwrap(). We should prohibit to use #unwrap() function in our code. Let's configure clippy tool in the respective manner and get rid of all #unwrap() calls.</body>
    <file>server/src/objects/user.rs</file>
    <author>@h1alexbel</author>
    <email>aliaksei.bialiauski@hey.com</email>
    <time>2024-07-11T10:34:04Z</time>
    <children>
      <puzzle alive="false">
        <issue href="https://github.com/h1alexbel/fakehub/issues/101" closed="2024-09-11T13:43:31+00:00">101</issue>
        <ticket>74</ticket>
        <estimate>30</estimate>
        <role>DEV</role>
        <id>74-414ed44d</id>
        <lines>40-42</lines>
        <body>Find way to spread clippy config We need to find way to spread clippy/rustfmt configuration through all workspaces to reduce duplications in child workspaces.</body>
        <file>server/Cargo.toml</file>
        <author>@h1alexbel</author>
        <email>aliaksei.bialiauski@hey.com</email>
        <time>2024-07-24T11:12:16Z</time>
        <children/>
      </puzzle>
    </children>
  </puzzle>
  <puzzle alive="false">
    <issue href="https://github.com/h1alexbel/fakehub/issues/75" closed="2024-07-24T10:37:50+00:00">75</issue>
    <ticket>17</ticket>
    <estimate>35</estimate>
    <role>DEV</role>
    <id>17-1a69e44f</id>
    <lines>59-62</lines>
    <body>Implement #xml function in Storage. This function should return full XML storage has at the moment. #xml function should be thread-safe, as it intended to be used concurrently. Don't forget to create a unit tests related to #xml function.</body>
    <file>server/src/xml/storage.rs</file>
    <author>@h1alexbel</author>
    <email>aliaksei.bialiauski@hey.com</email>
    <time>2024-07-11T10:34:04Z</time>
    <children>
      <puzzle alive="false">
        <issue href="https://github.com/h1alexbel/fakehub/issues/98" closed="2024-09-02T10:22:19+00:00">98</issue>
        <ticket>75</ticket>
        <estimate>60</estimate>
        <role>DEV</role>
        <id>75-337ee33d</id>
        <lines>76-79</lines>
        <body>Make xml() thread-safe. We should make this function thread-safe in order to get sequential of reads and write to the store. Don't forget to create a unit-test that checks concurrency cases.</body>
        <file>server/src/xml/storage.rs</file>
        <author>@rultor</author>
        <email>me@rultor.com</email>
        <time>2024-07-24T10:21:40Z</time>
        <children/>
      </puzzle>
      <puzzle alive="false">
        <issue href="https://github.com/h1alexbel/fakehub/issues/99" closed="2024-09-02T10:22:20+00:00">99</issue>
        <ticket>75</ticket>
        <estimate>35</estimate>
        <role>DEV</role>
        <id>75-712e2839</id>
        <lines>80-82</lines>
        <body>Prohibit to use `?` (question mark operator). Let's prohibit to use `?` as we did with `unwrap()`. Don't forget to remove this puzzle.</body>
        <file>server/src/xml/storage.rs</file>
        <author>rultor</author>
        <email>me@rultor.com</email>
        <time>2024-07-24T10:21:40Z</time>
        <children/>
      </puzzle>
    </children>
  </puzzle>
  <puzzle alive="false">
    <issue href="https://github.com/h1alexbel/fakehub/issues/82" closed="2024-10-09T09:57:54+00:00">82</issue>
    <ticket>79</ticket>
    <estimate>25</estimate>
    <role>DEV</role>
    <id>79-d0a80208</id>
    <lines>28-30</lines>
    <body>Add --v option for verbose output. Let's add --v option for verbose output and debug logs. When this option is passed, we should show debug logs too.</body>
    <file>cli/src/args.rs</file>
    <author>@rultor</author>
    <email>me@rultor.com</email>
    <time>2024-07-18T05:04:08Z</time>
    <children>
      <puzzle alive="true">
        <issue href="https://github.com/h1alexbel/fakehub/issues/105">105</issue>
        <ticket>82</ticket>
        <estimate>30</estimate>
        <role>DEV</role>
        <id>82-95c4782c</id>
        <lines>73-76</lines>
        <body>Enable runs_in_verbose_mode test. We should enable this test right after we find out how to shutdown the server in test. This problem is similar to https://github.com/h1alexbel/fakehub/issues/76.</body>
        <file>cli/tests/integration_test.rs</file>
        <author>@h1alexbel</author>
        <email>aliaksei.bialiauski@hey.com</email>
        <time>2024-07-28T17:46:57Z</time>
        <children/>
      </puzzle>
    </children>
  </puzzle>
  <puzzle alive="true">
    <issue href="https://github.com/h1alexbel/fakehub/issues/83">83</issue>
    <ticket>79</ticket>
    <estimate>30</estimate>
    <role>DEV</role>
    <id>79-e2ac5f1e</id>
    <lines>58-60</lines>
    <body>Log 404 NOT FOUND requests too. Let's create a handler that would log requests failed with 404. Let's use info!() for this one.</body>
    <file>server/src/lib.rs</file>
    <author>@rultor</author>
    <email>me@rultor.com</email>
    <time>2024-07-18T05:04:08Z</time>
    <children/>
  </puzzle>
  <puzzle alive="false">
    <issue href="https://github.com/h1alexbel/fakehub/issues/84" closed="2024-07-21T11:35:49+00:00">84</issue>
    <ticket>79</ticket>
    <estimate>45</estimate>
    <role>DEV</role>
    <id>79-297c2dd6</id>
    <lines>30-33</lines>
    <body>Make mod/fn/struct documentation required. Let's configure cargo in such way, so documentation will be required at all levels. When such rule will be configured, please fix all warnings/errors and integrate changes into master branch.</body>
    <file>server/src/routes/home.rs</file>
    <author>rultor</author>
    <email>me@rultor.com</email>
    <time>2024-07-18T05:04:08Z</time>
    <children/>
  </puzzle>
  <puzzle alive="true">
    <issue href="https://github.com/h1alexbel/fakehub/issues/85">85</issue>
    <ticket>79</ticket>
    <estimate>25</estimate>
    <role>DEV</role>
    <id>79-f3acfe10</id>
    <lines>26-29</lines>
    <body>Import assert_that!() macro like in lib.rs instead of assert_that. For some reason we can't use '#[macro_use] extern crate hamcrest;' inside this mod. We should figure out why and replace deprecated import with required macro.</body>
    <file>server/tests/routes_it.rs</file>
    <author>rultor</author>
    <email>me@rultor.com</email>
    <time>2024-07-18T05:04:08Z</time>
    <children/>
  </puzzle>
  <puzzle alive="true">
    <issue href="https://github.com/h1alexbel/fakehub/issues/86">86</issue>
    <ticket>79</ticket>
    <estimate>35</estimate>
    <role>DEV</role>
    <id>79-c1f43fa7</id>
    <lines>35-37</lines>
    <body>Enable integration test case for home endpoint. For now this test does not work, because we can't abort the server. Let's implement it first inside lib.rs::Server struct and then enable this case.</body>
    <file>server/tests/routes_it.rs</file>
    <author>rultor</author>
    <email>me@rultor.com</email>
    <time>2024-07-18T05:04:08Z</time>
    <children/>
  </puzzle>
  <puzzle alive="true">
    <issue href="https://github.com/h1alexbel/fakehub/issues/87">87</issue>
    <ticket>79</ticket>
    <estimate>25</estimate>
    <role>DEV</role>
    <id>79-11f081e9</id>
    <lines>38-40</lines>
    <body>Check home response from body. We should check that returned home body contains exactly the same response that in resources/home.json (expected). Don't forget this puzzle.</body>
    <file>server/tests/routes_it.rs</file>
    <author>rultor</author>
    <email>me@rultor.com</email>
    <time>2024-07-18T05:04:08Z</time>
    <children/>
  </puzzle>
  <puzzle alive="false">
    <issue href="https://github.com/h1alexbel/fakehub/issues/134" closed="2024-09-03T11:28:34+00:00">134</issue>
    <ticket>124</ticket>
    <estimate>35</estimate>
    <role>DEV</role>
    <id>124-85a7849c</id>
    <lines>85-87</lines>
    <body>Pass fakehub to all required endpoints to be used. We should pass fakehub instance after Fakehub::default() into all places where we need to operate with data somehow.</body>
    <file>server/src/lib.rs</file>
    <author>@rultor</author>
    <email>me@rultor.com</email>
    <time>2024-09-02T09:31:24Z</time>
    <children/>
  </puzzle>
  <puzzle alive="true">
    <issue href="https://github.com/h1alexbel/fakehub/issues/135">135</issue>
    <ticket>124</ticket>
    <estimate>90</estimate>
    <role>DEV</role>
    <id>124-97c33c98</id>
    <lines>61-65</lines>
    <body>Think about GitHub Enterprise GitHubs feature. Let's think about how we can simulate multiple GitHub instances like GitHub platform does with GitHub Enterprise feature. Fakehub should have multiple GitHubs inside, and user can pick to which GitHub he wants store the testing data.</body>
    <file>server/src/objects/fakehub.rs</file>
    <author>@rultor</author>
    <email>me@rultor.com</email>
    <time>2024-09-02T09:31:24Z</time>
    <children/>
  </puzzle>
  <puzzle alive="false">
    <issue href="https://github.com/h1alexbel/fakehub/issues/141" closed="2024-09-03T16:32:29+00:00">141</issue>
    <ticket>137</ticket>
    <estimate>30</estimate>
    <role>DEV</role>
    <id>137-e669be66</id>
    <lines>75-79</lines>
    <body>Create NodeId object that will give MD5 hash. Almost in any response, including user, we should display Node ID as GitHub API does. Looks like they use MD5 for it. Let's do the same, but we need only one that hash, because only one instance can be run. Let's hash UTC datetime when server was bootstrapped.</body>
    <file>server/src/objects/user.rs</file>
    <author>@rultor</author>
    <email>me@rultor.com</email>
    <time>2024-09-03T12:40:03Z</time>
    <children/>
  </puzzle>
  <puzzle alive="false">
    <issue href="https://github.com/h1alexbel/fakehub/issues/142" closed="2024-09-05T13:38:41+00:00">142</issue>
    <ticket>137</ticket>
    <estimate>35</estimate>
    <role>DEV</role>
    <id>137-66b3c00b</id>
    <lines>80-82</lines>
    <body>Pass port to the base cursor. Now we hardcode the address localhost:3000, however we need to handle generic ports that users can set.</body>
    <file>server/src/objects/user.rs</file>
    <author>@rultor</author>
    <email>me@rultor.com</email>
    <time>2024-09-03T12:40:03Z</time>
    <children/>
  </puzzle>
  <puzzle alive="true">
    <issue href="https://github.com/h1alexbel/fakehub/issues/150">150</issue>
    <ticket>144</ticket>
    <estimate>35</estimate>
    <role>DEV</role>
    <id>144-bb8cae44</id>
    <lines>31-34</lines>
    <body>Test that 404 status code is thrown with "Not Found" response. For now we only check JSON response with: message, documentation_url, status nodes. Let's create unit test that will show that 404 is the status code of response.</body>
    <file>server/src/handlers/user.rs</file>
    <author>@rultor</author>
    <email>me@rultor.com</email>
    <time>2024-09-10T15:24:34Z</time>
    <children/>
  </puzzle>
  <puzzle alive="true">
    <issue href="https://github.com/h1alexbel/fakehub/issues/157">157</issue>
    <ticket>129</ticket>
    <estimate>35</estimate>
    <role>DEV</role>
    <id>129-43a0c45d</id>
    <lines>66-72</lines>
    <body>Find a way to run slow tests separately from fast tests. This test `accepts_request_in_detached_mode` runs a way longer than other unit tests. Let's mark such long tests as slow and run them separately from fast test. Locally, developers will run only fast tests, while CI server will run both. Check &lt;a href="https://www.yegor256.com/2023/08/22/fast-vs-deep-testing.html"&gt;this link&lt;a&gt; for more information about this idea.</body>
    <file>cli/tests/integration_test.rs</file>
    <author>@h1alexbel</author>
    <email>aliaksei.bialiauski@hey.com</email>
    <time>2024-09-19T21:28:09Z</time>
    <children/>
  </puzzle>
  <puzzle alive="true">
    <issue href="https://github.com/h1alexbel/fakehub/issues/158">158</issue>
    <ticket>129</ticket>
    <estimate>60</estimate>
    <role>DEV</role>
    <id>129-5278c7d1</id>
    <lines>75-77</lines>
    <body>Create similar integration test for windows platform. Now we have test for linux and macos. However, we need to maintain similar test case for windows as well.</body>
    <file>cli/tests/integration_test.rs</file>
    <author>@h1alexbel</author>
    <email>aliaksei.bialiauski@hey.com</email>
    <time>2024-09-19T21:28:09Z</time>
    <children/>
  </puzzle>
  <puzzle alive="true">
    <issue href="https://github.com/h1alexbel/fakehub/issues/193">193</issue>
    <ticket>77</ticket>
    <estimate>45</estimate>
    <role>DEV</role>
    <id>77-19cdca9c</id>
    <lines>99-102</lines>
    <body>Implement kill_windows_port(id) for windows OS. Currently, we don't support port killing on Windows. Check &lt;a href="https://github.com/h1alexbel/fakehub/pull/159"&gt;this&lt;/a&gt; pull request for more information.</body>
    <file>cli/src/main.rs</file>
    <author>@h1alexbel</author>
    <email>aliaksei.bialiauski@hey.com</email>
    <time>2024-10-09T08:23:43Z</time>
    <children/>
  </puzzle>
  <puzzle alive="true">
    <issue href="https://github.com/h1alexbel/fakehub/issues/194">194</issue>
    <ticket>77</ticket>
    <estimate>35</estimate>
    <role>DEV</role>
    <id>77-b4ec803f</id>
    <lines>48-52</lines>
    <body>Enable current_port_from_lsof test in rultor. This test fails for some reason during Rultor build, because of current_port() panics with: 'failed to convert port to usize: ParseIntError { kind: Empty }'. It can be probably due to build in Docker.</body>
    <file>cli/src/sys/current_port.rs</file>
    <author>@h1alexbel</author>
    <email>aliaksei.bialiauski@hey.com</email>
    <time>2024-10-09T08:23:43Z</time>
    <children/>
  </puzzle>
  <puzzle alive="true">
    <issue href="https://github.com/h1alexbel/fakehub/issues/195">195</issue>
    <ticket>77</ticket>
    <estimate>60</estimate>
    <role>DEV</role>
    <id>77-da342dc5</id>
    <lines>26-29</lines>
    <body>Investigate why lsof does not work in tests, while killport tool kills port properly. Due to this problem, we can't create integration test case with fakehub start -d -&gt; fakehub stop. Don't forget to remove this puzzle.</body>
    <file>cli/src/sys/kill_unix.rs</file>
    <author>@h1alexbel</author>
    <email>aliaksei.bialiauski@hey.com</email>
    <time>2024-10-09T08:23:43Z</time>
    <children/>
  </puzzle>
  <puzzle alive="true">
    <issue href="https://github.com/h1alexbel/fakehub/issues/202">202</issue>
    <ticket>45</ticket>
    <estimate>60</estimate>
    <role>DEV</role>
    <id>45-b2cd3d9d</id>
    <lines>47-49</lines>
    <body>Transform transpiled state from FSL AST to Fakehub objects. Now we simply logging transpiled AST, let's create Fakehub objects from obtained AST.</body>
    <file>server/src/init/server_with_init_state.rs</file>
    <author>Aliaksei Bialiauski</author>
    <email>aliaksei.bialiauski@hey.com</email>
    <time>2024-10-11T13:02:04Z</time>
    <children/>
  </puzzle>
</puzzles>
