29937 lines
883 KiB
HTML
29937 lines
883 KiB
HTML
<!DOCTYPE html>
|
|
<html xmlns='http://www.w3.org/1999/xhtml'>
|
|
<head>
|
|
<title>Code coverage for Travis-api</title>
|
|
<meta http-equiv="content-type" content="text/html; charset=utf-8" />
|
|
<script src='./assets/0.8.0/application.js' type='text/javascript'></script>
|
|
<link href='./assets/0.8.0/application.css' media='screen, projection, print' rel='stylesheet' type='text/css'>
|
|
<link rel="shortcut icon" type="image/png" href="./assets/0.8.0/favicon_red.png" />
|
|
<link rel="icon" type="image/png" href="./assets/0.8.0/favicon.png" />
|
|
</head>
|
|
|
|
<body>
|
|
<div id="loading">
|
|
<img src="./assets/0.8.0/loading.gif" alt="loading"/>
|
|
</div>
|
|
<div id="wrapper" style="display:none;">
|
|
<div class="timestamp">Generated <abbr class="timeago" title="2015-01-21T16:37:33+01:00">2015-01-21T16:37:33+01:00</abbr></div>
|
|
<ul class="group_tabs"></ul>
|
|
|
|
<div id="content">
|
|
<div class="file_list_container" id="AllFiles">
|
|
<h2>
|
|
<span class="group_name">All Files</span>
|
|
(<span class="covered_percent"><span class="red">67.05%</span></span>
|
|
covered at
|
|
<span class="covered_strength">
|
|
<span class="green">
|
|
5.33
|
|
</span>
|
|
</span> hits/line)
|
|
</h2>
|
|
<a name="AllFiles"></a>
|
|
<div>
|
|
<b>93</b> files in total.
|
|
<b>2064</b> relevant lines.
|
|
<span class="green"><b>1384</b> lines covered</span> and
|
|
<span class="red"><b>680</b> lines missed </span>
|
|
</div>
|
|
<table class="file_list">
|
|
<thead>
|
|
<tr>
|
|
<th>File</th>
|
|
<th>% covered</th>
|
|
<th>Lines</th>
|
|
<th>Relevant Lines</th>
|
|
<th>Lines covered</th>
|
|
<th>Lines missed</th>
|
|
<th>Avg. Hits / Line</th>
|
|
</tr>
|
|
</thead>
|
|
<tbody>
|
|
|
|
<tr>
|
|
<td class="strong"><a href="#6a8e7022de4db451dc6c402d7b521d74b4867cec" class="src_link" title="lib/travis/api/app.rb">lib/travis/api/app.rb</a></td>
|
|
<td class="yellow strong">85.25 %</td>
|
|
<td>207</td>
|
|
<td>122</td>
|
|
<td>104</td>
|
|
<td>18</td>
|
|
<td>21.2</td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td class="strong"><a href="#2563a9e3b6860f10bc10bc8b9abc2e0b307c3396" class="src_link" title="lib/travis/api/app/access_token.rb">lib/travis/api/app/access_token.rb</a></td>
|
|
<td class="yellow strong">87.5 %</td>
|
|
<td>105</td>
|
|
<td>64</td>
|
|
<td>56</td>
|
|
<td>8</td>
|
|
<td>4.3</td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td class="strong"><a href="#a961b2b2494498d5ea5ba390081b58db5ba6a9ae" class="src_link" title="lib/travis/api/app/base.rb">lib/travis/api/app/base.rb</a></td>
|
|
<td class="red strong">73.08 %</td>
|
|
<td>53</td>
|
|
<td>26</td>
|
|
<td>19</td>
|
|
<td>7</td>
|
|
<td>11.0</td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td class="strong"><a href="#d160d1d2c1e6c6e0542165ddbf75627d39b2de6f" class="src_link" title="lib/travis/api/app/cors.rb">lib/travis/api/app/cors.rb</a></td>
|
|
<td class="red strong">80.0 %</td>
|
|
<td>20</td>
|
|
<td>10</td>
|
|
<td>8</td>
|
|
<td>2</td>
|
|
<td>7.4</td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td class="strong"><a href="#eeda47705beb665db84542493bea1c2e0ec05731" class="src_link" title="lib/travis/api/app/endpoint.rb">lib/travis/api/app/endpoint.rb</a></td>
|
|
<td class="red strong">70.0 %</td>
|
|
<td>50</td>
|
|
<td>30</td>
|
|
<td>21</td>
|
|
<td>9</td>
|
|
<td>17.9</td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td class="strong"><a href="#b2b6630e8ce43a4e90ba2fa3f0747e7269631dd5" class="src_link" title="lib/travis/api/app/endpoint/accounts.rb">lib/travis/api/app/endpoint/accounts.rb</a></td>
|
|
<td class="yellow strong">83.33 %</td>
|
|
<td>11</td>
|
|
<td>6</td>
|
|
<td>5</td>
|
|
<td>1</td>
|
|
<td>0.8</td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td class="strong"><a href="#a5a778403a26fa47d8dfe304f657adcbfa66f559" class="src_link" title="lib/travis/api/app/endpoint/authorization.rb">lib/travis/api/app/endpoint/authorization.rb</a></td>
|
|
<td class="red strong">26.45 %</td>
|
|
<td>522</td>
|
|
<td>155</td>
|
|
<td>41</td>
|
|
<td>114</td>
|
|
<td>0.3</td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td class="strong"><a href="#2b74a2462ad5e4f3ca518f0cc6f13ddc82ee8762" class="src_link" title="lib/travis/api/app/endpoint/branches.rb">lib/travis/api/app/endpoint/branches.rb</a></td>
|
|
<td class="yellow strong">83.33 %</td>
|
|
<td>16</td>
|
|
<td>6</td>
|
|
<td>5</td>
|
|
<td>1</td>
|
|
<td>0.8</td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td class="strong"><a href="#f830dba6ed178eb88e884e4ef578db0073e9384a" class="src_link" title="lib/travis/api/app/endpoint/broadcasts.rb">lib/travis/api/app/endpoint/broadcasts.rb</a></td>
|
|
<td class="yellow strong">83.33 %</td>
|
|
<td>11</td>
|
|
<td>6</td>
|
|
<td>5</td>
|
|
<td>1</td>
|
|
<td>0.8</td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td class="strong"><a href="#fac69dfa06cb89c53a04099fb945fb4a805cc42c" class="src_link" title="lib/travis/api/app/endpoint/builds.rb">lib/travis/api/app/endpoint/builds.rb</a></td>
|
|
<td class="red strong">27.59 %</td>
|
|
<td>53</td>
|
|
<td>29</td>
|
|
<td>8</td>
|
|
<td>21</td>
|
|
<td>0.3</td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td class="strong"><a href="#03dcd32988fb710bc7a3c06636a6780bce656589" class="src_link" title="lib/travis/api/app/endpoint/documentation.rb">lib/travis/api/app/endpoint/documentation.rb</a></td>
|
|
<td class="yellow strong">85.71 %</td>
|
|
<td>13</td>
|
|
<td>7</td>
|
|
<td>6</td>
|
|
<td>1</td>
|
|
<td>0.9</td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td class="strong"><a href="#0dc46adef05fa2cbeadacf05c59276980cc25367" class="src_link" title="lib/travis/api/app/endpoint/endpoints.rb">lib/travis/api/app/endpoint/endpoints.rb</a></td>
|
|
<td class="yellow strong">86.96 %</td>
|
|
<td>68</td>
|
|
<td>23</td>
|
|
<td>20</td>
|
|
<td>3</td>
|
|
<td>19.8</td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td class="strong"><a href="#413ff5b985954d06f57e54bae462c9380050682b" class="src_link" title="lib/travis/api/app/endpoint/env_vars.rb">lib/travis/api/app/endpoint/env_vars.rb</a></td>
|
|
<td class="red strong">44.44 %</td>
|
|
<td>31</td>
|
|
<td>18</td>
|
|
<td>8</td>
|
|
<td>10</td>
|
|
<td>0.4</td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td class="strong"><a href="#f01f22d7534ebd190653ed0f88f71a94320108a3" class="src_link" title="lib/travis/api/app/endpoint/home.rb">lib/travis/api/app/endpoint/home.rb</a></td>
|
|
<td class="red strong">66.67 %</td>
|
|
<td>54</td>
|
|
<td>18</td>
|
|
<td>12</td>
|
|
<td>6</td>
|
|
<td>0.7</td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td class="strong"><a href="#389e755e519bf86618fcf82593746fcedb9c4271" class="src_link" title="lib/travis/api/app/endpoint/hooks.rb">lib/travis/api/app/endpoint/hooks.rb</a></td>
|
|
<td class="red strong">75.0 %</td>
|
|
<td>15</td>
|
|
<td>8</td>
|
|
<td>6</td>
|
|
<td>2</td>
|
|
<td>0.8</td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td class="strong"><a href="#0c26cbaa8343afc54bde5f948dbae2fe3039c766" class="src_link" title="lib/travis/api/app/endpoint/jobs.rb">lib/travis/api/app/endpoint/jobs.rb</a></td>
|
|
<td class="red strong">22.73 %</td>
|
|
<td>122</td>
|
|
<td>66</td>
|
|
<td>15</td>
|
|
<td>51</td>
|
|
<td>0.2</td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td class="strong"><a href="#1d8c0ceda3860fb26fc34a1a770660c35db5b435" class="src_link" title="lib/travis/api/app/endpoint/lint.rb">lib/travis/api/app/endpoint/lint.rb</a></td>
|
|
<td class="red strong">61.54 %</td>
|
|
<td>19</td>
|
|
<td>13</td>
|
|
<td>8</td>
|
|
<td>5</td>
|
|
<td>0.6</td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td class="strong"><a href="#5d621a9a5eb87e9eb39a114965b4bc43594c05ee" class="src_link" title="lib/travis/api/app/endpoint/logs.rb">lib/travis/api/app/endpoint/logs.rb</a></td>
|
|
<td class="yellow strong">83.33 %</td>
|
|
<td>13</td>
|
|
<td>6</td>
|
|
<td>5</td>
|
|
<td>1</td>
|
|
<td>0.8</td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td class="strong"><a href="#41717bfcba400b9bc1a7add2cb84d3195cfc3565" class="src_link" title="lib/travis/api/app/endpoint/repos.rb">lib/travis/api/app/endpoint/repos.rb</a></td>
|
|
<td class="red strong">39.71 %</td>
|
|
<td>189</td>
|
|
<td>68</td>
|
|
<td>27</td>
|
|
<td>41</td>
|
|
<td>0.4</td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td class="strong"><a href="#3542f33a7b8a282ed0436611428aa30ad3f980a1" class="src_link" title="lib/travis/api/app/endpoint/requests.rb">lib/travis/api/app/endpoint/requests.rb</a></td>
|
|
<td class="red strong">47.06 %</td>
|
|
<td>32</td>
|
|
<td>17</td>
|
|
<td>8</td>
|
|
<td>9</td>
|
|
<td>0.5</td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td class="strong"><a href="#b615d4751e9fd711ed50e22c4b49c7c51f964d93" class="src_link" title="lib/travis/api/app/endpoint/setting_endpoint.rb">lib/travis/api/app/endpoint/setting_endpoint.rb</a></td>
|
|
<td class="red strong">52.73 %</td>
|
|
<td>98</td>
|
|
<td>55</td>
|
|
<td>29</td>
|
|
<td>26</td>
|
|
<td>4.6</td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td class="strong"><a href="#c146923d5484592bc716b1adae4f3329fd9ebb1b" class="src_link" title="lib/travis/api/app/endpoint/singleton_settings_endpoint.rb">lib/travis/api/app/endpoint/singleton_settings_endpoint.rb</a></td>
|
|
<td class="red strong">57.14 %</td>
|
|
<td>46</td>
|
|
<td>28</td>
|
|
<td>16</td>
|
|
<td>12</td>
|
|
<td>0.6</td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td class="strong"><a href="#3aa4c3de70a6e7203940667017613935754e19cd" class="src_link" title="lib/travis/api/app/endpoint/uptime.rb">lib/travis/api/app/endpoint/uptime.rb</a></td>
|
|
<td class="red strong">55.56 %</td>
|
|
<td>16</td>
|
|
<td>9</td>
|
|
<td>5</td>
|
|
<td>4</td>
|
|
<td>0.6</td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td class="strong"><a href="#2aeec642e9353983d22c25e11bb6aee7a68ff327" class="src_link" title="lib/travis/api/app/endpoint/users.rb">lib/travis/api/app/endpoint/users.rb</a></td>
|
|
<td class="red strong">50.0 %</td>
|
|
<td>59</td>
|
|
<td>18</td>
|
|
<td>9</td>
|
|
<td>9</td>
|
|
<td>0.5</td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td class="strong"><a href="#98cb249669c6e20fed930c4f814f8e6266add77c" class="src_link" title="lib/travis/api/app/extensions.rb">lib/travis/api/app/extensions.rb</a></td>
|
|
<td class="green strong">100.0 %</td>
|
|
<td>8</td>
|
|
<td>4</td>
|
|
<td>4</td>
|
|
<td>0</td>
|
|
<td>2.0</td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td class="strong"><a href="#00c3504cff5eca9f25748185fb2bd47ad1755d92" class="src_link" title="lib/travis/api/app/extensions/expose_pattern.rb">lib/travis/api/app/extensions/expose_pattern.rb</a></td>
|
|
<td class="green strong">100.0 %</td>
|
|
<td>12</td>
|
|
<td>7</td>
|
|
<td>7</td>
|
|
<td>0</td>
|
|
<td>34.7</td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td class="strong"><a href="#cf7268e37e643b00ddda6c99c2b8d2601a66df25" class="src_link" title="lib/travis/api/app/extensions/scoping.rb">lib/travis/api/app/extensions/scoping.rb</a></td>
|
|
<td class="red strong">41.03 %</td>
|
|
<td>69</td>
|
|
<td>39</td>
|
|
<td>16</td>
|
|
<td>23</td>
|
|
<td>9.4</td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td class="strong"><a href="#4afdb495e463d11449413cb7fabf94f05a66ff88" class="src_link" title="lib/travis/api/app/extensions/smart_constants.rb">lib/travis/api/app/extensions/smart_constants.rb</a></td>
|
|
<td class="green strong">100.0 %</td>
|
|
<td>28</td>
|
|
<td>11</td>
|
|
<td>11</td>
|
|
<td>0</td>
|
|
<td>3.3</td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td class="strong"><a href="#32932af295b8d816c57702d2dd3215d03df46d91" class="src_link" title="lib/travis/api/app/extensions/subclass_tracker.rb">lib/travis/api/app/extensions/subclass_tracker.rb</a></td>
|
|
<td class="green strong">100.0 %</td>
|
|
<td>25</td>
|
|
<td>13</td>
|
|
<td>13</td>
|
|
<td>0</td>
|
|
<td>113.6</td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td class="strong"><a href="#3583b3399a71ebe7de3f253f8a6a166b5ff1450d" class="src_link" title="lib/travis/api/app/helpers.rb">lib/travis/api/app/helpers.rb</a></td>
|
|
<td class="green strong">100.0 %</td>
|
|
<td>8</td>
|
|
<td>4</td>
|
|
<td>4</td>
|
|
<td>0</td>
|
|
<td>2.5</td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td class="strong"><a href="#d434ebb9387430acf5e4c2c6adda113f213d9a27" class="src_link" title="lib/travis/api/app/helpers/accept.rb">lib/travis/api/app/helpers/accept.rb</a></td>
|
|
<td class="red strong">49.06 %</td>
|
|
<td>93</td>
|
|
<td>53</td>
|
|
<td>26</td>
|
|
<td>27</td>
|
|
<td>1.5</td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td class="strong"><a href="#945fc5424b8698f6c9f47bf45d950c7993fe7f7d" class="src_link" title="lib/travis/api/app/helpers/current_user.rb">lib/travis/api/app/helpers/current_user.rb</a></td>
|
|
<td class="red strong">70.0 %</td>
|
|
<td>19</td>
|
|
<td>10</td>
|
|
<td>7</td>
|
|
<td>3</td>
|
|
<td>0.7</td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td class="strong"><a href="#d6d6177d6e0d49294315541845ceb6265759cdf1" class="src_link" title="lib/travis/api/app/helpers/db_follower.rb">lib/travis/api/app/helpers/db_follower.rb</a></td>
|
|
<td class="yellow strong">83.33 %</td>
|
|
<td>11</td>
|
|
<td>6</td>
|
|
<td>5</td>
|
|
<td>1</td>
|
|
<td>0.8</td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td class="strong"><a href="#9b6cc591941ba41c4e94fefe940858e3353c284f" class="src_link" title="lib/travis/api/app/helpers/flash.rb">lib/travis/api/app/helpers/flash.rb</a></td>
|
|
<td class="green strong">100.0 %</td>
|
|
<td>11</td>
|
|
<td>6</td>
|
|
<td>6</td>
|
|
<td>0</td>
|
|
<td>2.5</td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td class="strong"><a href="#4bc54455bbe2ec43bb23f5b569a91e4d444598b6" class="src_link" title="lib/travis/api/app/helpers/mime_types.rb">lib/travis/api/app/helpers/mime_types.rb</a></td>
|
|
<td class="red strong">64.29 %</td>
|
|
<td>28</td>
|
|
<td>14</td>
|
|
<td>9</td>
|
|
<td>5</td>
|
|
<td>0.6</td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td class="strong"><a href="#e5ee14c5580baf7a66bac731983db9d3bdb48996" class="src_link" title="lib/travis/api/app/helpers/respond_with.rb">lib/travis/api/app/helpers/respond_with.rb</a></td>
|
|
<td class="red strong">40.54 %</td>
|
|
<td>70</td>
|
|
<td>37</td>
|
|
<td>15</td>
|
|
<td>22</td>
|
|
<td>2.5</td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td class="strong"><a href="#abcb6fbe07ff5db52c5716e39eb648ef96550296" class="src_link" title="lib/travis/api/app/middleware.rb">lib/travis/api/app/middleware.rb</a></td>
|
|
<td class="green strong">100.0 %</td>
|
|
<td>7</td>
|
|
<td>3</td>
|
|
<td>3</td>
|
|
<td>0</td>
|
|
<td>1.0</td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td class="strong"><a href="#fafd069a2bcef83fff5f536d88402c883f3cdc31" class="src_link" title="lib/travis/api/app/middleware/logging.rb">lib/travis/api/app/middleware/logging.rb</a></td>
|
|
<td class="green strong">100.0 %</td>
|
|
<td>15</td>
|
|
<td>8</td>
|
|
<td>8</td>
|
|
<td>0</td>
|
|
<td>6.6</td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td class="strong"><a href="#7670839fd3d16bec4a807509898851298c771968" class="src_link" title="lib/travis/api/app/middleware/metriks.rb">lib/travis/api/app/middleware/metriks.rb</a></td>
|
|
<td class="red strong">77.42 %</td>
|
|
<td>48</td>
|
|
<td>31</td>
|
|
<td>24</td>
|
|
<td>7</td>
|
|
<td>12.5</td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td class="strong"><a href="#fe2923d329420298ae0fb9e1101c22a8b601d151" class="src_link" title="lib/travis/api/app/middleware/rewrite.rb">lib/travis/api/app/middleware/rewrite.rb</a></td>
|
|
<td class="red strong">78.57 %</td>
|
|
<td>75</td>
|
|
<td>42</td>
|
|
<td>33</td>
|
|
<td>9</td>
|
|
<td>3.6</td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td class="strong"><a href="#26dd70a212f3b2cbf26d11a0b7f29ee3dec679c3" class="src_link" title="lib/travis/api/app/middleware/scope_check.rb">lib/travis/api/app/middleware/scope_check.rb</a></td>
|
|
<td class="green strong">92.59 %</td>
|
|
<td>47</td>
|
|
<td>27</td>
|
|
<td>25</td>
|
|
<td>2</td>
|
|
<td>8.9</td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td class="strong"><a href="#57848e06570d6ebc2e75aad01bea70082a1c55f4" class="src_link" title="lib/travis/api/app/middleware/user_agent_tracker.rb">lib/travis/api/app/middleware/user_agent_tracker.rb</a></td>
|
|
<td class="red strong">40.0 %</td>
|
|
<td>62</td>
|
|
<td>35</td>
|
|
<td>14</td>
|
|
<td>21</td>
|
|
<td>1.7</td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td class="strong"><a href="#866d316bcfc64963406986d03c50d1280b8fe34d" class="src_link" title="lib/travis/api/app/services/schedule_request.rb">lib/travis/api/app/services/schedule_request.rb</a></td>
|
|
<td class="red strong">51.61 %</td>
|
|
<td>52</td>
|
|
<td>31</td>
|
|
<td>16</td>
|
|
<td>15</td>
|
|
<td>0.5</td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td class="strong"><a href="#d04c5eced516ab14b9065b4d34d0af855835a730" class="src_link" title="lib/travis/api/serializer.rb">lib/travis/api/serializer.rb</a></td>
|
|
<td class="red strong">66.67 %</td>
|
|
<td>23</td>
|
|
<td>12</td>
|
|
<td>8</td>
|
|
<td>4</td>
|
|
<td>0.7</td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td class="strong"><a href="#babe3ce05ce1d657f847b2e01c64437b8e58b014" class="src_link" title="lib/travis/api/v2.rb">lib/travis/api/v2.rb</a></td>
|
|
<td class="green strong">100.0 %</td>
|
|
<td>8</td>
|
|
<td>4</td>
|
|
<td>4</td>
|
|
<td>0</td>
|
|
<td>1.0</td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td class="strong"><a href="#1c817b9839dda1170aec2560bad5a09065552de6" class="src_link" title="lib/travis/api/v2/http.rb">lib/travis/api/v2/http.rb</a></td>
|
|
<td class="green strong">100.0 %</td>
|
|
<td>33</td>
|
|
<td>28</td>
|
|
<td>28</td>
|
|
<td>0</td>
|
|
<td>1.0</td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td class="strong"><a href="#c48990e0accf6ba7189617a1b67f9c86eecfc562" class="src_link" title="lib/travis/api/v2/http/accounts.rb">lib/travis/api/v2/http/accounts.rb</a></td>
|
|
<td class="red strong">68.75 %</td>
|
|
<td>38</td>
|
|
<td>16</td>
|
|
<td>11</td>
|
|
<td>5</td>
|
|
<td>0.7</td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td class="strong"><a href="#65342af497e7edc515415235ed81e3bbaccc6979" class="src_link" title="lib/travis/api/v2/http/annotations.rb">lib/travis/api/v2/http/annotations.rb</a></td>
|
|
<td class="red strong">71.43 %</td>
|
|
<td>34</td>
|
|
<td>14</td>
|
|
<td>10</td>
|
|
<td>4</td>
|
|
<td>0.7</td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td class="strong"><a href="#e48076813d88d2c6e10c03686156a6f19429e60e" class="src_link" title="lib/travis/api/v2/http/branch.rb">lib/travis/api/v2/http/branch.rb</a></td>
|
|
<td class="red strong">71.43 %</td>
|
|
<td>28</td>
|
|
<td>14</td>
|
|
<td>10</td>
|
|
<td>4</td>
|
|
<td>0.7</td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td class="strong"><a href="#58933f40c3a13ad2f3470bedf8880494dabc2b2d" class="src_link" title="lib/travis/api/v2/http/branches.rb">lib/travis/api/v2/http/branches.rb</a></td>
|
|
<td class="red strong">54.55 %</td>
|
|
<td>60</td>
|
|
<td>22</td>
|
|
<td>12</td>
|
|
<td>10</td>
|
|
<td>0.5</td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td class="strong"><a href="#c46347e1a0d259fc446170187bf8517d99d49177" class="src_link" title="lib/travis/api/v2/http/broadcasts.rb">lib/travis/api/v2/http/broadcasts.rb</a></td>
|
|
<td class="red strong">66.67 %</td>
|
|
<td>32</td>
|
|
<td>15</td>
|
|
<td>10</td>
|
|
<td>5</td>
|
|
<td>0.7</td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td class="strong"><a href="#8c4ac5c4e74342720580a492f7c3aa9d4d384e43" class="src_link" title="lib/travis/api/v2/http/build.rb">lib/travis/api/v2/http/build.rb</a></td>
|
|
<td class="red strong">60.87 %</td>
|
|
<td>87</td>
|
|
<td>23</td>
|
|
<td>14</td>
|
|
<td>9</td>
|
|
<td>0.6</td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td class="strong"><a href="#1abcacda27e1da4c1f9879072dc5eb5d0a6f1eab" class="src_link" title="lib/travis/api/v2/http/builds.rb">lib/travis/api/v2/http/builds.rb</a></td>
|
|
<td class="red strong">59.09 %</td>
|
|
<td>66</td>
|
|
<td>22</td>
|
|
<td>13</td>
|
|
<td>9</td>
|
|
<td>0.6</td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td class="strong"><a href="#b7d8a575e84049f0f7983320c9ad1737cc7619a1" class="src_link" title="lib/travis/api/v2/http/caches.rb">lib/travis/api/v2/http/caches.rb</a></td>
|
|
<td class="red strong">73.33 %</td>
|
|
<td>33</td>
|
|
<td>15</td>
|
|
<td>11</td>
|
|
<td>4</td>
|
|
<td>0.7</td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td class="strong"><a href="#452e1e09b24321c66a631e743b6a84331da9bd13" class="src_link" title="lib/travis/api/v2/http/env_var.rb">lib/travis/api/v2/http/env_var.rb</a></td>
|
|
<td class="red strong">61.54 %</td>
|
|
<td>23</td>
|
|
<td>13</td>
|
|
<td>8</td>
|
|
<td>5</td>
|
|
<td>0.6</td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td class="strong"><a href="#f91e8a59d86280d6f7eb63939f3a080ab5f82e0f" class="src_link" title="lib/travis/api/v2/http/env_vars.rb">lib/travis/api/v2/http/env_vars.rb</a></td>
|
|
<td class="green strong">100.0 %</td>
|
|
<td>2</td>
|
|
<td>1</td>
|
|
<td>1</td>
|
|
<td>0</td>
|
|
<td>1.0</td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td class="strong"><a href="#16f73e884ddd5d7c35925c636e1981fa77cb5467" class="src_link" title="lib/travis/api/v2/http/hooks.rb">lib/travis/api/v2/http/hooks.rb</a></td>
|
|
<td class="red strong">66.67 %</td>
|
|
<td>37</td>
|
|
<td>15</td>
|
|
<td>10</td>
|
|
<td>5</td>
|
|
<td>0.7</td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td class="strong"><a href="#7bb06459f99796e92585a0613514a4dc10a3b4e6" class="src_link" title="lib/travis/api/v2/http/job.rb">lib/travis/api/v2/http/job.rb</a></td>
|
|
<td class="red strong">70.59 %</td>
|
|
<td>63</td>
|
|
<td>17</td>
|
|
<td>12</td>
|
|
<td>5</td>
|
|
<td>0.7</td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td class="strong"><a href="#28a544a6de90280731859574fbbbcf82c3b12b13" class="src_link" title="lib/travis/api/v2/http/jobs.rb">lib/travis/api/v2/http/jobs.rb</a></td>
|
|
<td class="red strong">63.16 %</td>
|
|
<td>61</td>
|
|
<td>19</td>
|
|
<td>12</td>
|
|
<td>7</td>
|
|
<td>0.6</td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td class="strong"><a href="#305e989221ff7819ee74c2690fb3d9b4d6366b86" class="src_link" title="lib/travis/api/v2/http/log.rb">lib/travis/api/v2/http/log.rb</a></td>
|
|
<td class="red strong">50.0 %</td>
|
|
<td>68</td>
|
|
<td>28</td>
|
|
<td>14</td>
|
|
<td>14</td>
|
|
<td>0.5</td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td class="strong"><a href="#87c289727e6a92299bc4a9407f685b69ca6eb426" class="src_link" title="lib/travis/api/v2/http/permissions.rb">lib/travis/api/v2/http/permissions.rb</a></td>
|
|
<td class="red strong">58.33 %</td>
|
|
<td>50</td>
|
|
<td>24</td>
|
|
<td>14</td>
|
|
<td>10</td>
|
|
<td>0.6</td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td class="strong"><a href="#8ff46500e36176862b05aa7513e20da8d68dc208" class="src_link" title="lib/travis/api/v2/http/repositories.rb">lib/travis/api/v2/http/repositories.rb</a></td>
|
|
<td class="red strong">68.75 %</td>
|
|
<td>43</td>
|
|
<td>16</td>
|
|
<td>11</td>
|
|
<td>5</td>
|
|
<td>0.7</td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td class="strong"><a href="#eff78d14dee73bdad5c2af8b49e3b528390c9207" class="src_link" title="lib/travis/api/v2/http/repository.rb">lib/travis/api/v2/http/repository.rb</a></td>
|
|
<td class="red strong">78.57 %</td>
|
|
<td>43</td>
|
|
<td>14</td>
|
|
<td>11</td>
|
|
<td>3</td>
|
|
<td>0.8</td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td class="strong"><a href="#0438b13b58bbb8a610c81181e35ca9c4273df442" class="src_link" title="lib/travis/api/v2/http/request.rb">lib/travis/api/v2/http/request.rb</a></td>
|
|
<td class="red strong">52.17 %</td>
|
|
<td>71</td>
|
|
<td>23</td>
|
|
<td>12</td>
|
|
<td>11</td>
|
|
<td>0.5</td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td class="strong"><a href="#3409238a742e733e8cc83123cd42c5d119a08c09" class="src_link" title="lib/travis/api/v2/http/requests.rb">lib/travis/api/v2/http/requests.rb</a></td>
|
|
<td class="red strong">54.55 %</td>
|
|
<td>68</td>
|
|
<td>22</td>
|
|
<td>12</td>
|
|
<td>10</td>
|
|
<td>0.5</td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td class="strong"><a href="#5b078e65cda2e46c4754334f975a5362fd4e47ac" class="src_link" title="lib/travis/api/v2/http/ssh_key.rb">lib/travis/api/v2/http/ssh_key.rb</a></td>
|
|
<td class="red strong">66.67 %</td>
|
|
<td>26</td>
|
|
<td>15</td>
|
|
<td>10</td>
|
|
<td>5</td>
|
|
<td>0.7</td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td class="strong"><a href="#f9da561db1b52264c76f56f7164b6394902c3a2e" class="src_link" title="lib/travis/api/v2/http/ssl_key.rb">lib/travis/api/v2/http/ssl_key.rb</a></td>
|
|
<td class="red strong">75.0 %</td>
|
|
<td>27</td>
|
|
<td>12</td>
|
|
<td>9</td>
|
|
<td>3</td>
|
|
<td>0.8</td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td class="strong"><a href="#4fe5f748a2411310c3bf861101420669e9a8812e" class="src_link" title="lib/travis/api/v2/http/user.rb">lib/travis/api/v2/http/user.rb</a></td>
|
|
<td class="red strong">73.33 %</td>
|
|
<td>43</td>
|
|
<td>15</td>
|
|
<td>11</td>
|
|
<td>4</td>
|
|
<td>0.7</td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td class="strong"><a href="#dd52431f41a7d9215be3e7f466926538b62b434a" class="src_link" title="lib/travis/api/v2/http/validation_error.rb">lib/travis/api/v2/http/validation_error.rb</a></td>
|
|
<td class="red strong">47.37 %</td>
|
|
<td>39</td>
|
|
<td>19</td>
|
|
<td>9</td>
|
|
<td>10</td>
|
|
<td>0.5</td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td class="strong"><a href="#ec916e10f6af10305ba62ae14eb26968f828b52d" class="src_link" title="lib/travis/api/v3.rb">lib/travis/api/v3.rb</a></td>
|
|
<td class="green strong">100.0 %</td>
|
|
<td>27</td>
|
|
<td>18</td>
|
|
<td>18</td>
|
|
<td>0</td>
|
|
<td>10.1</td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td class="strong"><a href="#130cf32796ab3cf4d5781313e44244a58973bbf8" class="src_link" title="lib/travis/api/v3/access_control.rb">lib/travis/api/v3/access_control.rb</a></td>
|
|
<td class="green strong">100.0 %</td>
|
|
<td>15</td>
|
|
<td>11</td>
|
|
<td>11</td>
|
|
<td>0</td>
|
|
<td>17.1</td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td class="strong"><a href="#0c37cbeb8112d8c673c2de5e8d4a0bc4a54debad" class="src_link" title="lib/travis/api/v3/access_control/anonymous.rb">lib/travis/api/v3/access_control/anonymous.rb</a></td>
|
|
<td class="green strong">100.0 %</td>
|
|
<td>12</td>
|
|
<td>6</td>
|
|
<td>6</td>
|
|
<td>0</td>
|
|
<td>3.0</td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td class="strong"><a href="#0a4dcd743492bb72a7b2e02c986303e9b6a5f680" class="src_link" title="lib/travis/api/v3/access_control/application.rb">lib/travis/api/v3/access_control/application.rb</a></td>
|
|
<td class="green strong">93.33 %</td>
|
|
<td>25</td>
|
|
<td>15</td>
|
|
<td>14</td>
|
|
<td>1</td>
|
|
<td>2.8</td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td class="strong"><a href="#3e4c532be49003dde82e2f143a6ec6abac0c0fa4" class="src_link" title="lib/travis/api/v3/access_control/generic.rb">lib/travis/api/v3/access_control/generic.rb</a></td>
|
|
<td class="green strong">100.0 %</td>
|
|
<td>48</td>
|
|
<td>25</td>
|
|
<td>25</td>
|
|
<td>0</td>
|
|
<td>6.7</td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td class="strong"><a href="#cc06bcaeb6af4b5039cc7be04f2dcf7d8cbc1656" class="src_link" title="lib/travis/api/v3/access_control/legacy_token.rb">lib/travis/api/v3/access_control/legacy_token.rb</a></td>
|
|
<td class="green strong">100.0 %</td>
|
|
<td>27</td>
|
|
<td>15</td>
|
|
<td>15</td>
|
|
<td>0</td>
|
|
<td>2.2</td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td class="strong"><a href="#53595a642e443774649a7e171c5987c76711acd2" class="src_link" title="lib/travis/api/v3/access_control/scoped.rb">lib/travis/api/v3/access_control/scoped.rb</a></td>
|
|
<td class="green strong">100.0 %</td>
|
|
<td>19</td>
|
|
<td>11</td>
|
|
<td>11</td>
|
|
<td>0</td>
|
|
<td>2.1</td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td class="strong"><a href="#79c75a7a3afdda48d239b26bfbce537aac5c7e87" class="src_link" title="lib/travis/api/v3/access_control/signature.rb">lib/travis/api/v3/access_control/signature.rb</a></td>
|
|
<td class="yellow strong">81.25 %</td>
|
|
<td>58</td>
|
|
<td>32</td>
|
|
<td>26</td>
|
|
<td>6</td>
|
|
<td>3.8</td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td class="strong"><a href="#8ed530d2fb0e1b23faa65b796edd40391a551aff" class="src_link" title="lib/travis/api/v3/access_control/user.rb">lib/travis/api/v3/access_control/user.rb</a></td>
|
|
<td class="green strong">100.0 %</td>
|
|
<td>24</td>
|
|
<td>14</td>
|
|
<td>14</td>
|
|
<td>0</td>
|
|
<td>2.3</td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td class="strong"><a href="#e7d3951ce9217b83d561dc22cebb4194095eba79" class="src_link" title="lib/travis/api/v3/error.rb">lib/travis/api/v3/error.rb</a></td>
|
|
<td class="yellow strong">85.71 %</td>
|
|
<td>38</td>
|
|
<td>21</td>
|
|
<td>18</td>
|
|
<td>3</td>
|
|
<td>5.4</td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td class="strong"><a href="#31a1a8c991fef1e18b15080ccfcb0e9ba1d8c1a4" class="src_link" title="lib/travis/api/v3/opt_in.rb">lib/travis/api/v3/opt_in.rb</a></td>
|
|
<td class="green strong">97.22 %</td>
|
|
<td>64</td>
|
|
<td>36</td>
|
|
<td>35</td>
|
|
<td>1</td>
|
|
<td>13.0</td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td class="strong"><a href="#8705c480fd77b20d19558856194eeee048030a20" class="src_link" title="lib/travis/api/v3/renderer.rb">lib/travis/api/v3/renderer.rb</a></td>
|
|
<td class="green strong">100.0 %</td>
|
|
<td>14</td>
|
|
<td>8</td>
|
|
<td>8</td>
|
|
<td>0</td>
|
|
<td>7.1</td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td class="strong"><a href="#1b1a35fbaa7ca2749c8e0b8b9c270d2424fa0183" class="src_link" title="lib/travis/api/v3/renderer/error.rb">lib/travis/api/v3/renderer/error.rb</a></td>
|
|
<td class="green strong">100.0 %</td>
|
|
<td>14</td>
|
|
<td>5</td>
|
|
<td>5</td>
|
|
<td>0</td>
|
|
<td>2.8</td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td class="strong"><a href="#cca5ed5e9f0a0d7cd46bb5427220ee36042a9e9c" class="src_link" title="lib/travis/api/v3/renderer/repository.rb">lib/travis/api/v3/renderer/repository.rb</a></td>
|
|
<td class="green strong">100.0 %</td>
|
|
<td>33</td>
|
|
<td>10</td>
|
|
<td>10</td>
|
|
<td>0</td>
|
|
<td>7.9</td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td class="strong"><a href="#74ddbe2707d65e192759c48049f9527b65ce82db" class="src_link" title="lib/travis/api/v3/result.rb">lib/travis/api/v3/result.rb</a></td>
|
|
<td class="green strong">93.75 %</td>
|
|
<td>28</td>
|
|
<td>16</td>
|
|
<td>15</td>
|
|
<td>1</td>
|
|
<td>3.5</td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td class="strong"><a href="#31c7c96fc03fbcc205b874d99b9af9102c3400d7" class="src_link" title="lib/travis/api/v3/router.rb">lib/travis/api/v3/router.rb</a></td>
|
|
<td class="green strong">90.32 %</td>
|
|
<td>49</td>
|
|
<td>31</td>
|
|
<td>28</td>
|
|
<td>3</td>
|
|
<td>10.5</td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td class="strong"><a href="#0e450b71a9d314b9765473a9783eafbc6ad24b88" class="src_link" title="lib/travis/api/v3/routes.rb">lib/travis/api/v3/routes.rb</a></td>
|
|
<td class="green strong">100.0 %</td>
|
|
<td>11</td>
|
|
<td>7</td>
|
|
<td>7</td>
|
|
<td>0</td>
|
|
<td>1.0</td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td class="strong"><a href="#2e298b60191a32090a5982c87b6a53c75d24cb8c" class="src_link" title="lib/travis/api/v3/routes/dsl.rb">lib/travis/api/v3/routes/dsl.rb</a></td>
|
|
<td class="green strong">97.22 %</td>
|
|
<td>63</td>
|
|
<td>36</td>
|
|
<td>35</td>
|
|
<td>1</td>
|
|
<td>12.3</td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td class="strong"><a href="#f17bf0ade034477bfdb62ad253c6d587b77e5214" class="src_link" title="lib/travis/api/v3/routes/resource.rb">lib/travis/api/v3/routes/resource.rb</a></td>
|
|
<td class="green strong">100.0 %</td>
|
|
<td>21</td>
|
|
<td>12</td>
|
|
<td>12</td>
|
|
<td>0</td>
|
|
<td>1.0</td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td class="strong"><a href="#847a0c89fe4c592228989215bbeb1143051d97b6" class="src_link" title="lib/travis/api/v3/service.rb">lib/travis/api/v3/service.rb</a></td>
|
|
<td class="yellow strong">85.0 %</td>
|
|
<td>33</td>
|
|
<td>20</td>
|
|
<td>17</td>
|
|
<td>3</td>
|
|
<td>4.8</td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td class="strong"><a href="#63648861eabe7693b10dd0f87b899dfb0a4ff38f" class="src_link" title="lib/travis/api/v3/service_index.rb">lib/travis/api/v3/service_index.rb</a></td>
|
|
<td class="green strong">91.53 %</td>
|
|
<td>90</td>
|
|
<td>59</td>
|
|
<td>54</td>
|
|
<td>5</td>
|
|
<td>1.9</td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td class="strong"><a href="#4fa3e7e42191523754efec186ec8bfce3291040f" class="src_link" title="lib/travis/api/v3/services.rb">lib/travis/api/v3/services.rb</a></td>
|
|
<td class="green strong">100.0 %</td>
|
|
<td>8</td>
|
|
<td>5</td>
|
|
<td>5</td>
|
|
<td>0</td>
|
|
<td>11.4</td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td class="strong"><a href="#a6bb60f0c77473ac7b1a29920833a93a5c2cd7f7" class="src_link" title="lib/travis/api/v3/services/find_repository.rb">lib/travis/api/v3/services/find_repository.rb</a></td>
|
|
<td class="red strong">78.57 %</td>
|
|
<td>22</td>
|
|
<td>14</td>
|
|
<td>11</td>
|
|
<td>3</td>
|
|
<td>9.6</td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td class="strong"><a href="#dc5349ac13a7e081565d2ad293a276d468fd8b0b" class="src_link" title="lib/travis/private_key.rb">lib/travis/private_key.rb</a></td>
|
|
<td class="red strong">50.0 %</td>
|
|
<td>16</td>
|
|
<td>10</td>
|
|
<td>5</td>
|
|
<td>5</td>
|
|
<td>0.5</td>
|
|
</tr>
|
|
|
|
</tbody>
|
|
</table>
|
|
</div>
|
|
|
|
|
|
|
|
<div class="file_list_container" id="v3">
|
|
<h2>
|
|
<span class="group_name">v3</span>
|
|
(<span class="covered_percent"><span class="green">93.68%</span></span>
|
|
covered at
|
|
<span class="covered_strength">
|
|
<span class="green">
|
|
6.51
|
|
</span>
|
|
</span> hits/line)
|
|
</h2>
|
|
<a name="v3"></a>
|
|
<div>
|
|
<b>23</b> files in total.
|
|
<b>427</b> relevant lines.
|
|
<span class="green"><b>400</b> lines covered</span> and
|
|
<span class="red"><b>27</b> lines missed </span>
|
|
</div>
|
|
<table class="file_list">
|
|
<thead>
|
|
<tr>
|
|
<th>File</th>
|
|
<th>% covered</th>
|
|
<th>Lines</th>
|
|
<th>Relevant Lines</th>
|
|
<th>Lines covered</th>
|
|
<th>Lines missed</th>
|
|
<th>Avg. Hits / Line</th>
|
|
</tr>
|
|
</thead>
|
|
<tbody>
|
|
|
|
<tr>
|
|
<td class="strong"><a href="#ec916e10f6af10305ba62ae14eb26968f828b52d" class="src_link" title="lib/travis/api/v3.rb">lib/travis/api/v3.rb</a></td>
|
|
<td class="green strong">100.0 %</td>
|
|
<td>27</td>
|
|
<td>18</td>
|
|
<td>18</td>
|
|
<td>0</td>
|
|
<td>10.1</td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td class="strong"><a href="#130cf32796ab3cf4d5781313e44244a58973bbf8" class="src_link" title="lib/travis/api/v3/access_control.rb">lib/travis/api/v3/access_control.rb</a></td>
|
|
<td class="green strong">100.0 %</td>
|
|
<td>15</td>
|
|
<td>11</td>
|
|
<td>11</td>
|
|
<td>0</td>
|
|
<td>17.1</td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td class="strong"><a href="#0c37cbeb8112d8c673c2de5e8d4a0bc4a54debad" class="src_link" title="lib/travis/api/v3/access_control/anonymous.rb">lib/travis/api/v3/access_control/anonymous.rb</a></td>
|
|
<td class="green strong">100.0 %</td>
|
|
<td>12</td>
|
|
<td>6</td>
|
|
<td>6</td>
|
|
<td>0</td>
|
|
<td>3.0</td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td class="strong"><a href="#0a4dcd743492bb72a7b2e02c986303e9b6a5f680" class="src_link" title="lib/travis/api/v3/access_control/application.rb">lib/travis/api/v3/access_control/application.rb</a></td>
|
|
<td class="green strong">93.33 %</td>
|
|
<td>25</td>
|
|
<td>15</td>
|
|
<td>14</td>
|
|
<td>1</td>
|
|
<td>2.8</td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td class="strong"><a href="#3e4c532be49003dde82e2f143a6ec6abac0c0fa4" class="src_link" title="lib/travis/api/v3/access_control/generic.rb">lib/travis/api/v3/access_control/generic.rb</a></td>
|
|
<td class="green strong">100.0 %</td>
|
|
<td>48</td>
|
|
<td>25</td>
|
|
<td>25</td>
|
|
<td>0</td>
|
|
<td>6.7</td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td class="strong"><a href="#cc06bcaeb6af4b5039cc7be04f2dcf7d8cbc1656" class="src_link" title="lib/travis/api/v3/access_control/legacy_token.rb">lib/travis/api/v3/access_control/legacy_token.rb</a></td>
|
|
<td class="green strong">100.0 %</td>
|
|
<td>27</td>
|
|
<td>15</td>
|
|
<td>15</td>
|
|
<td>0</td>
|
|
<td>2.2</td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td class="strong"><a href="#53595a642e443774649a7e171c5987c76711acd2" class="src_link" title="lib/travis/api/v3/access_control/scoped.rb">lib/travis/api/v3/access_control/scoped.rb</a></td>
|
|
<td class="green strong">100.0 %</td>
|
|
<td>19</td>
|
|
<td>11</td>
|
|
<td>11</td>
|
|
<td>0</td>
|
|
<td>2.1</td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td class="strong"><a href="#79c75a7a3afdda48d239b26bfbce537aac5c7e87" class="src_link" title="lib/travis/api/v3/access_control/signature.rb">lib/travis/api/v3/access_control/signature.rb</a></td>
|
|
<td class="yellow strong">81.25 %</td>
|
|
<td>58</td>
|
|
<td>32</td>
|
|
<td>26</td>
|
|
<td>6</td>
|
|
<td>3.8</td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td class="strong"><a href="#8ed530d2fb0e1b23faa65b796edd40391a551aff" class="src_link" title="lib/travis/api/v3/access_control/user.rb">lib/travis/api/v3/access_control/user.rb</a></td>
|
|
<td class="green strong">100.0 %</td>
|
|
<td>24</td>
|
|
<td>14</td>
|
|
<td>14</td>
|
|
<td>0</td>
|
|
<td>2.3</td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td class="strong"><a href="#e7d3951ce9217b83d561dc22cebb4194095eba79" class="src_link" title="lib/travis/api/v3/error.rb">lib/travis/api/v3/error.rb</a></td>
|
|
<td class="yellow strong">85.71 %</td>
|
|
<td>38</td>
|
|
<td>21</td>
|
|
<td>18</td>
|
|
<td>3</td>
|
|
<td>5.4</td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td class="strong"><a href="#31a1a8c991fef1e18b15080ccfcb0e9ba1d8c1a4" class="src_link" title="lib/travis/api/v3/opt_in.rb">lib/travis/api/v3/opt_in.rb</a></td>
|
|
<td class="green strong">97.22 %</td>
|
|
<td>64</td>
|
|
<td>36</td>
|
|
<td>35</td>
|
|
<td>1</td>
|
|
<td>13.0</td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td class="strong"><a href="#8705c480fd77b20d19558856194eeee048030a20" class="src_link" title="lib/travis/api/v3/renderer.rb">lib/travis/api/v3/renderer.rb</a></td>
|
|
<td class="green strong">100.0 %</td>
|
|
<td>14</td>
|
|
<td>8</td>
|
|
<td>8</td>
|
|
<td>0</td>
|
|
<td>7.1</td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td class="strong"><a href="#1b1a35fbaa7ca2749c8e0b8b9c270d2424fa0183" class="src_link" title="lib/travis/api/v3/renderer/error.rb">lib/travis/api/v3/renderer/error.rb</a></td>
|
|
<td class="green strong">100.0 %</td>
|
|
<td>14</td>
|
|
<td>5</td>
|
|
<td>5</td>
|
|
<td>0</td>
|
|
<td>2.8</td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td class="strong"><a href="#cca5ed5e9f0a0d7cd46bb5427220ee36042a9e9c" class="src_link" title="lib/travis/api/v3/renderer/repository.rb">lib/travis/api/v3/renderer/repository.rb</a></td>
|
|
<td class="green strong">100.0 %</td>
|
|
<td>33</td>
|
|
<td>10</td>
|
|
<td>10</td>
|
|
<td>0</td>
|
|
<td>7.9</td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td class="strong"><a href="#74ddbe2707d65e192759c48049f9527b65ce82db" class="src_link" title="lib/travis/api/v3/result.rb">lib/travis/api/v3/result.rb</a></td>
|
|
<td class="green strong">93.75 %</td>
|
|
<td>28</td>
|
|
<td>16</td>
|
|
<td>15</td>
|
|
<td>1</td>
|
|
<td>3.5</td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td class="strong"><a href="#31c7c96fc03fbcc205b874d99b9af9102c3400d7" class="src_link" title="lib/travis/api/v3/router.rb">lib/travis/api/v3/router.rb</a></td>
|
|
<td class="green strong">90.32 %</td>
|
|
<td>49</td>
|
|
<td>31</td>
|
|
<td>28</td>
|
|
<td>3</td>
|
|
<td>10.5</td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td class="strong"><a href="#0e450b71a9d314b9765473a9783eafbc6ad24b88" class="src_link" title="lib/travis/api/v3/routes.rb">lib/travis/api/v3/routes.rb</a></td>
|
|
<td class="green strong">100.0 %</td>
|
|
<td>11</td>
|
|
<td>7</td>
|
|
<td>7</td>
|
|
<td>0</td>
|
|
<td>1.0</td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td class="strong"><a href="#2e298b60191a32090a5982c87b6a53c75d24cb8c" class="src_link" title="lib/travis/api/v3/routes/dsl.rb">lib/travis/api/v3/routes/dsl.rb</a></td>
|
|
<td class="green strong">97.22 %</td>
|
|
<td>63</td>
|
|
<td>36</td>
|
|
<td>35</td>
|
|
<td>1</td>
|
|
<td>12.3</td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td class="strong"><a href="#f17bf0ade034477bfdb62ad253c6d587b77e5214" class="src_link" title="lib/travis/api/v3/routes/resource.rb">lib/travis/api/v3/routes/resource.rb</a></td>
|
|
<td class="green strong">100.0 %</td>
|
|
<td>21</td>
|
|
<td>12</td>
|
|
<td>12</td>
|
|
<td>0</td>
|
|
<td>1.0</td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td class="strong"><a href="#847a0c89fe4c592228989215bbeb1143051d97b6" class="src_link" title="lib/travis/api/v3/service.rb">lib/travis/api/v3/service.rb</a></td>
|
|
<td class="yellow strong">85.0 %</td>
|
|
<td>33</td>
|
|
<td>20</td>
|
|
<td>17</td>
|
|
<td>3</td>
|
|
<td>4.8</td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td class="strong"><a href="#63648861eabe7693b10dd0f87b899dfb0a4ff38f" class="src_link" title="lib/travis/api/v3/service_index.rb">lib/travis/api/v3/service_index.rb</a></td>
|
|
<td class="green strong">91.53 %</td>
|
|
<td>90</td>
|
|
<td>59</td>
|
|
<td>54</td>
|
|
<td>5</td>
|
|
<td>1.9</td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td class="strong"><a href="#4fa3e7e42191523754efec186ec8bfce3291040f" class="src_link" title="lib/travis/api/v3/services.rb">lib/travis/api/v3/services.rb</a></td>
|
|
<td class="green strong">100.0 %</td>
|
|
<td>8</td>
|
|
<td>5</td>
|
|
<td>5</td>
|
|
<td>0</td>
|
|
<td>11.4</td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td class="strong"><a href="#a6bb60f0c77473ac7b1a29920833a93a5c2cd7f7" class="src_link" title="lib/travis/api/v3/services/find_repository.rb">lib/travis/api/v3/services/find_repository.rb</a></td>
|
|
<td class="red strong">78.57 %</td>
|
|
<td>22</td>
|
|
<td>14</td>
|
|
<td>11</td>
|
|
<td>3</td>
|
|
<td>9.6</td>
|
|
</tr>
|
|
|
|
</tbody>
|
|
</table>
|
|
</div>
|
|
|
|
|
|
<div class="file_list_container" id="Ungrouped">
|
|
<h2>
|
|
<span class="group_name">Ungrouped</span>
|
|
(<span class="covered_percent"><span class="red">60.11%</span></span>
|
|
covered at
|
|
<span class="covered_strength">
|
|
<span class="green">
|
|
5.02
|
|
</span>
|
|
</span> hits/line)
|
|
</h2>
|
|
<a name="Ungrouped"></a>
|
|
<div>
|
|
<b>70</b> files in total.
|
|
<b>1637</b> relevant lines.
|
|
<span class="green"><b>984</b> lines covered</span> and
|
|
<span class="red"><b>653</b> lines missed </span>
|
|
</div>
|
|
<table class="file_list">
|
|
<thead>
|
|
<tr>
|
|
<th>File</th>
|
|
<th>% covered</th>
|
|
<th>Lines</th>
|
|
<th>Relevant Lines</th>
|
|
<th>Lines covered</th>
|
|
<th>Lines missed</th>
|
|
<th>Avg. Hits / Line</th>
|
|
</tr>
|
|
</thead>
|
|
<tbody>
|
|
|
|
<tr>
|
|
<td class="strong"><a href="#6a8e7022de4db451dc6c402d7b521d74b4867cec" class="src_link" title="lib/travis/api/app.rb">lib/travis/api/app.rb</a></td>
|
|
<td class="yellow strong">85.25 %</td>
|
|
<td>207</td>
|
|
<td>122</td>
|
|
<td>104</td>
|
|
<td>18</td>
|
|
<td>21.2</td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td class="strong"><a href="#2563a9e3b6860f10bc10bc8b9abc2e0b307c3396" class="src_link" title="lib/travis/api/app/access_token.rb">lib/travis/api/app/access_token.rb</a></td>
|
|
<td class="yellow strong">87.5 %</td>
|
|
<td>105</td>
|
|
<td>64</td>
|
|
<td>56</td>
|
|
<td>8</td>
|
|
<td>4.3</td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td class="strong"><a href="#a961b2b2494498d5ea5ba390081b58db5ba6a9ae" class="src_link" title="lib/travis/api/app/base.rb">lib/travis/api/app/base.rb</a></td>
|
|
<td class="red strong">73.08 %</td>
|
|
<td>53</td>
|
|
<td>26</td>
|
|
<td>19</td>
|
|
<td>7</td>
|
|
<td>11.0</td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td class="strong"><a href="#d160d1d2c1e6c6e0542165ddbf75627d39b2de6f" class="src_link" title="lib/travis/api/app/cors.rb">lib/travis/api/app/cors.rb</a></td>
|
|
<td class="red strong">80.0 %</td>
|
|
<td>20</td>
|
|
<td>10</td>
|
|
<td>8</td>
|
|
<td>2</td>
|
|
<td>7.4</td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td class="strong"><a href="#eeda47705beb665db84542493bea1c2e0ec05731" class="src_link" title="lib/travis/api/app/endpoint.rb">lib/travis/api/app/endpoint.rb</a></td>
|
|
<td class="red strong">70.0 %</td>
|
|
<td>50</td>
|
|
<td>30</td>
|
|
<td>21</td>
|
|
<td>9</td>
|
|
<td>17.9</td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td class="strong"><a href="#b2b6630e8ce43a4e90ba2fa3f0747e7269631dd5" class="src_link" title="lib/travis/api/app/endpoint/accounts.rb">lib/travis/api/app/endpoint/accounts.rb</a></td>
|
|
<td class="yellow strong">83.33 %</td>
|
|
<td>11</td>
|
|
<td>6</td>
|
|
<td>5</td>
|
|
<td>1</td>
|
|
<td>0.8</td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td class="strong"><a href="#a5a778403a26fa47d8dfe304f657adcbfa66f559" class="src_link" title="lib/travis/api/app/endpoint/authorization.rb">lib/travis/api/app/endpoint/authorization.rb</a></td>
|
|
<td class="red strong">26.45 %</td>
|
|
<td>522</td>
|
|
<td>155</td>
|
|
<td>41</td>
|
|
<td>114</td>
|
|
<td>0.3</td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td class="strong"><a href="#2b74a2462ad5e4f3ca518f0cc6f13ddc82ee8762" class="src_link" title="lib/travis/api/app/endpoint/branches.rb">lib/travis/api/app/endpoint/branches.rb</a></td>
|
|
<td class="yellow strong">83.33 %</td>
|
|
<td>16</td>
|
|
<td>6</td>
|
|
<td>5</td>
|
|
<td>1</td>
|
|
<td>0.8</td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td class="strong"><a href="#f830dba6ed178eb88e884e4ef578db0073e9384a" class="src_link" title="lib/travis/api/app/endpoint/broadcasts.rb">lib/travis/api/app/endpoint/broadcasts.rb</a></td>
|
|
<td class="yellow strong">83.33 %</td>
|
|
<td>11</td>
|
|
<td>6</td>
|
|
<td>5</td>
|
|
<td>1</td>
|
|
<td>0.8</td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td class="strong"><a href="#fac69dfa06cb89c53a04099fb945fb4a805cc42c" class="src_link" title="lib/travis/api/app/endpoint/builds.rb">lib/travis/api/app/endpoint/builds.rb</a></td>
|
|
<td class="red strong">27.59 %</td>
|
|
<td>53</td>
|
|
<td>29</td>
|
|
<td>8</td>
|
|
<td>21</td>
|
|
<td>0.3</td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td class="strong"><a href="#03dcd32988fb710bc7a3c06636a6780bce656589" class="src_link" title="lib/travis/api/app/endpoint/documentation.rb">lib/travis/api/app/endpoint/documentation.rb</a></td>
|
|
<td class="yellow strong">85.71 %</td>
|
|
<td>13</td>
|
|
<td>7</td>
|
|
<td>6</td>
|
|
<td>1</td>
|
|
<td>0.9</td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td class="strong"><a href="#0dc46adef05fa2cbeadacf05c59276980cc25367" class="src_link" title="lib/travis/api/app/endpoint/endpoints.rb">lib/travis/api/app/endpoint/endpoints.rb</a></td>
|
|
<td class="yellow strong">86.96 %</td>
|
|
<td>68</td>
|
|
<td>23</td>
|
|
<td>20</td>
|
|
<td>3</td>
|
|
<td>19.8</td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td class="strong"><a href="#413ff5b985954d06f57e54bae462c9380050682b" class="src_link" title="lib/travis/api/app/endpoint/env_vars.rb">lib/travis/api/app/endpoint/env_vars.rb</a></td>
|
|
<td class="red strong">44.44 %</td>
|
|
<td>31</td>
|
|
<td>18</td>
|
|
<td>8</td>
|
|
<td>10</td>
|
|
<td>0.4</td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td class="strong"><a href="#f01f22d7534ebd190653ed0f88f71a94320108a3" class="src_link" title="lib/travis/api/app/endpoint/home.rb">lib/travis/api/app/endpoint/home.rb</a></td>
|
|
<td class="red strong">66.67 %</td>
|
|
<td>54</td>
|
|
<td>18</td>
|
|
<td>12</td>
|
|
<td>6</td>
|
|
<td>0.7</td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td class="strong"><a href="#389e755e519bf86618fcf82593746fcedb9c4271" class="src_link" title="lib/travis/api/app/endpoint/hooks.rb">lib/travis/api/app/endpoint/hooks.rb</a></td>
|
|
<td class="red strong">75.0 %</td>
|
|
<td>15</td>
|
|
<td>8</td>
|
|
<td>6</td>
|
|
<td>2</td>
|
|
<td>0.8</td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td class="strong"><a href="#0c26cbaa8343afc54bde5f948dbae2fe3039c766" class="src_link" title="lib/travis/api/app/endpoint/jobs.rb">lib/travis/api/app/endpoint/jobs.rb</a></td>
|
|
<td class="red strong">22.73 %</td>
|
|
<td>122</td>
|
|
<td>66</td>
|
|
<td>15</td>
|
|
<td>51</td>
|
|
<td>0.2</td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td class="strong"><a href="#1d8c0ceda3860fb26fc34a1a770660c35db5b435" class="src_link" title="lib/travis/api/app/endpoint/lint.rb">lib/travis/api/app/endpoint/lint.rb</a></td>
|
|
<td class="red strong">61.54 %</td>
|
|
<td>19</td>
|
|
<td>13</td>
|
|
<td>8</td>
|
|
<td>5</td>
|
|
<td>0.6</td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td class="strong"><a href="#5d621a9a5eb87e9eb39a114965b4bc43594c05ee" class="src_link" title="lib/travis/api/app/endpoint/logs.rb">lib/travis/api/app/endpoint/logs.rb</a></td>
|
|
<td class="yellow strong">83.33 %</td>
|
|
<td>13</td>
|
|
<td>6</td>
|
|
<td>5</td>
|
|
<td>1</td>
|
|
<td>0.8</td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td class="strong"><a href="#41717bfcba400b9bc1a7add2cb84d3195cfc3565" class="src_link" title="lib/travis/api/app/endpoint/repos.rb">lib/travis/api/app/endpoint/repos.rb</a></td>
|
|
<td class="red strong">39.71 %</td>
|
|
<td>189</td>
|
|
<td>68</td>
|
|
<td>27</td>
|
|
<td>41</td>
|
|
<td>0.4</td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td class="strong"><a href="#3542f33a7b8a282ed0436611428aa30ad3f980a1" class="src_link" title="lib/travis/api/app/endpoint/requests.rb">lib/travis/api/app/endpoint/requests.rb</a></td>
|
|
<td class="red strong">47.06 %</td>
|
|
<td>32</td>
|
|
<td>17</td>
|
|
<td>8</td>
|
|
<td>9</td>
|
|
<td>0.5</td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td class="strong"><a href="#b615d4751e9fd711ed50e22c4b49c7c51f964d93" class="src_link" title="lib/travis/api/app/endpoint/setting_endpoint.rb">lib/travis/api/app/endpoint/setting_endpoint.rb</a></td>
|
|
<td class="red strong">52.73 %</td>
|
|
<td>98</td>
|
|
<td>55</td>
|
|
<td>29</td>
|
|
<td>26</td>
|
|
<td>4.6</td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td class="strong"><a href="#c146923d5484592bc716b1adae4f3329fd9ebb1b" class="src_link" title="lib/travis/api/app/endpoint/singleton_settings_endpoint.rb">lib/travis/api/app/endpoint/singleton_settings_endpoint.rb</a></td>
|
|
<td class="red strong">57.14 %</td>
|
|
<td>46</td>
|
|
<td>28</td>
|
|
<td>16</td>
|
|
<td>12</td>
|
|
<td>0.6</td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td class="strong"><a href="#3aa4c3de70a6e7203940667017613935754e19cd" class="src_link" title="lib/travis/api/app/endpoint/uptime.rb">lib/travis/api/app/endpoint/uptime.rb</a></td>
|
|
<td class="red strong">55.56 %</td>
|
|
<td>16</td>
|
|
<td>9</td>
|
|
<td>5</td>
|
|
<td>4</td>
|
|
<td>0.6</td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td class="strong"><a href="#2aeec642e9353983d22c25e11bb6aee7a68ff327" class="src_link" title="lib/travis/api/app/endpoint/users.rb">lib/travis/api/app/endpoint/users.rb</a></td>
|
|
<td class="red strong">50.0 %</td>
|
|
<td>59</td>
|
|
<td>18</td>
|
|
<td>9</td>
|
|
<td>9</td>
|
|
<td>0.5</td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td class="strong"><a href="#98cb249669c6e20fed930c4f814f8e6266add77c" class="src_link" title="lib/travis/api/app/extensions.rb">lib/travis/api/app/extensions.rb</a></td>
|
|
<td class="green strong">100.0 %</td>
|
|
<td>8</td>
|
|
<td>4</td>
|
|
<td>4</td>
|
|
<td>0</td>
|
|
<td>2.0</td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td class="strong"><a href="#00c3504cff5eca9f25748185fb2bd47ad1755d92" class="src_link" title="lib/travis/api/app/extensions/expose_pattern.rb">lib/travis/api/app/extensions/expose_pattern.rb</a></td>
|
|
<td class="green strong">100.0 %</td>
|
|
<td>12</td>
|
|
<td>7</td>
|
|
<td>7</td>
|
|
<td>0</td>
|
|
<td>34.7</td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td class="strong"><a href="#cf7268e37e643b00ddda6c99c2b8d2601a66df25" class="src_link" title="lib/travis/api/app/extensions/scoping.rb">lib/travis/api/app/extensions/scoping.rb</a></td>
|
|
<td class="red strong">41.03 %</td>
|
|
<td>69</td>
|
|
<td>39</td>
|
|
<td>16</td>
|
|
<td>23</td>
|
|
<td>9.4</td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td class="strong"><a href="#4afdb495e463d11449413cb7fabf94f05a66ff88" class="src_link" title="lib/travis/api/app/extensions/smart_constants.rb">lib/travis/api/app/extensions/smart_constants.rb</a></td>
|
|
<td class="green strong">100.0 %</td>
|
|
<td>28</td>
|
|
<td>11</td>
|
|
<td>11</td>
|
|
<td>0</td>
|
|
<td>3.3</td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td class="strong"><a href="#32932af295b8d816c57702d2dd3215d03df46d91" class="src_link" title="lib/travis/api/app/extensions/subclass_tracker.rb">lib/travis/api/app/extensions/subclass_tracker.rb</a></td>
|
|
<td class="green strong">100.0 %</td>
|
|
<td>25</td>
|
|
<td>13</td>
|
|
<td>13</td>
|
|
<td>0</td>
|
|
<td>113.6</td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td class="strong"><a href="#3583b3399a71ebe7de3f253f8a6a166b5ff1450d" class="src_link" title="lib/travis/api/app/helpers.rb">lib/travis/api/app/helpers.rb</a></td>
|
|
<td class="green strong">100.0 %</td>
|
|
<td>8</td>
|
|
<td>4</td>
|
|
<td>4</td>
|
|
<td>0</td>
|
|
<td>2.5</td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td class="strong"><a href="#d434ebb9387430acf5e4c2c6adda113f213d9a27" class="src_link" title="lib/travis/api/app/helpers/accept.rb">lib/travis/api/app/helpers/accept.rb</a></td>
|
|
<td class="red strong">49.06 %</td>
|
|
<td>93</td>
|
|
<td>53</td>
|
|
<td>26</td>
|
|
<td>27</td>
|
|
<td>1.5</td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td class="strong"><a href="#945fc5424b8698f6c9f47bf45d950c7993fe7f7d" class="src_link" title="lib/travis/api/app/helpers/current_user.rb">lib/travis/api/app/helpers/current_user.rb</a></td>
|
|
<td class="red strong">70.0 %</td>
|
|
<td>19</td>
|
|
<td>10</td>
|
|
<td>7</td>
|
|
<td>3</td>
|
|
<td>0.7</td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td class="strong"><a href="#d6d6177d6e0d49294315541845ceb6265759cdf1" class="src_link" title="lib/travis/api/app/helpers/db_follower.rb">lib/travis/api/app/helpers/db_follower.rb</a></td>
|
|
<td class="yellow strong">83.33 %</td>
|
|
<td>11</td>
|
|
<td>6</td>
|
|
<td>5</td>
|
|
<td>1</td>
|
|
<td>0.8</td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td class="strong"><a href="#9b6cc591941ba41c4e94fefe940858e3353c284f" class="src_link" title="lib/travis/api/app/helpers/flash.rb">lib/travis/api/app/helpers/flash.rb</a></td>
|
|
<td class="green strong">100.0 %</td>
|
|
<td>11</td>
|
|
<td>6</td>
|
|
<td>6</td>
|
|
<td>0</td>
|
|
<td>2.5</td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td class="strong"><a href="#4bc54455bbe2ec43bb23f5b569a91e4d444598b6" class="src_link" title="lib/travis/api/app/helpers/mime_types.rb">lib/travis/api/app/helpers/mime_types.rb</a></td>
|
|
<td class="red strong">64.29 %</td>
|
|
<td>28</td>
|
|
<td>14</td>
|
|
<td>9</td>
|
|
<td>5</td>
|
|
<td>0.6</td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td class="strong"><a href="#e5ee14c5580baf7a66bac731983db9d3bdb48996" class="src_link" title="lib/travis/api/app/helpers/respond_with.rb">lib/travis/api/app/helpers/respond_with.rb</a></td>
|
|
<td class="red strong">40.54 %</td>
|
|
<td>70</td>
|
|
<td>37</td>
|
|
<td>15</td>
|
|
<td>22</td>
|
|
<td>2.5</td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td class="strong"><a href="#abcb6fbe07ff5db52c5716e39eb648ef96550296" class="src_link" title="lib/travis/api/app/middleware.rb">lib/travis/api/app/middleware.rb</a></td>
|
|
<td class="green strong">100.0 %</td>
|
|
<td>7</td>
|
|
<td>3</td>
|
|
<td>3</td>
|
|
<td>0</td>
|
|
<td>1.0</td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td class="strong"><a href="#fafd069a2bcef83fff5f536d88402c883f3cdc31" class="src_link" title="lib/travis/api/app/middleware/logging.rb">lib/travis/api/app/middleware/logging.rb</a></td>
|
|
<td class="green strong">100.0 %</td>
|
|
<td>15</td>
|
|
<td>8</td>
|
|
<td>8</td>
|
|
<td>0</td>
|
|
<td>6.6</td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td class="strong"><a href="#7670839fd3d16bec4a807509898851298c771968" class="src_link" title="lib/travis/api/app/middleware/metriks.rb">lib/travis/api/app/middleware/metriks.rb</a></td>
|
|
<td class="red strong">77.42 %</td>
|
|
<td>48</td>
|
|
<td>31</td>
|
|
<td>24</td>
|
|
<td>7</td>
|
|
<td>12.5</td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td class="strong"><a href="#fe2923d329420298ae0fb9e1101c22a8b601d151" class="src_link" title="lib/travis/api/app/middleware/rewrite.rb">lib/travis/api/app/middleware/rewrite.rb</a></td>
|
|
<td class="red strong">78.57 %</td>
|
|
<td>75</td>
|
|
<td>42</td>
|
|
<td>33</td>
|
|
<td>9</td>
|
|
<td>3.6</td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td class="strong"><a href="#26dd70a212f3b2cbf26d11a0b7f29ee3dec679c3" class="src_link" title="lib/travis/api/app/middleware/scope_check.rb">lib/travis/api/app/middleware/scope_check.rb</a></td>
|
|
<td class="green strong">92.59 %</td>
|
|
<td>47</td>
|
|
<td>27</td>
|
|
<td>25</td>
|
|
<td>2</td>
|
|
<td>8.9</td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td class="strong"><a href="#57848e06570d6ebc2e75aad01bea70082a1c55f4" class="src_link" title="lib/travis/api/app/middleware/user_agent_tracker.rb">lib/travis/api/app/middleware/user_agent_tracker.rb</a></td>
|
|
<td class="red strong">40.0 %</td>
|
|
<td>62</td>
|
|
<td>35</td>
|
|
<td>14</td>
|
|
<td>21</td>
|
|
<td>1.7</td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td class="strong"><a href="#866d316bcfc64963406986d03c50d1280b8fe34d" class="src_link" title="lib/travis/api/app/services/schedule_request.rb">lib/travis/api/app/services/schedule_request.rb</a></td>
|
|
<td class="red strong">51.61 %</td>
|
|
<td>52</td>
|
|
<td>31</td>
|
|
<td>16</td>
|
|
<td>15</td>
|
|
<td>0.5</td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td class="strong"><a href="#d04c5eced516ab14b9065b4d34d0af855835a730" class="src_link" title="lib/travis/api/serializer.rb">lib/travis/api/serializer.rb</a></td>
|
|
<td class="red strong">66.67 %</td>
|
|
<td>23</td>
|
|
<td>12</td>
|
|
<td>8</td>
|
|
<td>4</td>
|
|
<td>0.7</td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td class="strong"><a href="#babe3ce05ce1d657f847b2e01c64437b8e58b014" class="src_link" title="lib/travis/api/v2.rb">lib/travis/api/v2.rb</a></td>
|
|
<td class="green strong">100.0 %</td>
|
|
<td>8</td>
|
|
<td>4</td>
|
|
<td>4</td>
|
|
<td>0</td>
|
|
<td>1.0</td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td class="strong"><a href="#1c817b9839dda1170aec2560bad5a09065552de6" class="src_link" title="lib/travis/api/v2/http.rb">lib/travis/api/v2/http.rb</a></td>
|
|
<td class="green strong">100.0 %</td>
|
|
<td>33</td>
|
|
<td>28</td>
|
|
<td>28</td>
|
|
<td>0</td>
|
|
<td>1.0</td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td class="strong"><a href="#c48990e0accf6ba7189617a1b67f9c86eecfc562" class="src_link" title="lib/travis/api/v2/http/accounts.rb">lib/travis/api/v2/http/accounts.rb</a></td>
|
|
<td class="red strong">68.75 %</td>
|
|
<td>38</td>
|
|
<td>16</td>
|
|
<td>11</td>
|
|
<td>5</td>
|
|
<td>0.7</td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td class="strong"><a href="#65342af497e7edc515415235ed81e3bbaccc6979" class="src_link" title="lib/travis/api/v2/http/annotations.rb">lib/travis/api/v2/http/annotations.rb</a></td>
|
|
<td class="red strong">71.43 %</td>
|
|
<td>34</td>
|
|
<td>14</td>
|
|
<td>10</td>
|
|
<td>4</td>
|
|
<td>0.7</td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td class="strong"><a href="#e48076813d88d2c6e10c03686156a6f19429e60e" class="src_link" title="lib/travis/api/v2/http/branch.rb">lib/travis/api/v2/http/branch.rb</a></td>
|
|
<td class="red strong">71.43 %</td>
|
|
<td>28</td>
|
|
<td>14</td>
|
|
<td>10</td>
|
|
<td>4</td>
|
|
<td>0.7</td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td class="strong"><a href="#58933f40c3a13ad2f3470bedf8880494dabc2b2d" class="src_link" title="lib/travis/api/v2/http/branches.rb">lib/travis/api/v2/http/branches.rb</a></td>
|
|
<td class="red strong">54.55 %</td>
|
|
<td>60</td>
|
|
<td>22</td>
|
|
<td>12</td>
|
|
<td>10</td>
|
|
<td>0.5</td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td class="strong"><a href="#c46347e1a0d259fc446170187bf8517d99d49177" class="src_link" title="lib/travis/api/v2/http/broadcasts.rb">lib/travis/api/v2/http/broadcasts.rb</a></td>
|
|
<td class="red strong">66.67 %</td>
|
|
<td>32</td>
|
|
<td>15</td>
|
|
<td>10</td>
|
|
<td>5</td>
|
|
<td>0.7</td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td class="strong"><a href="#8c4ac5c4e74342720580a492f7c3aa9d4d384e43" class="src_link" title="lib/travis/api/v2/http/build.rb">lib/travis/api/v2/http/build.rb</a></td>
|
|
<td class="red strong">60.87 %</td>
|
|
<td>87</td>
|
|
<td>23</td>
|
|
<td>14</td>
|
|
<td>9</td>
|
|
<td>0.6</td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td class="strong"><a href="#1abcacda27e1da4c1f9879072dc5eb5d0a6f1eab" class="src_link" title="lib/travis/api/v2/http/builds.rb">lib/travis/api/v2/http/builds.rb</a></td>
|
|
<td class="red strong">59.09 %</td>
|
|
<td>66</td>
|
|
<td>22</td>
|
|
<td>13</td>
|
|
<td>9</td>
|
|
<td>0.6</td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td class="strong"><a href="#b7d8a575e84049f0f7983320c9ad1737cc7619a1" class="src_link" title="lib/travis/api/v2/http/caches.rb">lib/travis/api/v2/http/caches.rb</a></td>
|
|
<td class="red strong">73.33 %</td>
|
|
<td>33</td>
|
|
<td>15</td>
|
|
<td>11</td>
|
|
<td>4</td>
|
|
<td>0.7</td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td class="strong"><a href="#452e1e09b24321c66a631e743b6a84331da9bd13" class="src_link" title="lib/travis/api/v2/http/env_var.rb">lib/travis/api/v2/http/env_var.rb</a></td>
|
|
<td class="red strong">61.54 %</td>
|
|
<td>23</td>
|
|
<td>13</td>
|
|
<td>8</td>
|
|
<td>5</td>
|
|
<td>0.6</td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td class="strong"><a href="#f91e8a59d86280d6f7eb63939f3a080ab5f82e0f" class="src_link" title="lib/travis/api/v2/http/env_vars.rb">lib/travis/api/v2/http/env_vars.rb</a></td>
|
|
<td class="green strong">100.0 %</td>
|
|
<td>2</td>
|
|
<td>1</td>
|
|
<td>1</td>
|
|
<td>0</td>
|
|
<td>1.0</td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td class="strong"><a href="#16f73e884ddd5d7c35925c636e1981fa77cb5467" class="src_link" title="lib/travis/api/v2/http/hooks.rb">lib/travis/api/v2/http/hooks.rb</a></td>
|
|
<td class="red strong">66.67 %</td>
|
|
<td>37</td>
|
|
<td>15</td>
|
|
<td>10</td>
|
|
<td>5</td>
|
|
<td>0.7</td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td class="strong"><a href="#7bb06459f99796e92585a0613514a4dc10a3b4e6" class="src_link" title="lib/travis/api/v2/http/job.rb">lib/travis/api/v2/http/job.rb</a></td>
|
|
<td class="red strong">70.59 %</td>
|
|
<td>63</td>
|
|
<td>17</td>
|
|
<td>12</td>
|
|
<td>5</td>
|
|
<td>0.7</td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td class="strong"><a href="#28a544a6de90280731859574fbbbcf82c3b12b13" class="src_link" title="lib/travis/api/v2/http/jobs.rb">lib/travis/api/v2/http/jobs.rb</a></td>
|
|
<td class="red strong">63.16 %</td>
|
|
<td>61</td>
|
|
<td>19</td>
|
|
<td>12</td>
|
|
<td>7</td>
|
|
<td>0.6</td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td class="strong"><a href="#305e989221ff7819ee74c2690fb3d9b4d6366b86" class="src_link" title="lib/travis/api/v2/http/log.rb">lib/travis/api/v2/http/log.rb</a></td>
|
|
<td class="red strong">50.0 %</td>
|
|
<td>68</td>
|
|
<td>28</td>
|
|
<td>14</td>
|
|
<td>14</td>
|
|
<td>0.5</td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td class="strong"><a href="#87c289727e6a92299bc4a9407f685b69ca6eb426" class="src_link" title="lib/travis/api/v2/http/permissions.rb">lib/travis/api/v2/http/permissions.rb</a></td>
|
|
<td class="red strong">58.33 %</td>
|
|
<td>50</td>
|
|
<td>24</td>
|
|
<td>14</td>
|
|
<td>10</td>
|
|
<td>0.6</td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td class="strong"><a href="#8ff46500e36176862b05aa7513e20da8d68dc208" class="src_link" title="lib/travis/api/v2/http/repositories.rb">lib/travis/api/v2/http/repositories.rb</a></td>
|
|
<td class="red strong">68.75 %</td>
|
|
<td>43</td>
|
|
<td>16</td>
|
|
<td>11</td>
|
|
<td>5</td>
|
|
<td>0.7</td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td class="strong"><a href="#eff78d14dee73bdad5c2af8b49e3b528390c9207" class="src_link" title="lib/travis/api/v2/http/repository.rb">lib/travis/api/v2/http/repository.rb</a></td>
|
|
<td class="red strong">78.57 %</td>
|
|
<td>43</td>
|
|
<td>14</td>
|
|
<td>11</td>
|
|
<td>3</td>
|
|
<td>0.8</td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td class="strong"><a href="#0438b13b58bbb8a610c81181e35ca9c4273df442" class="src_link" title="lib/travis/api/v2/http/request.rb">lib/travis/api/v2/http/request.rb</a></td>
|
|
<td class="red strong">52.17 %</td>
|
|
<td>71</td>
|
|
<td>23</td>
|
|
<td>12</td>
|
|
<td>11</td>
|
|
<td>0.5</td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td class="strong"><a href="#3409238a742e733e8cc83123cd42c5d119a08c09" class="src_link" title="lib/travis/api/v2/http/requests.rb">lib/travis/api/v2/http/requests.rb</a></td>
|
|
<td class="red strong">54.55 %</td>
|
|
<td>68</td>
|
|
<td>22</td>
|
|
<td>12</td>
|
|
<td>10</td>
|
|
<td>0.5</td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td class="strong"><a href="#5b078e65cda2e46c4754334f975a5362fd4e47ac" class="src_link" title="lib/travis/api/v2/http/ssh_key.rb">lib/travis/api/v2/http/ssh_key.rb</a></td>
|
|
<td class="red strong">66.67 %</td>
|
|
<td>26</td>
|
|
<td>15</td>
|
|
<td>10</td>
|
|
<td>5</td>
|
|
<td>0.7</td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td class="strong"><a href="#f9da561db1b52264c76f56f7164b6394902c3a2e" class="src_link" title="lib/travis/api/v2/http/ssl_key.rb">lib/travis/api/v2/http/ssl_key.rb</a></td>
|
|
<td class="red strong">75.0 %</td>
|
|
<td>27</td>
|
|
<td>12</td>
|
|
<td>9</td>
|
|
<td>3</td>
|
|
<td>0.8</td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td class="strong"><a href="#4fe5f748a2411310c3bf861101420669e9a8812e" class="src_link" title="lib/travis/api/v2/http/user.rb">lib/travis/api/v2/http/user.rb</a></td>
|
|
<td class="red strong">73.33 %</td>
|
|
<td>43</td>
|
|
<td>15</td>
|
|
<td>11</td>
|
|
<td>4</td>
|
|
<td>0.7</td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td class="strong"><a href="#dd52431f41a7d9215be3e7f466926538b62b434a" class="src_link" title="lib/travis/api/v2/http/validation_error.rb">lib/travis/api/v2/http/validation_error.rb</a></td>
|
|
<td class="red strong">47.37 %</td>
|
|
<td>39</td>
|
|
<td>19</td>
|
|
<td>9</td>
|
|
<td>10</td>
|
|
<td>0.5</td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td class="strong"><a href="#dc5349ac13a7e081565d2ad293a276d468fd8b0b" class="src_link" title="lib/travis/private_key.rb">lib/travis/private_key.rb</a></td>
|
|
<td class="red strong">50.0 %</td>
|
|
<td>16</td>
|
|
<td>10</td>
|
|
<td>5</td>
|
|
<td>5</td>
|
|
<td>0.5</td>
|
|
</tr>
|
|
|
|
</tbody>
|
|
</table>
|
|
</div>
|
|
|
|
|
|
</div>
|
|
|
|
<div id="footer">
|
|
Generated by <a href="http://github.com/colszowka/simplecov">simplecov</a> v0.9.1
|
|
and simplecov-html v0.8.0<br/>
|
|
using RSpec
|
|
</div>
|
|
|
|
<div class="source_files">
|
|
|
|
<div class="source_table" id="6a8e7022de4db451dc6c402d7b521d74b4867cec">
|
|
<div class="header">
|
|
<h3>lib/travis/api/app.rb</h3>
|
|
<h4><span class="yellow">85.25 %</span> covered</h4>
|
|
<div>
|
|
<b>122</b> relevant lines.
|
|
<span class="green"><b>104</b> lines covered</span> and
|
|
<span class="red"><b>18</b> lines missed.</span>
|
|
</div>
|
|
</div>
|
|
|
|
<pre>
|
|
<ol>
|
|
|
|
<li class="covered" data-hits="1" data-linenumber="1">
|
|
<span class="hits">1</span>
|
|
|
|
<code class="ruby">require 'travis'</code>
|
|
</li>
|
|
|
|
<li class="covered" data-hits="1" data-linenumber="2">
|
|
<span class="hits">1</span>
|
|
|
|
<code class="ruby">require 'travis/model'</code>
|
|
</li>
|
|
|
|
<li class="covered" data-hits="1" data-linenumber="3">
|
|
<span class="hits">1</span>
|
|
|
|
<code class="ruby">require 'travis/support/amqp'</code>
|
|
</li>
|
|
|
|
<li class="covered" data-hits="1" data-linenumber="4">
|
|
<span class="hits">1</span>
|
|
|
|
<code class="ruby">require 'travis/states_cache'</code>
|
|
</li>
|
|
|
|
<li class="covered" data-hits="1" data-linenumber="5">
|
|
<span class="hits">1</span>
|
|
|
|
<code class="ruby">require 'rack'</code>
|
|
</li>
|
|
|
|
<li class="covered" data-hits="1" data-linenumber="6">
|
|
<span class="hits">1</span>
|
|
|
|
<code class="ruby">require 'rack/protection'</code>
|
|
</li>
|
|
|
|
<li class="covered" data-hits="1" data-linenumber="7">
|
|
<span class="hits">1</span>
|
|
|
|
<code class="ruby">require 'rack/contrib'</code>
|
|
</li>
|
|
|
|
<li class="covered" data-hits="1" data-linenumber="8">
|
|
<span class="hits">1</span>
|
|
|
|
<code class="ruby">require 'dalli'</code>
|
|
</li>
|
|
|
|
<li class="covered" data-hits="1" data-linenumber="9">
|
|
<span class="hits">1</span>
|
|
|
|
<code class="ruby">require 'memcachier'</code>
|
|
</li>
|
|
|
|
<li class="covered" data-hits="1" data-linenumber="10">
|
|
<span class="hits">1</span>
|
|
|
|
<code class="ruby">require 'rack/cache'</code>
|
|
</li>
|
|
|
|
<li class="covered" data-hits="1" data-linenumber="11">
|
|
<span class="hits">1</span>
|
|
|
|
<code class="ruby">require 'rack/attack'</code>
|
|
</li>
|
|
|
|
<li class="covered" data-hits="1" data-linenumber="12">
|
|
<span class="hits">1</span>
|
|
|
|
<code class="ruby">require 'active_record'</code>
|
|
</li>
|
|
|
|
<li class="covered" data-hits="1" data-linenumber="13">
|
|
<span class="hits">1</span>
|
|
|
|
<code class="ruby">require 'redis'</code>
|
|
</li>
|
|
|
|
<li class="covered" data-hits="1" data-linenumber="14">
|
|
<span class="hits">1</span>
|
|
|
|
<code class="ruby">require 'gh'</code>
|
|
</li>
|
|
|
|
<li class="covered" data-hits="1" data-linenumber="15">
|
|
<span class="hits">1</span>
|
|
|
|
<code class="ruby">require 'raven'</code>
|
|
</li>
|
|
|
|
<li class="covered" data-hits="1" data-linenumber="16">
|
|
<span class="hits">1</span>
|
|
|
|
<code class="ruby">require 'sidekiq'</code>
|
|
</li>
|
|
|
|
<li class="covered" data-hits="1" data-linenumber="17">
|
|
<span class="hits">1</span>
|
|
|
|
<code class="ruby">require 'metriks/reporter/logger'</code>
|
|
</li>
|
|
|
|
<li class="covered" data-hits="1" data-linenumber="18">
|
|
<span class="hits">1</span>
|
|
|
|
<code class="ruby">require 'metriks/librato_metrics_reporter'</code>
|
|
</li>
|
|
|
|
<li class="covered" data-hits="1" data-linenumber="19">
|
|
<span class="hits">1</span>
|
|
|
|
<code class="ruby">require 'travis/support/log_subscriber/active_record_metrics'</code>
|
|
</li>
|
|
|
|
<li class="covered" data-hits="1" data-linenumber="20">
|
|
<span class="hits">1</span>
|
|
|
|
<code class="ruby">require 'fileutils'</code>
|
|
</li>
|
|
|
|
<li class="covered" data-hits="1" data-linenumber="21">
|
|
<span class="hits">1</span>
|
|
|
|
<code class="ruby">require 'travis/api/v2/http'</code>
|
|
</li>
|
|
|
|
<li class="covered" data-hits="1" data-linenumber="22">
|
|
<span class="hits">1</span>
|
|
|
|
<code class="ruby">require 'travis/api/v3'</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="23">
|
|
|
|
|
|
<code class="ruby"></code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="24">
|
|
|
|
|
|
<code class="ruby"># Rack class implementing the HTTP API.</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="25">
|
|
|
|
|
|
<code class="ruby"># Instances respond to #call.</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="26">
|
|
|
|
|
|
<code class="ruby">#</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="27">
|
|
|
|
|
|
<code class="ruby"># run Travis::Api::App.new</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="28">
|
|
|
|
|
|
<code class="ruby">#</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="29">
|
|
|
|
|
|
<code class="ruby"># Requires TLS in production.</code>
|
|
</li>
|
|
|
|
<li class="covered" data-hits="1" data-linenumber="30">
|
|
<span class="hits">1</span>
|
|
|
|
<code class="ruby">module Travis::Api</code>
|
|
</li>
|
|
|
|
<li class="covered" data-hits="1" data-linenumber="31">
|
|
<span class="hits">1</span>
|
|
|
|
<code class="ruby"> class App</code>
|
|
</li>
|
|
|
|
<li class="covered" data-hits="1" data-linenumber="32">
|
|
<span class="hits">1</span>
|
|
|
|
<code class="ruby"> autoload :AccessToken, 'travis/api/app/access_token'</code>
|
|
</li>
|
|
|
|
<li class="covered" data-hits="1" data-linenumber="33">
|
|
<span class="hits">1</span>
|
|
|
|
<code class="ruby"> autoload :Base, 'travis/api/app/base'</code>
|
|
</li>
|
|
|
|
<li class="covered" data-hits="1" data-linenumber="34">
|
|
<span class="hits">1</span>
|
|
|
|
<code class="ruby"> autoload :Endpoint, 'travis/api/app/endpoint'</code>
|
|
</li>
|
|
|
|
<li class="covered" data-hits="1" data-linenumber="35">
|
|
<span class="hits">1</span>
|
|
|
|
<code class="ruby"> autoload :Extensions, 'travis/api/app/extensions'</code>
|
|
</li>
|
|
|
|
<li class="covered" data-hits="1" data-linenumber="36">
|
|
<span class="hits">1</span>
|
|
|
|
<code class="ruby"> autoload :Helpers, 'travis/api/app/helpers'</code>
|
|
</li>
|
|
|
|
<li class="covered" data-hits="1" data-linenumber="37">
|
|
<span class="hits">1</span>
|
|
|
|
<code class="ruby"> autoload :Middleware, 'travis/api/app/middleware'</code>
|
|
</li>
|
|
|
|
<li class="covered" data-hits="1" data-linenumber="38">
|
|
<span class="hits">1</span>
|
|
|
|
<code class="ruby"> autoload :Responders, 'travis/api/app/responders'</code>
|
|
</li>
|
|
|
|
<li class="covered" data-hits="1" data-linenumber="39">
|
|
<span class="hits">1</span>
|
|
|
|
<code class="ruby"> autoload :Cors, 'travis/api/app/cors'</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="40">
|
|
|
|
|
|
<code class="ruby"></code>
|
|
</li>
|
|
|
|
<li class="covered" data-hits="1" data-linenumber="41">
|
|
<span class="hits">1</span>
|
|
|
|
<code class="ruby"> Rack.autoload :SSL, 'rack/ssl'</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="42">
|
|
|
|
|
|
<code class="ruby"></code>
|
|
</li>
|
|
|
|
<li class="covered" data-hits="1" data-linenumber="43">
|
|
<span class="hits">1</span>
|
|
|
|
<code class="ruby"> ERROR_RESPONSE = JSON.generate(error: 'Travis encountered an error, sorry :(')</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="44">
|
|
|
|
|
|
<code class="ruby"></code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="45">
|
|
|
|
|
|
<code class="ruby"> # Used to track if setup already ran.</code>
|
|
</li>
|
|
|
|
<li class="covered" data-hits="1" data-linenumber="46">
|
|
<span class="hits">1</span>
|
|
|
|
<code class="ruby"> def self.setup?</code>
|
|
</li>
|
|
|
|
<li class="covered" data-hits="28" data-linenumber="47">
|
|
<span class="hits">28</span>
|
|
|
|
<code class="ruby"> @setup ||= false</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="48">
|
|
|
|
|
|
<code class="ruby"> end</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="49">
|
|
|
|
|
|
<code class="ruby"></code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="50">
|
|
|
|
|
|
<code class="ruby"> # Loads all endpoints and middleware and hooks them up properly.</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="51">
|
|
|
|
|
|
<code class="ruby"> # Calls #setup on any middleware and endpoint.</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="52">
|
|
|
|
|
|
<code class="ruby"> #</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="53">
|
|
|
|
|
|
<code class="ruby"> # This method is not threadsafe, but called when loading</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="54">
|
|
|
|
|
|
<code class="ruby"> # the environment, so no biggy.</code>
|
|
</li>
|
|
|
|
<li class="covered" data-hits="1" data-linenumber="55">
|
|
<span class="hits">1</span>
|
|
|
|
<code class="ruby"> def self.setup(options = {})</code>
|
|
</li>
|
|
|
|
<li class="covered" data-hits="28" data-linenumber="56">
|
|
<span class="hits">28</span>
|
|
|
|
<code class="ruby"> setup! unless setup?</code>
|
|
</li>
|
|
|
|
<li class="covered" data-hits="28" data-linenumber="57">
|
|
<span class="hits">28</span>
|
|
|
|
<code class="ruby"> Endpoint.set(options) if options</code>
|
|
</li>
|
|
|
|
<li class="covered" data-hits="28" data-linenumber="58">
|
|
<span class="hits">28</span>
|
|
|
|
<code class="ruby"> FileUtils.touch('/tmp/app-initialized') if ENV['DYNO'] # Heroku</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="59">
|
|
|
|
|
|
<code class="ruby"> end</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="60">
|
|
|
|
|
|
<code class="ruby"></code>
|
|
</li>
|
|
|
|
<li class="covered" data-hits="1" data-linenumber="61">
|
|
<span class="hits">1</span>
|
|
|
|
<code class="ruby"> def self.new(options = {})</code>
|
|
</li>
|
|
|
|
<li class="covered" data-hits="27" data-linenumber="62">
|
|
<span class="hits">27</span>
|
|
|
|
<code class="ruby"> setup(options)</code>
|
|
</li>
|
|
|
|
<li class="covered" data-hits="27" data-linenumber="63">
|
|
<span class="hits">27</span>
|
|
|
|
<code class="ruby"> super()</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="64">
|
|
|
|
|
|
<code class="ruby"> end</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="65">
|
|
|
|
|
|
<code class="ruby"></code>
|
|
</li>
|
|
|
|
<li class="covered" data-hits="1" data-linenumber="66">
|
|
<span class="hits">1</span>
|
|
|
|
<code class="ruby"> def self.deploy_sha</code>
|
|
</li>
|
|
|
|
<li class="missed" data-hits="0" data-linenumber="67">
|
|
|
|
|
|
<code class="ruby"> @deploy_sha ||= File.exist?(deploy_sha_path) ? File.read(deploy_sha_path)[0..7] : 'deploy-sha'</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="68">
|
|
|
|
|
|
<code class="ruby"> end</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="69">
|
|
|
|
|
|
<code class="ruby"></code>
|
|
</li>
|
|
|
|
<li class="covered" data-hits="1" data-linenumber="70">
|
|
<span class="hits">1</span>
|
|
|
|
<code class="ruby"> def self.deploy_sha_path</code>
|
|
</li>
|
|
|
|
<li class="missed" data-hits="0" data-linenumber="71">
|
|
|
|
|
|
<code class="ruby"> File.expand_path('../../../../.deploy-sha', __FILE__)</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="72">
|
|
|
|
|
|
<code class="ruby"> end</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="73">
|
|
|
|
|
|
<code class="ruby"></code>
|
|
</li>
|
|
|
|
<li class="covered" data-hits="1" data-linenumber="74">
|
|
<span class="hits">1</span>
|
|
|
|
<code class="ruby"> attr_accessor :app</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="75">
|
|
|
|
|
|
<code class="ruby"></code>
|
|
</li>
|
|
|
|
<li class="covered" data-hits="1" data-linenumber="76">
|
|
<span class="hits">1</span>
|
|
|
|
<code class="ruby"> def initialize</code>
|
|
</li>
|
|
|
|
<li class="covered" data-hits="27" data-linenumber="77">
|
|
<span class="hits">27</span>
|
|
|
|
<code class="ruby"> @app = Rack::Builder.app do</code>
|
|
</li>
|
|
|
|
<li class="covered" data-hits="50" data-linenumber="78">
|
|
<span class="hits">50</span>
|
|
|
|
<code class="ruby"> use(Rack::Config) { |env| env['metriks.request.start'] ||= Time.now.utc }</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="79">
|
|
|
|
|
|
<code class="ruby"></code>
|
|
</li>
|
|
|
|
<li class="covered" data-hits="27" data-linenumber="80">
|
|
<span class="hits">27</span>
|
|
|
|
<code class="ruby"> Rack::Utils::HTTP_STATUS_CODES[420] = "Enhance Your Calm"</code>
|
|
</li>
|
|
|
|
<li class="covered" data-hits="27" data-linenumber="81">
|
|
<span class="hits">27</span>
|
|
|
|
<code class="ruby"> use Rack::Attack</code>
|
|
</li>
|
|
|
|
<li class="covered" data-hits="27" data-linenumber="82">
|
|
<span class="hits">27</span>
|
|
|
|
<code class="ruby"> Rack::Attack.blacklist('block client requesting ruby builds') do |req|</code>
|
|
</li>
|
|
|
|
<li class="covered" data-hits="23" data-linenumber="83">
|
|
<span class="hits">23</span>
|
|
|
|
<code class="ruby"> req.ip == "130.15.4.210"</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="84">
|
|
|
|
|
|
<code class="ruby"> end</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="85">
|
|
|
|
|
|
<code class="ruby"></code>
|
|
</li>
|
|
|
|
<li class="covered" data-hits="27" data-linenumber="86">
|
|
<span class="hits">27</span>
|
|
|
|
<code class="ruby"> Rack::Attack.blacklisted_response = lambda do |env|</code>
|
|
</li>
|
|
|
|
<li class="missed" data-hits="0" data-linenumber="87">
|
|
|
|
|
|
<code class="ruby"> [ 420, {}, ['Enhance Your Calm']]</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="88">
|
|
|
|
|
|
<code class="ruby"> end</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="89">
|
|
|
|
|
|
<code class="ruby"></code>
|
|
</li>
|
|
|
|
<li class="covered" data-hits="27" data-linenumber="90">
|
|
<span class="hits">27</span>
|
|
|
|
<code class="ruby"> use Travis::Api::App::Cors # if Travis.env == 'development' ???</code>
|
|
</li>
|
|
|
|
<li class="covered" data-hits="27" data-linenumber="91">
|
|
<span class="hits">27</span>
|
|
|
|
<code class="ruby"> use Raven::Rack if Endpoint.production? && Travis.config.sentry.dsn</code>
|
|
</li>
|
|
|
|
<li class="covered" data-hits="27" data-linenumber="92">
|
|
<span class="hits">27</span>
|
|
|
|
<code class="ruby"> use Rack::Protection::PathTraversal</code>
|
|
</li>
|
|
|
|
<li class="covered" data-hits="27" data-linenumber="93">
|
|
<span class="hits">27</span>
|
|
|
|
<code class="ruby"> use Rack::SSL if Endpoint.production?</code>
|
|
</li>
|
|
|
|
<li class="covered" data-hits="27" data-linenumber="94">
|
|
<span class="hits">27</span>
|
|
|
|
<code class="ruby"> use ActiveRecord::ConnectionAdapters::ConnectionManagement</code>
|
|
</li>
|
|
|
|
<li class="covered" data-hits="27" data-linenumber="95">
|
|
<span class="hits">27</span>
|
|
|
|
<code class="ruby"> use ActiveRecord::QueryCache</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="96">
|
|
|
|
|
|
<code class="ruby"></code>
|
|
</li>
|
|
|
|
<li class="covered" data-hits="27" data-linenumber="97">
|
|
<span class="hits">27</span>
|
|
|
|
<code class="ruby"> memcache_servers = ENV['MEMCACHIER_SERVERS']</code>
|
|
</li>
|
|
|
|
<li class="covered" data-hits="27" data-linenumber="98">
|
|
<span class="hits">27</span>
|
|
|
|
<code class="ruby"> if Travis::Features.feature_active?(:use_rack_cache) && memcache_servers</code>
|
|
</li>
|
|
|
|
<li class="missed" data-hits="0" data-linenumber="99">
|
|
|
|
|
|
<code class="ruby"> use Rack::Cache,</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="100">
|
|
|
|
|
|
<code class="ruby"> metastore: "memcached://#{memcache_servers}/meta-#{Travis::Api::App.deploy_sha}",</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="101">
|
|
|
|
|
|
<code class="ruby"> entitystore: "memcached://#{memcache_servers}/body-#{Travis::Api::App.deploy_sha}"</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="102">
|
|
|
|
|
|
<code class="ruby"> end</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="103">
|
|
|
|
|
|
<code class="ruby"></code>
|
|
</li>
|
|
|
|
<li class="covered" data-hits="27" data-linenumber="104">
|
|
<span class="hits">27</span>
|
|
|
|
<code class="ruby"> use Rack::Deflater</code>
|
|
</li>
|
|
|
|
<li class="covered" data-hits="27" data-linenumber="105">
|
|
<span class="hits">27</span>
|
|
|
|
<code class="ruby"> use Rack::PostBodyContentTypeParser</code>
|
|
</li>
|
|
|
|
<li class="covered" data-hits="27" data-linenumber="106">
|
|
<span class="hits">27</span>
|
|
|
|
<code class="ruby"> use Rack::JSONP</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="107">
|
|
|
|
|
|
<code class="ruby"></code>
|
|
</li>
|
|
|
|
<li class="covered" data-hits="27" data-linenumber="108">
|
|
<span class="hits">27</span>
|
|
|
|
<code class="ruby"> use Rack::Config do |env|</code>
|
|
</li>
|
|
|
|
<li class="covered" data-hits="23" data-linenumber="109">
|
|
<span class="hits">23</span>
|
|
|
|
<code class="ruby"> env['SCRIPT_NAME'] = env['HTTP_X_SCRIPT_NAME'].to_s + env['SCRIPT_NAME'].to_s</code>
|
|
</li>
|
|
|
|
<li class="covered" data-hits="23" data-linenumber="110">
|
|
<span class="hits">23</span>
|
|
|
|
<code class="ruby"> env['travis.global_prefix'] = env['SCRIPT_NAME']</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="111">
|
|
|
|
|
|
<code class="ruby"> end</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="112">
|
|
|
|
|
|
<code class="ruby"></code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="113">
|
|
|
|
|
|
<code class="ruby"></code>
|
|
</li>
|
|
|
|
<li class="covered" data-hits="27" data-linenumber="114">
|
|
<span class="hits">27</span>
|
|
|
|
<code class="ruby"> use Travis::Api::App::Middleware::Logging</code>
|
|
</li>
|
|
|
|
<li class="covered" data-hits="27" data-linenumber="115">
|
|
<span class="hits">27</span>
|
|
|
|
<code class="ruby"> use Travis::Api::App::Middleware::ScopeCheck</code>
|
|
</li>
|
|
|
|
<li class="covered" data-hits="27" data-linenumber="116">
|
|
<span class="hits">27</span>
|
|
|
|
<code class="ruby"> use Travis::Api::App::Middleware::UserAgentTracker</code>
|
|
</li>
|
|
|
|
<li class="covered" data-hits="27" data-linenumber="117">
|
|
<span class="hits">27</span>
|
|
|
|
<code class="ruby"> use Travis::Api::App::Middleware::Metriks</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="118">
|
|
|
|
|
|
<code class="ruby"></code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="119">
|
|
|
|
|
|
<code class="ruby"> # if this is a v3 API request, ignore everything after</code>
|
|
</li>
|
|
|
|
<li class="covered" data-hits="27" data-linenumber="120">
|
|
<span class="hits">27</span>
|
|
|
|
<code class="ruby"> use Travis::API::V3::OptIn</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="121">
|
|
|
|
|
|
<code class="ruby"></code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="122">
|
|
|
|
|
|
<code class="ruby"> # rewrite should come after V3 hook</code>
|
|
</li>
|
|
|
|
<li class="covered" data-hits="27" data-linenumber="123">
|
|
<span class="hits">27</span>
|
|
|
|
<code class="ruby"> use Travis::Api::App::Middleware::Rewrite</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="124">
|
|
|
|
|
|
<code class="ruby"></code>
|
|
</li>
|
|
|
|
<li class="covered" data-hits="27" data-linenumber="125">
|
|
<span class="hits">27</span>
|
|
|
|
<code class="ruby"> SettingsEndpoint.subclass :env_vars</code>
|
|
</li>
|
|
|
|
<li class="covered" data-hits="27" data-linenumber="126">
|
|
<span class="hits">27</span>
|
|
|
|
<code class="ruby"> if Travis.config.endpoints.ssh_key</code>
|
|
</li>
|
|
|
|
<li class="covered" data-hits="27" data-linenumber="127">
|
|
<span class="hits">27</span>
|
|
|
|
<code class="ruby"> SingletonSettingsEndpoint.subclass :ssh_key</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="128">
|
|
|
|
|
|
<code class="ruby"> end</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="129">
|
|
|
|
|
|
<code class="ruby"></code>
|
|
</li>
|
|
|
|
<li class="covered" data-hits="27" data-linenumber="130">
|
|
<span class="hits">27</span>
|
|
|
|
<code class="ruby"> Endpoint.subclasses.each do |e|</code>
|
|
</li>
|
|
|
|
<li class="covered" data-hits="486" data-linenumber="131">
|
|
<span class="hits">486</span>
|
|
|
|
<code class="ruby"> next if e == SettingsEndpoint # TODO: add something like abstract? method to check if</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="132">
|
|
|
|
|
|
<code class="ruby"> # class should be registered</code>
|
|
</li>
|
|
|
|
<li class="covered" data-hits="972" data-linenumber="133">
|
|
<span class="hits">972</span>
|
|
|
|
<code class="ruby"> map(e.prefix) { run(e.new) }</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="134">
|
|
|
|
|
|
<code class="ruby"> end</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="135">
|
|
|
|
|
|
<code class="ruby"> end</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="136">
|
|
|
|
|
|
<code class="ruby"> end</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="137">
|
|
|
|
|
|
<code class="ruby"></code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="138">
|
|
|
|
|
|
<code class="ruby"> # Rack protocol</code>
|
|
</li>
|
|
|
|
<li class="covered" data-hits="1" data-linenumber="139">
|
|
<span class="hits">1</span>
|
|
|
|
<code class="ruby"> def call(env)</code>
|
|
</li>
|
|
|
|
<li class="covered" data-hits="23" data-linenumber="140">
|
|
<span class="hits">23</span>
|
|
|
|
<code class="ruby"> app.call(env)</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="141">
|
|
|
|
|
|
<code class="ruby"> rescue</code>
|
|
</li>
|
|
|
|
<li class="missed" data-hits="0" data-linenumber="142">
|
|
|
|
|
|
<code class="ruby"> if Endpoint.production?</code>
|
|
</li>
|
|
|
|
<li class="missed" data-hits="0" data-linenumber="143">
|
|
|
|
|
|
<code class="ruby"> [500, {'Content-Type' => 'application/json'}, [ERROR_RESPONSE]]</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="144">
|
|
|
|
|
|
<code class="ruby"> else</code>
|
|
</li>
|
|
|
|
<li class="missed" data-hits="0" data-linenumber="145">
|
|
|
|
|
|
<code class="ruby"> raise</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="146">
|
|
|
|
|
|
<code class="ruby"> end</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="147">
|
|
|
|
|
|
<code class="ruby"> end</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="148">
|
|
|
|
|
|
<code class="ruby"></code>
|
|
</li>
|
|
|
|
<li class="covered" data-hits="1" data-linenumber="149">
|
|
<span class="hits">1</span>
|
|
|
|
<code class="ruby"> private</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="150">
|
|
|
|
|
|
<code class="ruby"></code>
|
|
</li>
|
|
|
|
<li class="covered" data-hits="1" data-linenumber="151">
|
|
<span class="hits">1</span>
|
|
|
|
<code class="ruby"> def self.console?</code>
|
|
</li>
|
|
|
|
<li class="missed" data-hits="0" data-linenumber="152">
|
|
|
|
|
|
<code class="ruby"> defined? Travis::Console</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="153">
|
|
|
|
|
|
<code class="ruby"> end</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="154">
|
|
|
|
|
|
<code class="ruby"></code>
|
|
</li>
|
|
|
|
<li class="covered" data-hits="1" data-linenumber="155">
|
|
<span class="hits">1</span>
|
|
|
|
<code class="ruby"> def self.setup!</code>
|
|
</li>
|
|
|
|
<li class="covered" data-hits="1" data-linenumber="156">
|
|
<span class="hits">1</span>
|
|
|
|
<code class="ruby"> setup_travis</code>
|
|
</li>
|
|
|
|
<li class="covered" data-hits="1" data-linenumber="157">
|
|
<span class="hits">1</span>
|
|
|
|
<code class="ruby"> load_endpoints</code>
|
|
</li>
|
|
|
|
<li class="covered" data-hits="1" data-linenumber="158">
|
|
<span class="hits">1</span>
|
|
|
|
<code class="ruby"> setup_endpoints</code>
|
|
</li>
|
|
|
|
<li class="covered" data-hits="1" data-linenumber="159">
|
|
<span class="hits">1</span>
|
|
|
|
<code class="ruby"> @setup = true</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="160">
|
|
|
|
|
|
<code class="ruby"> end</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="161">
|
|
|
|
|
|
<code class="ruby"></code>
|
|
</li>
|
|
|
|
<li class="covered" data-hits="1" data-linenumber="162">
|
|
<span class="hits">1</span>
|
|
|
|
<code class="ruby"> def self.setup_travis</code>
|
|
</li>
|
|
|
|
<li class="covered" data-hits="1" data-linenumber="163">
|
|
<span class="hits">1</span>
|
|
|
|
<code class="ruby"> Travis::Async.enabled = true</code>
|
|
</li>
|
|
|
|
<li class="covered" data-hits="1" data-linenumber="164">
|
|
<span class="hits">1</span>
|
|
|
|
<code class="ruby"> Travis::Amqp.config = Travis.config.amqp</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="165">
|
|
|
|
|
|
<code class="ruby"></code>
|
|
</li>
|
|
|
|
<li class="covered" data-hits="1" data-linenumber="166">
|
|
<span class="hits">1</span>
|
|
|
|
<code class="ruby"> setup_database_connections</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="167">
|
|
|
|
|
|
<code class="ruby"></code>
|
|
</li>
|
|
|
|
<li class="covered" data-hits="1" data-linenumber="168">
|
|
<span class="hits">1</span>
|
|
|
|
<code class="ruby"> if Travis.env == 'production' || Travis.env == 'staging'</code>
|
|
</li>
|
|
|
|
<li class="missed" data-hits="0" data-linenumber="169">
|
|
|
|
|
|
<code class="ruby"> Sidekiq.configure_client do |config|</code>
|
|
</li>
|
|
|
|
<li class="missed" data-hits="0" data-linenumber="170">
|
|
|
|
|
|
<code class="ruby"> config.redis = Travis.config.redis.merge(size: 1, namespace: Travis.config.sidekiq.namespace)</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="171">
|
|
|
|
|
|
<code class="ruby"> end</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="172">
|
|
|
|
|
|
<code class="ruby"> end</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="173">
|
|
|
|
|
|
<code class="ruby"></code>
|
|
</li>
|
|
|
|
<li class="covered" data-hits="1" data-linenumber="174">
|
|
<span class="hits">1</span>
|
|
|
|
<code class="ruby"> if (Travis.env == 'production' || Travis.env == 'staging') and not console?</code>
|
|
</li>
|
|
|
|
<li class="missed" data-hits="0" data-linenumber="175">
|
|
|
|
|
|
<code class="ruby"> setup_monitoring</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="176">
|
|
|
|
|
|
<code class="ruby"> end</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="177">
|
|
|
|
|
|
<code class="ruby"> end</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="178">
|
|
|
|
|
|
<code class="ruby"></code>
|
|
</li>
|
|
|
|
<li class="covered" data-hits="1" data-linenumber="179">
|
|
<span class="hits">1</span>
|
|
|
|
<code class="ruby"> def self.setup_database_connections</code>
|
|
</li>
|
|
|
|
<li class="covered" data-hits="1" data-linenumber="180">
|
|
<span class="hits">1</span>
|
|
|
|
<code class="ruby"> Travis::Database.connect</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="181">
|
|
|
|
|
|
<code class="ruby"></code>
|
|
</li>
|
|
|
|
<li class="covered" data-hits="1" data-linenumber="182">
|
|
<span class="hits">1</span>
|
|
|
|
<code class="ruby"> if Travis.config.logs_database</code>
|
|
</li>
|
|
|
|
<li class="missed" data-hits="0" data-linenumber="183">
|
|
|
|
|
|
<code class="ruby"> Log.establish_connection 'logs_database'</code>
|
|
</li>
|
|
|
|
<li class="missed" data-hits="0" data-linenumber="184">
|
|
|
|
|
|
<code class="ruby"> Log::Part.establish_connection 'logs_database'</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="185">
|
|
|
|
|
|
<code class="ruby"> end</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="186">
|
|
|
|
|
|
<code class="ruby"> end</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="187">
|
|
|
|
|
|
<code class="ruby"></code>
|
|
</li>
|
|
|
|
<li class="covered" data-hits="1" data-linenumber="188">
|
|
<span class="hits">1</span>
|
|
|
|
<code class="ruby"> def self.setup_monitoring</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="189">
|
|
|
|
|
|
<code class="ruby"> Raven.configure do |config|</code>
|
|
</li>
|
|
|
|
<li class="missed" data-hits="0" data-linenumber="190">
|
|
|
|
|
|
<code class="ruby"> config.dsn = Travis.config.sentry.dsn</code>
|
|
</li>
|
|
|
|
<li class="missed" data-hits="0" data-linenumber="191">
|
|
|
|
|
|
<code class="ruby"> end if Travis.config.sentry.dsn</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="192">
|
|
|
|
|
|
<code class="ruby"></code>
|
|
</li>
|
|
|
|
<li class="missed" data-hits="0" data-linenumber="193">
|
|
|
|
|
|
<code class="ruby"> Travis::LogSubscriber::ActiveRecordMetrics.attach</code>
|
|
</li>
|
|
|
|
<li class="missed" data-hits="0" data-linenumber="194">
|
|
|
|
|
|
<code class="ruby"> Travis::Notification.setup(instrumentation: false)</code>
|
|
</li>
|
|
|
|
<li class="missed" data-hits="0" data-linenumber="195">
|
|
|
|
|
|
<code class="ruby"> Travis::Metrics.setup</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="196">
|
|
|
|
|
|
<code class="ruby"> end</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="197">
|
|
|
|
|
|
<code class="ruby"></code>
|
|
</li>
|
|
|
|
<li class="covered" data-hits="1" data-linenumber="198">
|
|
<span class="hits">1</span>
|
|
|
|
<code class="ruby"> def self.load_endpoints</code>
|
|
</li>
|
|
|
|
<li class="covered" data-hits="6" data-linenumber="199">
|
|
<span class="hits">6</span>
|
|
|
|
<code class="ruby"> Dir.glob("#{__dir__}/app/middleware/*.rb").each { |f| require f[%r[(?<=lib/).+(?=\.rb$)]] }</code>
|
|
</li>
|
|
|
|
<li class="covered" data-hits="20" data-linenumber="200">
|
|
<span class="hits">20</span>
|
|
|
|
<code class="ruby"> Dir.glob("#{__dir__}/app/endpoint/*.rb").each { |f| require f[%r[(?<=lib/).+(?=\.rb$)]] }</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="201">
|
|
|
|
|
|
<code class="ruby"> end</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="202">
|
|
|
|
|
|
<code class="ruby"></code>
|
|
</li>
|
|
|
|
<li class="covered" data-hits="1" data-linenumber="203">
|
|
<span class="hits">1</span>
|
|
|
|
<code class="ruby"> def self.setup_endpoints</code>
|
|
</li>
|
|
|
|
<li class="covered" data-hits="1" data-linenumber="204">
|
|
<span class="hits">1</span>
|
|
|
|
<code class="ruby"> Base.subclasses.each(&:setup)</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="205">
|
|
|
|
|
|
<code class="ruby"> end</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="206">
|
|
|
|
|
|
<code class="ruby"> end</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="207">
|
|
|
|
|
|
<code class="ruby">end</code>
|
|
</li>
|
|
|
|
</ol>
|
|
</pre>
|
|
</div>
|
|
|
|
<div class="source_table" id="2563a9e3b6860f10bc10bc8b9abc2e0b307c3396">
|
|
<div class="header">
|
|
<h3>lib/travis/api/app/access_token.rb</h3>
|
|
<h4><span class="yellow">87.5 %</span> covered</h4>
|
|
<div>
|
|
<b>64</b> relevant lines.
|
|
<span class="green"><b>56</b> lines covered</span> and
|
|
<span class="red"><b>8</b> lines missed.</span>
|
|
</div>
|
|
</div>
|
|
|
|
<pre>
|
|
<ol>
|
|
|
|
<li class="covered" data-hits="1" data-linenumber="1">
|
|
<span class="hits">1</span>
|
|
|
|
<code class="ruby">require 'travis/api/app'</code>
|
|
</li>
|
|
|
|
<li class="covered" data-hits="1" data-linenumber="2">
|
|
<span class="hits">1</span>
|
|
|
|
<code class="ruby">require 'securerandom'</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="3">
|
|
|
|
|
|
<code class="ruby"></code>
|
|
</li>
|
|
|
|
<li class="covered" data-hits="1" data-linenumber="4">
|
|
<span class="hits">1</span>
|
|
|
|
<code class="ruby">class Travis::Api::App</code>
|
|
</li>
|
|
|
|
<li class="covered" data-hits="1" data-linenumber="5">
|
|
<span class="hits">1</span>
|
|
|
|
<code class="ruby"> class AccessToken</code>
|
|
</li>
|
|
|
|
<li class="covered" data-hits="1" data-linenumber="6">
|
|
<span class="hits">1</span>
|
|
|
|
<code class="ruby"> DEFAULT_SCOPES = [:public, :private]</code>
|
|
</li>
|
|
|
|
<li class="covered" data-hits="1" data-linenumber="7">
|
|
<span class="hits">1</span>
|
|
|
|
<code class="ruby"> attr_reader :token, :scopes, :user_id, :app_id, :expires_in, :extra</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="8">
|
|
|
|
|
|
<code class="ruby"></code>
|
|
</li>
|
|
|
|
<li class="covered" data-hits="1" data-linenumber="9">
|
|
<span class="hits">1</span>
|
|
|
|
<code class="ruby"> def self.create(options = {})</code>
|
|
</li>
|
|
|
|
<li class="covered" data-hits="4" data-linenumber="10">
|
|
<span class="hits">4</span>
|
|
|
|
<code class="ruby"> new(options).tap(&:save)</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="11">
|
|
|
|
|
|
<code class="ruby"> end</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="12">
|
|
|
|
|
|
<code class="ruby"></code>
|
|
</li>
|
|
|
|
<li class="covered" data-hits="1" data-linenumber="13">
|
|
<span class="hits">1</span>
|
|
|
|
<code class="ruby"> def self.for_travis_token(travis_token, options = {})</code>
|
|
</li>
|
|
|
|
<li class="missed" data-hits="0" data-linenumber="14">
|
|
|
|
|
|
<code class="ruby"> travis_token = Token.find_by_token(travis_token) unless travis_token.respond_to? :user</code>
|
|
</li>
|
|
|
|
<li class="missed" data-hits="0" data-linenumber="15">
|
|
|
|
|
|
<code class="ruby"> new(scope: :travis_token, app_id: 1, user: travis_token.user).tap(&:save) if travis_token</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="16">
|
|
|
|
|
|
<code class="ruby"> end</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="17">
|
|
|
|
|
|
<code class="ruby"></code>
|
|
</li>
|
|
|
|
<li class="covered" data-hits="1" data-linenumber="18">
|
|
<span class="hits">1</span>
|
|
|
|
<code class="ruby"> def self.find_by_token(token)</code>
|
|
</li>
|
|
|
|
<li class="covered" data-hits="8" data-linenumber="19">
|
|
<span class="hits">8</span>
|
|
|
|
<code class="ruby"> return token if token.is_a? self</code>
|
|
</li>
|
|
|
|
<li class="covered" data-hits="8" data-linenumber="20">
|
|
<span class="hits">8</span>
|
|
|
|
<code class="ruby"> user_id, app_id, *scopes = redis.lrange(key(token), 0, -1)</code>
|
|
</li>
|
|
|
|
<li class="covered" data-hits="8" data-linenumber="21">
|
|
<span class="hits">8</span>
|
|
|
|
<code class="ruby"> extra = decode_json(scopes.pop) if scopes.last && scopes.last =~ /^json:/</code>
|
|
</li>
|
|
|
|
<li class="covered" data-hits="8" data-linenumber="22">
|
|
<span class="hits">8</span>
|
|
|
|
<code class="ruby"> new(token: token, scopes: scopes, user_id: user_id, app_id: app_id, extra: extra) if user_id</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="23">
|
|
|
|
|
|
<code class="ruby"> end</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="24">
|
|
|
|
|
|
<code class="ruby"></code>
|
|
</li>
|
|
|
|
<li class="covered" data-hits="1" data-linenumber="25">
|
|
<span class="hits">1</span>
|
|
|
|
<code class="ruby"> def initialize(options = {})</code>
|
|
</li>
|
|
|
|
<li class="covered" data-hits="12" data-linenumber="26">
|
|
<span class="hits">12</span>
|
|
|
|
<code class="ruby"> raise ArgumentError, 'must supply either user_id or user' unless options.key?(:user) ^ options.key?(:user_id)</code>
|
|
</li>
|
|
|
|
<li class="covered" data-hits="12" data-linenumber="27">
|
|
<span class="hits">12</span>
|
|
|
|
<code class="ruby"> raise ArgumentError, 'must supply app_id' unless options.key?(:app_id)</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="28">
|
|
|
|
|
|
<code class="ruby"></code>
|
|
</li>
|
|
|
|
<li class="covered" data-hits="12" data-linenumber="29">
|
|
<span class="hits">12</span>
|
|
|
|
<code class="ruby"> begin</code>
|
|
</li>
|
|
|
|
<li class="covered" data-hits="12" data-linenumber="30">
|
|
<span class="hits">12</span>
|
|
|
|
<code class="ruby"> @expires_in = Integer(options[:expires_in]) if options[:expires_in]</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="31">
|
|
|
|
|
|
<code class="ruby"> rescue ArgumentError</code>
|
|
</li>
|
|
|
|
<li class="missed" data-hits="0" data-linenumber="32">
|
|
|
|
|
|
<code class="ruby"> raise ArgumentError, 'expires_in must be of integer type'</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="33">
|
|
|
|
|
|
<code class="ruby"> end</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="34">
|
|
|
|
|
|
<code class="ruby"></code>
|
|
</li>
|
|
|
|
<li class="covered" data-hits="12" data-linenumber="35">
|
|
<span class="hits">12</span>
|
|
|
|
<code class="ruby"> @app_id = Integer(options[:app_id])</code>
|
|
</li>
|
|
|
|
<li class="covered" data-hits="12" data-linenumber="36">
|
|
<span class="hits">12</span>
|
|
|
|
<code class="ruby"> @scopes = Array(options[:scopes] || options[:scope] || DEFAULT_SCOPES).map(&:to_sym)</code>
|
|
</li>
|
|
|
|
<li class="covered" data-hits="12" data-linenumber="37">
|
|
<span class="hits">12</span>
|
|
|
|
<code class="ruby"> @user = options[:user]</code>
|
|
</li>
|
|
|
|
<li class="covered" data-hits="12" data-linenumber="38">
|
|
<span class="hits">12</span>
|
|
|
|
<code class="ruby"> @user_id = Integer(options[:user_id] || @user.id)</code>
|
|
</li>
|
|
|
|
<li class="covered" data-hits="12" data-linenumber="39">
|
|
<span class="hits">12</span>
|
|
|
|
<code class="ruby"> @token = options[:token] || reuse_token || SecureRandom.urlsafe_base64(16)</code>
|
|
</li>
|
|
|
|
<li class="covered" data-hits="12" data-linenumber="40">
|
|
<span class="hits">12</span>
|
|
|
|
<code class="ruby"> @extra = options[:extra]</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="41">
|
|
|
|
|
|
<code class="ruby"> end</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="42">
|
|
|
|
|
|
<code class="ruby"></code>
|
|
</li>
|
|
|
|
<li class="covered" data-hits="1" data-linenumber="43">
|
|
<span class="hits">1</span>
|
|
|
|
<code class="ruby"> def save</code>
|
|
</li>
|
|
|
|
<li class="covered" data-hits="4" data-linenumber="44">
|
|
<span class="hits">4</span>
|
|
|
|
<code class="ruby"> key = key(token)</code>
|
|
</li>
|
|
|
|
<li class="covered" data-hits="4" data-linenumber="45">
|
|
<span class="hits">4</span>
|
|
|
|
<code class="ruby"> redis.del(key)</code>
|
|
</li>
|
|
|
|
<li class="covered" data-hits="4" data-linenumber="46">
|
|
<span class="hits">4</span>
|
|
|
|
<code class="ruby"> data = [user_id, app_id, *scopes]</code>
|
|
</li>
|
|
|
|
<li class="covered" data-hits="4" data-linenumber="47">
|
|
<span class="hits">4</span>
|
|
|
|
<code class="ruby"> data << encode_json(extra) if extra</code>
|
|
</li>
|
|
|
|
<li class="covered" data-hits="4" data-linenumber="48">
|
|
<span class="hits">4</span>
|
|
|
|
<code class="ruby"> redis.rpush(key, data.map(&:to_s))</code>
|
|
</li>
|
|
|
|
<li class="covered" data-hits="4" data-linenumber="49">
|
|
<span class="hits">4</span>
|
|
|
|
<code class="ruby"> redis.set(reuse_key, token)</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="50">
|
|
|
|
|
|
<code class="ruby"></code>
|
|
</li>
|
|
|
|
<li class="covered" data-hits="4" data-linenumber="51">
|
|
<span class="hits">4</span>
|
|
|
|
<code class="ruby"> if expires_in</code>
|
|
</li>
|
|
|
|
<li class="missed" data-hits="0" data-linenumber="52">
|
|
|
|
|
|
<code class="ruby"> redis.expire(reuse_key, expires_in)</code>
|
|
</li>
|
|
|
|
<li class="missed" data-hits="0" data-linenumber="53">
|
|
|
|
|
|
<code class="ruby"> redis.expire(key, expires_in)</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="54">
|
|
|
|
|
|
<code class="ruby"> end</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="55">
|
|
|
|
|
|
<code class="ruby"> end</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="56">
|
|
|
|
|
|
<code class="ruby"></code>
|
|
</li>
|
|
|
|
<li class="covered" data-hits="1" data-linenumber="57">
|
|
<span class="hits">1</span>
|
|
|
|
<code class="ruby"> def user</code>
|
|
</li>
|
|
|
|
<li class="covered" data-hits="4" data-linenumber="58">
|
|
<span class="hits">4</span>
|
|
|
|
<code class="ruby"> @user ||= User.find(user_id) if user_id</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="59">
|
|
|
|
|
|
<code class="ruby"> end</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="60">
|
|
|
|
|
|
<code class="ruby"></code>
|
|
</li>
|
|
|
|
<li class="covered" data-hits="1" data-linenumber="61">
|
|
<span class="hits">1</span>
|
|
|
|
<code class="ruby"> def user?</code>
|
|
</li>
|
|
|
|
<li class="missed" data-hits="0" data-linenumber="62">
|
|
|
|
|
|
<code class="ruby"> !!user</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="63">
|
|
|
|
|
|
<code class="ruby"> end</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="64">
|
|
|
|
|
|
<code class="ruby"></code>
|
|
</li>
|
|
|
|
<li class="covered" data-hits="1" data-linenumber="65">
|
|
<span class="hits">1</span>
|
|
|
|
<code class="ruby"> def to_s</code>
|
|
</li>
|
|
|
|
<li class="covered" data-hits="4" data-linenumber="66">
|
|
<span class="hits">4</span>
|
|
|
|
<code class="ruby"> token</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="67">
|
|
|
|
|
|
<code class="ruby"> end</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="68">
|
|
|
|
|
|
<code class="ruby"></code>
|
|
</li>
|
|
|
|
<li class="covered" data-hits="1" data-linenumber="69">
|
|
<span class="hits">1</span>
|
|
|
|
<code class="ruby"> module Helpers</code>
|
|
</li>
|
|
|
|
<li class="covered" data-hits="1" data-linenumber="70">
|
|
<span class="hits">1</span>
|
|
|
|
<code class="ruby"> private</code>
|
|
</li>
|
|
|
|
<li class="covered" data-hits="1" data-linenumber="71">
|
|
<span class="hits">1</span>
|
|
|
|
<code class="ruby"> def redis</code>
|
|
</li>
|
|
|
|
<li class="covered" data-hits="24" data-linenumber="72">
|
|
<span class="hits">24</span>
|
|
|
|
<code class="ruby"> Thread.current[:redis] ||= ::Redis.connect(url: Travis.config.redis.url)</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="73">
|
|
|
|
|
|
<code class="ruby"> end</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="74">
|
|
|
|
|
|
<code class="ruby"></code>
|
|
</li>
|
|
|
|
<li class="covered" data-hits="1" data-linenumber="75">
|
|
<span class="hits">1</span>
|
|
|
|
<code class="ruby"> def key(token)</code>
|
|
</li>
|
|
|
|
<li class="covered" data-hits="12" data-linenumber="76">
|
|
<span class="hits">12</span>
|
|
|
|
<code class="ruby"> "t:#{token}"</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="77">
|
|
|
|
|
|
<code class="ruby"> end</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="78">
|
|
|
|
|
|
<code class="ruby"></code>
|
|
</li>
|
|
|
|
<li class="covered" data-hits="1" data-linenumber="79">
|
|
<span class="hits">1</span>
|
|
|
|
<code class="ruby"> def encode_json(hash)</code>
|
|
</li>
|
|
|
|
<li class="missed" data-hits="0" data-linenumber="80">
|
|
|
|
|
|
<code class="ruby"> 'json:' + Base64.encode64(hash.to_json)</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="81">
|
|
|
|
|
|
<code class="ruby"> end</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="82">
|
|
|
|
|
|
<code class="ruby"></code>
|
|
</li>
|
|
|
|
<li class="covered" data-hits="1" data-linenumber="83">
|
|
<span class="hits">1</span>
|
|
|
|
<code class="ruby"> def decode_json(json)</code>
|
|
</li>
|
|
|
|
<li class="missed" data-hits="0" data-linenumber="84">
|
|
|
|
|
|
<code class="ruby"> JSON.parse(Base64.decode64(json.gsub(/^json:/, '')))</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="85">
|
|
|
|
|
|
<code class="ruby"> end</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="86">
|
|
|
|
|
|
<code class="ruby"> end</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="87">
|
|
|
|
|
|
<code class="ruby"></code>
|
|
</li>
|
|
|
|
<li class="covered" data-hits="1" data-linenumber="88">
|
|
<span class="hits">1</span>
|
|
|
|
<code class="ruby"> include Helpers</code>
|
|
</li>
|
|
|
|
<li class="covered" data-hits="1" data-linenumber="89">
|
|
<span class="hits">1</span>
|
|
|
|
<code class="ruby"> extend Helpers</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="90">
|
|
|
|
|
|
<code class="ruby"></code>
|
|
</li>
|
|
|
|
<li class="covered" data-hits="1" data-linenumber="91">
|
|
<span class="hits">1</span>
|
|
|
|
<code class="ruby"> private</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="92">
|
|
|
|
|
|
<code class="ruby"></code>
|
|
</li>
|
|
|
|
<li class="covered" data-hits="1" data-linenumber="93">
|
|
<span class="hits">1</span>
|
|
|
|
<code class="ruby"> def reuse_token</code>
|
|
</li>
|
|
|
|
<li class="covered" data-hits="4" data-linenumber="94">
|
|
<span class="hits">4</span>
|
|
|
|
<code class="ruby"> redis.get(reuse_key) unless expires_in</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="95">
|
|
|
|
|
|
<code class="ruby"> end</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="96">
|
|
|
|
|
|
<code class="ruby"></code>
|
|
</li>
|
|
|
|
<li class="covered" data-hits="1" data-linenumber="97">
|
|
<span class="hits">1</span>
|
|
|
|
<code class="ruby"> def reuse_key</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="98">
|
|
|
|
|
|
<code class="ruby"> @reuse_key ||= begin</code>
|
|
</li>
|
|
|
|
<li class="covered" data-hits="4" data-linenumber="99">
|
|
<span class="hits">4</span>
|
|
|
|
<code class="ruby"> keys = ["r", user_id, app_id]</code>
|
|
</li>
|
|
|
|
<li class="covered" data-hits="4" data-linenumber="100">
|
|
<span class="hits">4</span>
|
|
|
|
<code class="ruby"> keys.append(scopes.map(&:to_s).sort) if scopes != DEFAULT_SCOPES</code>
|
|
</li>
|
|
|
|
<li class="covered" data-hits="4" data-linenumber="101">
|
|
<span class="hits">4</span>
|
|
|
|
<code class="ruby"> keys.join(':')</code>
|
|
</li>
|
|
|
|
<li class="covered" data-hits="8" data-linenumber="102">
|
|
<span class="hits">8</span>
|
|
|
|
<code class="ruby"> end</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="103">
|
|
|
|
|
|
<code class="ruby"> end</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="104">
|
|
|
|
|
|
<code class="ruby"> end</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="105">
|
|
|
|
|
|
<code class="ruby">end</code>
|
|
</li>
|
|
|
|
</ol>
|
|
</pre>
|
|
</div>
|
|
|
|
<div class="source_table" id="a961b2b2494498d5ea5ba390081b58db5ba6a9ae">
|
|
<div class="header">
|
|
<h3>lib/travis/api/app/base.rb</h3>
|
|
<h4><span class="red">73.08 %</span> covered</h4>
|
|
<div>
|
|
<b>26</b> relevant lines.
|
|
<span class="green"><b>19</b> lines covered</span> and
|
|
<span class="red"><b>7</b> lines missed.</span>
|
|
</div>
|
|
</div>
|
|
|
|
<pre>
|
|
<ol>
|
|
|
|
<li class="covered" data-hits="1" data-linenumber="1">
|
|
<span class="hits">1</span>
|
|
|
|
<code class="ruby">require 'travis/api/app'</code>
|
|
</li>
|
|
|
|
<li class="covered" data-hits="1" data-linenumber="2">
|
|
<span class="hits">1</span>
|
|
|
|
<code class="ruby">require 'sinatra/base'</code>
|
|
</li>
|
|
|
|
<li class="covered" data-hits="1" data-linenumber="3">
|
|
<span class="hits">1</span>
|
|
|
|
<code class="ruby">require 'mustermann'</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="4">
|
|
|
|
|
|
<code class="ruby"></code>
|
|
</li>
|
|
|
|
<li class="covered" data-hits="1" data-linenumber="5">
|
|
<span class="hits">1</span>
|
|
|
|
<code class="ruby">class Travis::Api::App</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="6">
|
|
|
|
|
|
<code class="ruby"> # Superclass for any endpoint and middleware.</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="7">
|
|
|
|
|
|
<code class="ruby"> # Pulls in relevant helpers and extensions.</code>
|
|
</li>
|
|
|
|
<li class="covered" data-hits="1" data-linenumber="8">
|
|
<span class="hits">1</span>
|
|
|
|
<code class="ruby"> class Base < Sinatra::Base</code>
|
|
</li>
|
|
|
|
<li class="covered" data-hits="1" data-linenumber="9">
|
|
<span class="hits">1</span>
|
|
|
|
<code class="ruby"> register Extensions::SmartConstants</code>
|
|
</li>
|
|
|
|
<li class="covered" data-hits="1" data-linenumber="10">
|
|
<span class="hits">1</span>
|
|
|
|
<code class="ruby"> register Mustermann</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="11">
|
|
|
|
|
|
<code class="ruby"></code>
|
|
</li>
|
|
|
|
<li class="covered" data-hits="1" data-linenumber="12">
|
|
<span class="hits">1</span>
|
|
|
|
<code class="ruby"> error NotImplementedError do</code>
|
|
</li>
|
|
|
|
<li class="missed" data-hits="0" data-linenumber="13">
|
|
|
|
|
|
<code class="ruby"> content_type :txt</code>
|
|
</li>
|
|
|
|
<li class="missed" data-hits="0" data-linenumber="14">
|
|
|
|
|
|
<code class="ruby"> status 501</code>
|
|
</li>
|
|
|
|
<li class="missed" data-hits="0" data-linenumber="15">
|
|
|
|
|
|
<code class="ruby"> "This feature has not yet been implemented. Sorry :(\n\nPull Requests welcome!"</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="16">
|
|
|
|
|
|
<code class="ruby"> end</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="17">
|
|
|
|
|
|
<code class="ruby"></code>
|
|
</li>
|
|
|
|
<li class="covered" data-hits="1" data-linenumber="18">
|
|
<span class="hits">1</span>
|
|
|
|
<code class="ruby"> error JSON::ParserError do</code>
|
|
</li>
|
|
|
|
<li class="missed" data-hits="0" data-linenumber="19">
|
|
|
|
|
|
<code class="ruby"> status 400</code>
|
|
</li>
|
|
|
|
<li class="missed" data-hits="0" data-linenumber="20">
|
|
|
|
|
|
<code class="ruby"> "Invalid JSON in request body"</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="21">
|
|
|
|
|
|
<code class="ruby"> end</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="22">
|
|
|
|
|
|
<code class="ruby"></code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="23">
|
|
|
|
|
|
<code class="ruby"> # hotfix??</code>
|
|
</li>
|
|
|
|
<li class="covered" data-hits="1" data-linenumber="24">
|
|
<span class="hits">1</span>
|
|
|
|
<code class="ruby"> def route_missing</code>
|
|
</li>
|
|
|
|
<li class="covered" data-hits="135" data-linenumber="25">
|
|
<span class="hits">135</span>
|
|
|
|
<code class="ruby"> @app ? forward : halt(404)</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="26">
|
|
|
|
|
|
<code class="ruby"> end</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="27">
|
|
|
|
|
|
<code class="ruby"></code>
|
|
</li>
|
|
|
|
<li class="covered" data-hits="1" data-linenumber="28">
|
|
<span class="hits">1</span>
|
|
|
|
<code class="ruby"> def call(env)</code>
|
|
</li>
|
|
|
|
<li class="covered" data-hits="135" data-linenumber="29">
|
|
<span class="hits">135</span>
|
|
|
|
<code class="ruby"> super</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="30">
|
|
|
|
|
|
<code class="ruby"> rescue Sinatra::NotFound</code>
|
|
</li>
|
|
|
|
<li class="missed" data-hits="0" data-linenumber="31">
|
|
|
|
|
|
<code class="ruby"> [404, {'Content-Type' => 'text/plain'}, ['Tell Konstantin to fix this!']]</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="32">
|
|
|
|
|
|
<code class="ruby"> end</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="33">
|
|
|
|
|
|
<code class="ruby"></code>
|
|
</li>
|
|
|
|
<li class="covered" data-hits="1" data-linenumber="34">
|
|
<span class="hits">1</span>
|
|
|
|
<code class="ruby"> configure do</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="35">
|
|
|
|
|
|
<code class="ruby"> # We pull in certain protection middleware in App.</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="36">
|
|
|
|
|
|
<code class="ruby"> # Being token based makes us invulnerable to common</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="37">
|
|
|
|
|
|
<code class="ruby"> # CSRF attack.</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="38">
|
|
|
|
|
|
<code class="ruby"> #</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="39">
|
|
|
|
|
|
<code class="ruby"> # Logging is set up by custom middleware</code>
|
|
</li>
|
|
|
|
<li class="covered" data-hits="1" data-linenumber="40">
|
|
<span class="hits">1</span>
|
|
|
|
<code class="ruby"> disable :protection, :logging, :setup</code>
|
|
</li>
|
|
|
|
<li class="covered" data-hits="1" data-linenumber="41">
|
|
<span class="hits">1</span>
|
|
|
|
<code class="ruby"> enable :raise_errors</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="42">
|
|
|
|
|
|
<code class="ruby"> # disable :dump_errors</code>
|
|
</li>
|
|
|
|
<li class="covered" data-hits="1" data-linenumber="43">
|
|
<span class="hits">1</span>
|
|
|
|
<code class="ruby"> register :subclass_tracker, :expose_pattern</code>
|
|
</li>
|
|
|
|
<li class="covered" data-hits="1" data-linenumber="44">
|
|
<span class="hits">1</span>
|
|
|
|
<code class="ruby"> helpers :respond_with, :mime_types</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="45">
|
|
|
|
|
|
<code class="ruby"> end</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="46">
|
|
|
|
|
|
<code class="ruby"></code>
|
|
</li>
|
|
|
|
<li class="covered" data-hits="1" data-linenumber="47">
|
|
<span class="hits">1</span>
|
|
|
|
<code class="ruby"> configure :development do</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="48">
|
|
|
|
|
|
<code class="ruby"> # We want error pages in development, but only</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="49">
|
|
|
|
|
|
<code class="ruby"> # when we don't have an error handler specified</code>
|
|
</li>
|
|
|
|
<li class="missed" data-hits="0" data-linenumber="50">
|
|
|
|
|
|
<code class="ruby"> set :show_exceptions, :after_handler</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="51">
|
|
|
|
|
|
<code class="ruby"> end</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="52">
|
|
|
|
|
|
<code class="ruby"> end</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="53">
|
|
|
|
|
|
<code class="ruby">end</code>
|
|
</li>
|
|
|
|
</ol>
|
|
</pre>
|
|
</div>
|
|
|
|
<div class="source_table" id="d160d1d2c1e6c6e0542165ddbf75627d39b2de6f">
|
|
<div class="header">
|
|
<h3>lib/travis/api/app/cors.rb</h3>
|
|
<h4><span class="red">80.0 %</span> covered</h4>
|
|
<div>
|
|
<b>10</b> relevant lines.
|
|
<span class="green"><b>8</b> lines covered</span> and
|
|
<span class="red"><b>2</b> lines missed.</span>
|
|
</div>
|
|
</div>
|
|
|
|
<pre>
|
|
<ol>
|
|
|
|
<li class="covered" data-hits="1" data-linenumber="1">
|
|
<span class="hits">1</span>
|
|
|
|
<code class="ruby">require 'travis/api/app'</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="2">
|
|
|
|
|
|
<code class="ruby"></code>
|
|
</li>
|
|
|
|
<li class="covered" data-hits="1" data-linenumber="3">
|
|
<span class="hits">1</span>
|
|
|
|
<code class="ruby">class Travis::Api::App</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="4">
|
|
|
|
|
|
<code class="ruby"> # Implements Cross-Origin Resource Sharing. Supported by all major browsers.</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="5">
|
|
|
|
|
|
<code class="ruby"> # See http://www.w3.org/TR/cors/</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="6">
|
|
|
|
|
|
<code class="ruby"> #</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="7">
|
|
|
|
|
|
<code class="ruby"> # TODO: Be smarter about origin.</code>
|
|
</li>
|
|
|
|
<li class="covered" data-hits="1" data-linenumber="8">
|
|
<span class="hits">1</span>
|
|
|
|
<code class="ruby"> class Cors < Base</code>
|
|
</li>
|
|
|
|
<li class="covered" data-hits="1" data-linenumber="9">
|
|
<span class="hits">1</span>
|
|
|
|
<code class="ruby"> before do</code>
|
|
</li>
|
|
|
|
<li class="covered" data-hits="23" data-linenumber="10">
|
|
<span class="hits">23</span>
|
|
|
|
<code class="ruby"> headers['Access-Control-Allow-Origin'] = "*"</code>
|
|
</li>
|
|
|
|
<li class="covered" data-hits="23" data-linenumber="11">
|
|
<span class="hits">23</span>
|
|
|
|
<code class="ruby"> headers['Access-Control-Allow-Credentials'] = "true"</code>
|
|
</li>
|
|
|
|
<li class="covered" data-hits="23" data-linenumber="12">
|
|
<span class="hits">23</span>
|
|
|
|
<code class="ruby"> headers['Access-Control-Expose-Headers'] = "Content-Type, Cache-Control, Expires, Etag, Last-Modified"</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="13">
|
|
|
|
|
|
<code class="ruby"> end</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="14">
|
|
|
|
|
|
<code class="ruby"></code>
|
|
</li>
|
|
|
|
<li class="covered" data-hits="1" data-linenumber="15">
|
|
<span class="hits">1</span>
|
|
|
|
<code class="ruby"> options // do</code>
|
|
</li>
|
|
|
|
<li class="missed" data-hits="0" data-linenumber="16">
|
|
|
|
|
|
<code class="ruby"> headers['Access-Control-Allow-Methods'] = "HEAD, GET, POST, PATCH, PUT, DELETE"</code>
|
|
</li>
|
|
|
|
<li class="missed" data-hits="0" data-linenumber="17">
|
|
|
|
|
|
<code class="ruby"> headers['Access-Control-Allow-Headers'] = "Content-Type, Authorization, Accept, If-None-Match, If-Modified-Since, X-User-Agent"</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="18">
|
|
|
|
|
|
<code class="ruby"> end</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="19">
|
|
|
|
|
|
<code class="ruby"> end</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="20">
|
|
|
|
|
|
<code class="ruby">end</code>
|
|
</li>
|
|
|
|
</ol>
|
|
</pre>
|
|
</div>
|
|
|
|
<div class="source_table" id="eeda47705beb665db84542493bea1c2e0ec05731">
|
|
<div class="header">
|
|
<h3>lib/travis/api/app/endpoint.rb</h3>
|
|
<h4><span class="red">70.0 %</span> covered</h4>
|
|
<div>
|
|
<b>30</b> relevant lines.
|
|
<span class="green"><b>21</b> lines covered</span> and
|
|
<span class="red"><b>9</b> lines missed.</span>
|
|
</div>
|
|
</div>
|
|
|
|
<pre>
|
|
<ol>
|
|
|
|
<li class="covered" data-hits="1" data-linenumber="1">
|
|
<span class="hits">1</span>
|
|
|
|
<code class="ruby">require 'travis/api/app'</code>
|
|
</li>
|
|
|
|
<li class="covered" data-hits="1" data-linenumber="2">
|
|
<span class="hits">1</span>
|
|
|
|
<code class="ruby">require 'addressable/uri'</code>
|
|
</li>
|
|
|
|
<li class="covered" data-hits="1" data-linenumber="3">
|
|
<span class="hits">1</span>
|
|
|
|
<code class="ruby">require 'active_record/base'</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="4">
|
|
|
|
|
|
<code class="ruby"></code>
|
|
</li>
|
|
|
|
<li class="covered" data-hits="1" data-linenumber="5">
|
|
<span class="hits">1</span>
|
|
|
|
<code class="ruby">class Travis::Api::App</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="6">
|
|
|
|
|
|
<code class="ruby"> # Superclass for HTTP endpoints. Takes care of prefixing.</code>
|
|
</li>
|
|
|
|
<li class="covered" data-hits="1" data-linenumber="7">
|
|
<span class="hits">1</span>
|
|
|
|
<code class="ruby"> class Endpoint < Base</code>
|
|
</li>
|
|
|
|
<li class="covered" data-hits="1" data-linenumber="8">
|
|
<span class="hits">1</span>
|
|
|
|
<code class="ruby"> include Travis::Services::Helpers</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="9">
|
|
|
|
|
|
<code class="ruby"></code>
|
|
</li>
|
|
|
|
<li class="covered" data-hits="471" data-linenumber="10">
|
|
<span class="hits">471</span>
|
|
|
|
<code class="ruby"> set(:prefix) { "/" << name[/[^:]+$/].underscore }</code>
|
|
</li>
|
|
|
|
<li class="covered" data-hits="1" data-linenumber="11">
|
|
<span class="hits">1</span>
|
|
|
|
<code class="ruby"> set disable_root_endpoint: false</code>
|
|
</li>
|
|
|
|
<li class="covered" data-hits="1" data-linenumber="12">
|
|
<span class="hits">1</span>
|
|
|
|
<code class="ruby"> register :scoping</code>
|
|
</li>
|
|
|
|
<li class="covered" data-hits="1" data-linenumber="13">
|
|
<span class="hits">1</span>
|
|
|
|
<code class="ruby"> helpers :current_user, :flash, :db_follower</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="14">
|
|
|
|
|
|
<code class="ruby"></code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="15">
|
|
|
|
|
|
<code class="ruby"> # TODO hmmm?</code>
|
|
</li>
|
|
|
|
<li class="covered" data-hits="11" data-linenumber="16">
|
|
<span class="hits">11</span>
|
|
|
|
<code class="ruby"> before { flash.clear }</code>
|
|
</li>
|
|
|
|
<li class="covered" data-hits="11" data-linenumber="17">
|
|
<span class="hits">11</span>
|
|
|
|
<code class="ruby"> after { content_type :json unless content_type }</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="18">
|
|
|
|
|
|
<code class="ruby"></code>
|
|
</li>
|
|
|
|
<li class="covered" data-hits="1" data-linenumber="19">
|
|
<span class="hits">1</span>
|
|
|
|
<code class="ruby"> error(ActiveRecord::RecordNotFound, Sinatra::NotFound) { not_found }</code>
|
|
</li>
|
|
|
|
<li class="covered" data-hits="1" data-linenumber="20">
|
|
<span class="hits">1</span>
|
|
|
|
<code class="ruby"> not_found {</code>
|
|
</li>
|
|
|
|
<li class="covered" data-hits="10" data-linenumber="21">
|
|
<span class="hits">10</span>
|
|
|
|
<code class="ruby"> if content_type =~ /json/</code>
|
|
</li>
|
|
|
|
<li class="covered" data-hits="10" data-linenumber="22">
|
|
<span class="hits">10</span>
|
|
|
|
<code class="ruby"> if body && !body.empty?</code>
|
|
</li>
|
|
|
|
<li class="missed" data-hits="0" data-linenumber="23">
|
|
|
|
|
|
<code class="ruby"> body</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="24">
|
|
|
|
|
|
<code class="ruby"> else</code>
|
|
</li>
|
|
|
|
<li class="covered" data-hits="10" data-linenumber="25">
|
|
<span class="hits">10</span>
|
|
|
|
<code class="ruby"> { 'file' => 'not found' }</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="26">
|
|
|
|
|
|
<code class="ruby"> end</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="27">
|
|
|
|
|
|
<code class="ruby"> else</code>
|
|
</li>
|
|
|
|
<li class="missed" data-hits="0" data-linenumber="28">
|
|
|
|
|
|
<code class="ruby"> 'file not found'</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="29">
|
|
|
|
|
|
<code class="ruby"> end</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="30">
|
|
|
|
|
|
<code class="ruby"> }</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="31">
|
|
|
|
|
|
<code class="ruby"></code>
|
|
</li>
|
|
|
|
<li class="covered" data-hits="1" data-linenumber="32">
|
|
<span class="hits">1</span>
|
|
|
|
<code class="ruby"> private</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="33">
|
|
|
|
|
|
<code class="ruby"></code>
|
|
</li>
|
|
|
|
<li class="covered" data-hits="1" data-linenumber="34">
|
|
<span class="hits">1</span>
|
|
|
|
<code class="ruby"> def redis</code>
|
|
</li>
|
|
|
|
<li class="missed" data-hits="0" data-linenumber="35">
|
|
|
|
|
|
<code class="ruby"> Thread.current[:redis] ||= ::Redis.connect(url: Travis.config.redis.url)</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="36">
|
|
|
|
|
|
<code class="ruby"> end</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="37">
|
|
|
|
|
|
<code class="ruby"></code>
|
|
</li>
|
|
|
|
<li class="covered" data-hits="1" data-linenumber="38">
|
|
<span class="hits">1</span>
|
|
|
|
<code class="ruby"> def endpoint(link, query_values = {})</code>
|
|
</li>
|
|
|
|
<li class="missed" data-hits="0" data-linenumber="39">
|
|
|
|
|
|
<code class="ruby"> link = url(File.join(env['travis.global_prefix'], link), true, false)</code>
|
|
</li>
|
|
|
|
<li class="missed" data-hits="0" data-linenumber="40">
|
|
|
|
|
|
<code class="ruby"> uri = Addressable::URI.parse(link)</code>
|
|
</li>
|
|
|
|
<li class="missed" data-hits="0" data-linenumber="41">
|
|
|
|
|
|
<code class="ruby"> query_values = query_values.merge(uri.query_values) if uri.query_values</code>
|
|
</li>
|
|
|
|
<li class="missed" data-hits="0" data-linenumber="42">
|
|
|
|
|
|
<code class="ruby"> uri.query_values = query_values</code>
|
|
</li>
|
|
|
|
<li class="missed" data-hits="0" data-linenumber="43">
|
|
|
|
|
|
<code class="ruby"> uri.to_s</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="44">
|
|
|
|
|
|
<code class="ruby"> end</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="45">
|
|
|
|
|
|
<code class="ruby"></code>
|
|
</li>
|
|
|
|
<li class="covered" data-hits="1" data-linenumber="46">
|
|
<span class="hits">1</span>
|
|
|
|
<code class="ruby"> def safe_redirect(url)</code>
|
|
</li>
|
|
|
|
<li class="missed" data-hits="0" data-linenumber="47">
|
|
|
|
|
|
<code class="ruby"> redirect(endpoint('/redirect', to: url), 301)</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="48">
|
|
|
|
|
|
<code class="ruby"> end</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="49">
|
|
|
|
|
|
<code class="ruby"> end</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="50">
|
|
|
|
|
|
<code class="ruby">end</code>
|
|
</li>
|
|
|
|
</ol>
|
|
</pre>
|
|
</div>
|
|
|
|
<div class="source_table" id="b2b6630e8ce43a4e90ba2fa3f0747e7269631dd5">
|
|
<div class="header">
|
|
<h3>lib/travis/api/app/endpoint/accounts.rb</h3>
|
|
<h4><span class="yellow">83.33 %</span> covered</h4>
|
|
<div>
|
|
<b>6</b> relevant lines.
|
|
<span class="green"><b>5</b> lines covered</span> and
|
|
<span class="red"><b>1</b> lines missed.</span>
|
|
</div>
|
|
</div>
|
|
|
|
<pre>
|
|
<ol>
|
|
|
|
<li class="covered" data-hits="1" data-linenumber="1">
|
|
<span class="hits">1</span>
|
|
|
|
<code class="ruby">require 'travis/api/app'</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="2">
|
|
|
|
|
|
<code class="ruby"></code>
|
|
</li>
|
|
|
|
<li class="covered" data-hits="1" data-linenumber="3">
|
|
<span class="hits">1</span>
|
|
|
|
<code class="ruby">class Travis::Api::App</code>
|
|
</li>
|
|
|
|
<li class="covered" data-hits="1" data-linenumber="4">
|
|
<span class="hits">1</span>
|
|
|
|
<code class="ruby"> class Endpoint</code>
|
|
</li>
|
|
|
|
<li class="covered" data-hits="1" data-linenumber="5">
|
|
<span class="hits">1</span>
|
|
|
|
<code class="ruby"> class Accounts < Endpoint</code>
|
|
</li>
|
|
|
|
<li class="covered" data-hits="1" data-linenumber="6">
|
|
<span class="hits">1</span>
|
|
|
|
<code class="ruby"> get '/', scope: :private do</code>
|
|
</li>
|
|
|
|
<li class="missed" data-hits="0" data-linenumber="7">
|
|
|
|
|
|
<code class="ruby"> respond_with service(:find_user_accounts, params), type: :accounts</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="8">
|
|
|
|
|
|
<code class="ruby"> end</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="9">
|
|
|
|
|
|
<code class="ruby"> end</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="10">
|
|
|
|
|
|
<code class="ruby"> end</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="11">
|
|
|
|
|
|
<code class="ruby">end</code>
|
|
</li>
|
|
|
|
</ol>
|
|
</pre>
|
|
</div>
|
|
|
|
<div class="source_table" id="a5a778403a26fa47d8dfe304f657adcbfa66f559">
|
|
<div class="header">
|
|
<h3>lib/travis/api/app/endpoint/authorization.rb</h3>
|
|
<h4><span class="red">26.45 %</span> covered</h4>
|
|
<div>
|
|
<b>155</b> relevant lines.
|
|
<span class="green"><b>41</b> lines covered</span> and
|
|
<span class="red"><b>114</b> lines missed.</span>
|
|
</div>
|
|
</div>
|
|
|
|
<pre>
|
|
<ol>
|
|
|
|
<li class="covered" data-hits="1" data-linenumber="1">
|
|
<span class="hits">1</span>
|
|
|
|
<code class="ruby">require 'travis/api/app'</code>
|
|
</li>
|
|
|
|
<li class="covered" data-hits="1" data-linenumber="2">
|
|
<span class="hits">1</span>
|
|
|
|
<code class="ruby">require 'addressable/uri'</code>
|
|
</li>
|
|
|
|
<li class="covered" data-hits="1" data-linenumber="3">
|
|
<span class="hits">1</span>
|
|
|
|
<code class="ruby">require 'faraday'</code>
|
|
</li>
|
|
|
|
<li class="covered" data-hits="1" data-linenumber="4">
|
|
<span class="hits">1</span>
|
|
|
|
<code class="ruby">require 'securerandom'</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="5">
|
|
|
|
|
|
<code class="ruby"></code>
|
|
</li>
|
|
|
|
<li class="covered" data-hits="1" data-linenumber="6">
|
|
<span class="hits">1</span>
|
|
|
|
<code class="ruby">class Travis::Api::App</code>
|
|
</li>
|
|
|
|
<li class="covered" data-hits="1" data-linenumber="7">
|
|
<span class="hits">1</span>
|
|
|
|
<code class="ruby"> class Endpoint</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="8">
|
|
|
|
|
|
<code class="ruby"> # You need to get hold of an access token in order to reach any</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="9">
|
|
|
|
|
|
<code class="ruby"> # endpoint requiring authorization.</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="10">
|
|
|
|
|
|
<code class="ruby"> # There are three ways to get hold of such a token: OAuth2, via a GitHub</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="11">
|
|
|
|
|
|
<code class="ruby"> # token you may already have or with Cross-Origin Window Messages.</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="12">
|
|
|
|
|
|
<code class="ruby"> #</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="13">
|
|
|
|
|
|
<code class="ruby"> # ## OAuth2</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="14">
|
|
|
|
|
|
<code class="ruby"> #</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="15">
|
|
|
|
|
|
<code class="ruby"> # API authorization is done via a subset of OAuth2 and is largely compatible</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="16">
|
|
|
|
|
|
<code class="ruby"> # with the [GitHub process](http://developer.github.com/v3/oauth/).</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="17">
|
|
|
|
|
|
<code class="ruby"> # Be aware that Travis CI will in turn use OAuth2 to authenticate (and</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="18">
|
|
|
|
|
|
<code class="ruby"> # authorize) against GitHub.</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="19">
|
|
|
|
|
|
<code class="ruby"> #</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="20">
|
|
|
|
|
|
<code class="ruby"> # This is the recommended way for third-party web apps.</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="21">
|
|
|
|
|
|
<code class="ruby"> # The entry point is [/auth/authorize](#/auth/authorize).</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="22">
|
|
|
|
|
|
<code class="ruby"> #</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="23">
|
|
|
|
|
|
<code class="ruby"> # ## GitHub Token</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="24">
|
|
|
|
|
|
<code class="ruby"> #</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="25">
|
|
|
|
|
|
<code class="ruby"> # If you already have a GitHub token with the same or greater scope than</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="26">
|
|
|
|
|
|
<code class="ruby"> # the tokens used by Travis CI, you can easily exchange it for a access</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="27">
|
|
|
|
|
|
<code class="ruby"> # token. Travis will not store the GitHub token and only use it for a single</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="28">
|
|
|
|
|
|
<code class="ruby"> # request to resolve the associated user and scopes.</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="29">
|
|
|
|
|
|
<code class="ruby"> #</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="30">
|
|
|
|
|
|
<code class="ruby"> # This is the recommended way for GitHub applications that also want Travis</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="31">
|
|
|
|
|
|
<code class="ruby"> # integration.</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="32">
|
|
|
|
|
|
<code class="ruby"> #</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="33">
|
|
|
|
|
|
<code class="ruby"> # The entry point is [/auth/github](#POST /auth/github).</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="34">
|
|
|
|
|
|
<code class="ruby"> #</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="35">
|
|
|
|
|
|
<code class="ruby"> # ## Cross-Origin Window Messages</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="36">
|
|
|
|
|
|
<code class="ruby"> #</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="37">
|
|
|
|
|
|
<code class="ruby"> # This is the recommended way for the official client. We might improve the</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="38">
|
|
|
|
|
|
<code class="ruby"> # authorization flow to support third-party clients in the future, too.</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="39">
|
|
|
|
|
|
<code class="ruby"> #</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="40">
|
|
|
|
|
|
<code class="ruby"> # The entry point is [/auth/post_message](#/auth/post_message).</code>
|
|
</li>
|
|
|
|
<li class="covered" data-hits="1" data-linenumber="41">
|
|
<span class="hits">1</span>
|
|
|
|
<code class="ruby"> class Authorization < Endpoint</code>
|
|
</li>
|
|
|
|
<li class="covered" data-hits="1" data-linenumber="42">
|
|
<span class="hits">1</span>
|
|
|
|
<code class="ruby"> enable :inline_templates</code>
|
|
</li>
|
|
|
|
<li class="covered" data-hits="1" data-linenumber="43">
|
|
<span class="hits">1</span>
|
|
|
|
<code class="ruby"> set prefix: '/auth'</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="44">
|
|
|
|
|
|
<code class="ruby"></code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="45">
|
|
|
|
|
|
<code class="ruby"> # Endpoint for retrieving an authorization code, which in turn can be used</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="46">
|
|
|
|
|
|
<code class="ruby"> # to generate an access token.</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="47">
|
|
|
|
|
|
<code class="ruby"> #</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="48">
|
|
|
|
|
|
<code class="ruby"> # NOTE: This endpoint is not yet implemented.</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="49">
|
|
|
|
|
|
<code class="ruby"> #</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="50">
|
|
|
|
|
|
<code class="ruby"> # Parameters:</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="51">
|
|
|
|
|
|
<code class="ruby"> #</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="52">
|
|
|
|
|
|
<code class="ruby"> # * **client_id**: your App's client id (required)</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="53">
|
|
|
|
|
|
<code class="ruby"> # * **redirect_uri**: URL to redirect to</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="54">
|
|
|
|
|
|
<code class="ruby"> # * **scope**: requested access scope</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="55">
|
|
|
|
|
|
<code class="ruby"> # * **state**: should be random string to prevent CSRF attacks</code>
|
|
</li>
|
|
|
|
<li class="covered" data-hits="1" data-linenumber="56">
|
|
<span class="hits">1</span>
|
|
|
|
<code class="ruby"> get '/authorize' do</code>
|
|
</li>
|
|
|
|
<li class="missed" data-hits="0" data-linenumber="57">
|
|
|
|
|
|
<code class="ruby"> raise NotImplementedError</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="58">
|
|
|
|
|
|
<code class="ruby"> end</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="59">
|
|
|
|
|
|
<code class="ruby"></code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="60">
|
|
|
|
|
|
<code class="ruby"> # Endpoint for generating an access token from an authorization code.</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="61">
|
|
|
|
|
|
<code class="ruby"> #</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="62">
|
|
|
|
|
|
<code class="ruby"> # NOTE: This endpoint is not yet implemented.</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="63">
|
|
|
|
|
|
<code class="ruby"> #</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="64">
|
|
|
|
|
|
<code class="ruby"> # Parameters:</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="65">
|
|
|
|
|
|
<code class="ruby"> #</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="66">
|
|
|
|
|
|
<code class="ruby"> # * **client_id**: your App's client id (required)</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="67">
|
|
|
|
|
|
<code class="ruby"> # * **client_secret**: your App's client secret (required)</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="68">
|
|
|
|
|
|
<code class="ruby"> # * **code**: code retrieved from redirect from [/auth/authorize](#/auth/authorize) (required)</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="69">
|
|
|
|
|
|
<code class="ruby"> # * **redirect_uri**: URL to redirect to</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="70">
|
|
|
|
|
|
<code class="ruby"> # * **state**: same value sent to [/auth/authorize](#/auth/authorize)</code>
|
|
</li>
|
|
|
|
<li class="covered" data-hits="1" data-linenumber="71">
|
|
<span class="hits">1</span>
|
|
|
|
<code class="ruby"> post '/access_token' do</code>
|
|
</li>
|
|
|
|
<li class="missed" data-hits="0" data-linenumber="72">
|
|
|
|
|
|
<code class="ruby"> raise NotImplementedError</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="73">
|
|
|
|
|
|
<code class="ruby"> end</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="74">
|
|
|
|
|
|
<code class="ruby"></code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="75">
|
|
|
|
|
|
<code class="ruby"> # Endpoint for generating an access token from a GitHub access token.</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="76">
|
|
|
|
|
|
<code class="ruby"> #</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="77">
|
|
|
|
|
|
<code class="ruby"> # Parameters:</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="78">
|
|
|
|
|
|
<code class="ruby"> #</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="79">
|
|
|
|
|
|
<code class="ruby"> # * **github_token**: GitHub token for checking authorization (required)</code>
|
|
</li>
|
|
|
|
<li class="covered" data-hits="1" data-linenumber="80">
|
|
<span class="hits">1</span>
|
|
|
|
<code class="ruby"> post '/github' do</code>
|
|
</li>
|
|
|
|
<li class="missed" data-hits="0" data-linenumber="81">
|
|
|
|
|
|
<code class="ruby"> unless params[:github_token]</code>
|
|
</li>
|
|
|
|
<li class="missed" data-hits="0" data-linenumber="82">
|
|
|
|
|
|
<code class="ruby"> halt 422, { "error" => "Must pass 'github_token' parameter" }</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="83">
|
|
|
|
|
|
<code class="ruby"> end</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="84">
|
|
|
|
|
|
<code class="ruby"></code>
|
|
</li>
|
|
|
|
<li class="missed" data-hits="0" data-linenumber="85">
|
|
|
|
|
|
<code class="ruby"> { 'access_token' => github_to_travis(params[:github_token], app_id: 1, drop_token: true) }</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="86">
|
|
|
|
|
|
<code class="ruby"> end</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="87">
|
|
|
|
|
|
<code class="ruby"></code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="88">
|
|
|
|
|
|
<code class="ruby"> # Endpoint for making sure user authorized Travis CI to access GitHub.</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="89">
|
|
|
|
|
|
<code class="ruby"> # There are no restrictions on where to redirect to after handshake.</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="90">
|
|
|
|
|
|
<code class="ruby"> # However, no information whatsoever is being sent with the redirect.</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="91">
|
|
|
|
|
|
<code class="ruby"> #</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="92">
|
|
|
|
|
|
<code class="ruby"> # Parameters:</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="93">
|
|
|
|
|
|
<code class="ruby"> #</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="94">
|
|
|
|
|
|
<code class="ruby"> # * **redirect_uri**: URI to redirect to after handshake.</code>
|
|
</li>
|
|
|
|
<li class="covered" data-hits="1" data-linenumber="95">
|
|
<span class="hits">1</span>
|
|
|
|
<code class="ruby"> get '/handshake' do</code>
|
|
</li>
|
|
|
|
<li class="missed" data-hits="0" data-linenumber="96">
|
|
|
|
|
|
<code class="ruby"> handshake do |user, token, redirect_uri|</code>
|
|
</li>
|
|
|
|
<li class="missed" data-hits="0" data-linenumber="97">
|
|
|
|
|
|
<code class="ruby"> if target_ok? redirect_uri</code>
|
|
</li>
|
|
|
|
<li class="missed" data-hits="0" data-linenumber="98">
|
|
|
|
|
|
<code class="ruby"> content_type :html</code>
|
|
</li>
|
|
|
|
<li class="missed" data-hits="0" data-linenumber="99">
|
|
|
|
|
|
<code class="ruby"> data = { user: user, token: token, uri: redirect_uri }</code>
|
|
</li>
|
|
|
|
<li class="missed" data-hits="0" data-linenumber="100">
|
|
|
|
|
|
<code class="ruby"> erb(:post_payload, locals: data)</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="101">
|
|
|
|
|
|
<code class="ruby"> else</code>
|
|
</li>
|
|
|
|
<li class="missed" data-hits="0" data-linenumber="102">
|
|
|
|
|
|
<code class="ruby"> safe_redirect redirect_uri</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="103">
|
|
|
|
|
|
<code class="ruby"> end</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="104">
|
|
|
|
|
|
<code class="ruby"> end</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="105">
|
|
|
|
|
|
<code class="ruby"> end</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="106">
|
|
|
|
|
|
<code class="ruby"></code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="107">
|
|
|
|
|
|
<code class="ruby"> # This endpoint is meant to be embedded in an iframe, popup window or</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="108">
|
|
|
|
|
|
<code class="ruby"> # similar. It will perform the handshake and, once done, will send an</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="109">
|
|
|
|
|
|
<code class="ruby"> # access token and user payload to the parent window via postMessage.</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="110">
|
|
|
|
|
|
<code class="ruby"> #</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="111">
|
|
|
|
|
|
<code class="ruby"> # However, the endpoint to send the payload to has to be explicitely</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="112">
|
|
|
|
|
|
<code class="ruby"> # whitelisted in production, as this is endpoint is only meant to be used</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="113">
|
|
|
|
|
|
<code class="ruby"> # with the official Travis CI client at the moment.</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="114">
|
|
|
|
|
|
<code class="ruby"> #</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="115">
|
|
|
|
|
|
<code class="ruby"> # Example usage:</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="116">
|
|
|
|
|
|
<code class="ruby"> #</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="117">
|
|
|
|
|
|
<code class="ruby"> # window.addEventListener("message", function(event) {</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="118">
|
|
|
|
|
|
<code class="ruby"> # console.log("received token: " + event.data.token);</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="119">
|
|
|
|
|
|
<code class="ruby"> # });</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="120">
|
|
|
|
|
|
<code class="ruby"> #</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="121">
|
|
|
|
|
|
<code class="ruby"> # var iframe = $('<iframe />').hide();</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="122">
|
|
|
|
|
|
<code class="ruby"> # iframe.appendTo('body');</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="123">
|
|
|
|
|
|
<code class="ruby"> # iframe.attr('src', "https://api.travis-ci.org/auth/post_message");</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="124">
|
|
|
|
|
|
<code class="ruby"> #</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="125">
|
|
|
|
|
|
<code class="ruby"> # Note that embedding it in an iframe will only work for users that are</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="126">
|
|
|
|
|
|
<code class="ruby"> # logged in at GitHub and already authorized Travis CI. It is therefore</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="127">
|
|
|
|
|
|
<code class="ruby"> # recommended to redirect to [/auth/handshake](#/auth/handshake) if no</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="128">
|
|
|
|
|
|
<code class="ruby"> # token is being received.</code>
|
|
</li>
|
|
|
|
<li class="covered" data-hits="1" data-linenumber="129">
|
|
<span class="hits">1</span>
|
|
|
|
<code class="ruby"> get '/post_message', scope: :public do</code>
|
|
</li>
|
|
|
|
<li class="missed" data-hits="0" data-linenumber="130">
|
|
|
|
|
|
<code class="ruby"> content_type :html</code>
|
|
</li>
|
|
|
|
<li class="missed" data-hits="0" data-linenumber="131">
|
|
|
|
|
|
<code class="ruby"> data = { check_third_party_cookies: !Travis.config.auth.disable_third_party_cookies_check }</code>
|
|
</li>
|
|
|
|
<li class="missed" data-hits="0" data-linenumber="132">
|
|
|
|
|
|
<code class="ruby"> erb(:container, locals: data)</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="133">
|
|
|
|
|
|
<code class="ruby"> end</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="134">
|
|
|
|
|
|
<code class="ruby"></code>
|
|
</li>
|
|
|
|
<li class="covered" data-hits="1" data-linenumber="135">
|
|
<span class="hits">1</span>
|
|
|
|
<code class="ruby"> get '/post_message/iframe', scope: :public do</code>
|
|
</li>
|
|
|
|
<li class="missed" data-hits="0" data-linenumber="136">
|
|
|
|
|
|
<code class="ruby"> handshake do |user, token, target_origin|</code>
|
|
</li>
|
|
|
|
<li class="missed" data-hits="0" data-linenumber="137">
|
|
|
|
|
|
<code class="ruby"> halt 403, invalid_target(target_origin) unless target_ok? target_origin</code>
|
|
</li>
|
|
|
|
<li class="missed" data-hits="0" data-linenumber="138">
|
|
|
|
|
|
<code class="ruby"> post_message(token: token, user: user, target_origin: target_origin)</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="139">
|
|
|
|
|
|
<code class="ruby"> end</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="140">
|
|
|
|
|
|
<code class="ruby"> end</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="141">
|
|
|
|
|
|
<code class="ruby"></code>
|
|
</li>
|
|
|
|
<li class="covered" data-hits="1" data-linenumber="142">
|
|
<span class="hits">1</span>
|
|
|
|
<code class="ruby"> error Faraday::Error::ClientError do</code>
|
|
</li>
|
|
|
|
<li class="missed" data-hits="0" data-linenumber="143">
|
|
|
|
|
|
<code class="ruby"> halt 401, 'could not resolve github token'</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="144">
|
|
|
|
|
|
<code class="ruby"> end</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="145">
|
|
|
|
|
|
<code class="ruby"></code>
|
|
</li>
|
|
|
|
<li class="covered" data-hits="1" data-linenumber="146">
|
|
<span class="hits">1</span>
|
|
|
|
<code class="ruby"> private</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="147">
|
|
|
|
|
|
<code class="ruby"></code>
|
|
</li>
|
|
|
|
<li class="covered" data-hits="1" data-linenumber="148">
|
|
<span class="hits">1</span>
|
|
|
|
<code class="ruby"> def serialize_user(user)</code>
|
|
</li>
|
|
|
|
<li class="missed" data-hits="0" data-linenumber="149">
|
|
|
|
|
|
<code class="ruby"> rendered = Travis::Api.data(user, version: :v2)</code>
|
|
</li>
|
|
|
|
<li class="missed" data-hits="0" data-linenumber="150">
|
|
|
|
|
|
<code class="ruby"> rendered['user'].merge('token' => user.tokens.first.try(:token).to_s)</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="151">
|
|
|
|
|
|
<code class="ruby"> end</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="152">
|
|
|
|
|
|
<code class="ruby"></code>
|
|
</li>
|
|
|
|
<li class="covered" data-hits="1" data-linenumber="153">
|
|
<span class="hits">1</span>
|
|
|
|
<code class="ruby"> def oauth_endpoint</code>
|
|
</li>
|
|
|
|
<li class="missed" data-hits="0" data-linenumber="154">
|
|
|
|
|
|
<code class="ruby"> proxy = Travis.config.oauth2.proxy</code>
|
|
</li>
|
|
|
|
<li class="missed" data-hits="0" data-linenumber="155">
|
|
|
|
|
|
<code class="ruby"> proxy ? File.join(proxy, request.fullpath) : url</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="156">
|
|
|
|
|
|
<code class="ruby"> end</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="157">
|
|
|
|
|
|
<code class="ruby"></code>
|
|
</li>
|
|
|
|
<li class="covered" data-hits="1" data-linenumber="158">
|
|
<span class="hits">1</span>
|
|
|
|
<code class="ruby"> def handshake</code>
|
|
</li>
|
|
|
|
<li class="missed" data-hits="0" data-linenumber="159">
|
|
|
|
|
|
<code class="ruby"> config = Travis.config.oauth2</code>
|
|
</li>
|
|
|
|
<li class="missed" data-hits="0" data-linenumber="160">
|
|
|
|
|
|
<code class="ruby"> endpoint = Addressable::URI.parse(config.authorization_server)</code>
|
|
</li>
|
|
|
|
<li class="missed" data-hits="0" data-linenumber="161">
|
|
|
|
|
|
<code class="ruby"> values = {</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="162">
|
|
|
|
|
|
<code class="ruby"> client_id: config.client_id,</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="163">
|
|
|
|
|
|
<code class="ruby"> scope: config.scope,</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="164">
|
|
|
|
|
|
<code class="ruby"> redirect_uri: oauth_endpoint</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="165">
|
|
|
|
|
|
<code class="ruby"> }</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="166">
|
|
|
|
|
|
<code class="ruby"></code>
|
|
</li>
|
|
|
|
<li class="missed" data-hits="0" data-linenumber="167">
|
|
|
|
|
|
<code class="ruby"> if params[:code]</code>
|
|
</li>
|
|
|
|
<li class="missed" data-hits="0" data-linenumber="168">
|
|
|
|
|
|
<code class="ruby"> halt 400, 'state mismatch' unless state_ok?(params[:state])</code>
|
|
</li>
|
|
|
|
<li class="missed" data-hits="0" data-linenumber="169">
|
|
|
|
|
|
<code class="ruby"> endpoint.path = config.access_token_path</code>
|
|
</li>
|
|
|
|
<li class="missed" data-hits="0" data-linenumber="170">
|
|
|
|
|
|
<code class="ruby"> values[:state] = params[:state]</code>
|
|
</li>
|
|
|
|
<li class="missed" data-hits="0" data-linenumber="171">
|
|
|
|
|
|
<code class="ruby"> values[:code] = params[:code]</code>
|
|
</li>
|
|
|
|
<li class="missed" data-hits="0" data-linenumber="172">
|
|
|
|
|
|
<code class="ruby"> values[:client_secret] = config.client_secret</code>
|
|
</li>
|
|
|
|
<li class="missed" data-hits="0" data-linenumber="173">
|
|
|
|
|
|
<code class="ruby"> github_token = get_token(endpoint.to_s, values)</code>
|
|
</li>
|
|
|
|
<li class="missed" data-hits="0" data-linenumber="174">
|
|
|
|
|
|
<code class="ruby"> user = user_for_github_token(github_token)</code>
|
|
</li>
|
|
|
|
<li class="missed" data-hits="0" data-linenumber="175">
|
|
|
|
|
|
<code class="ruby"> token = generate_token(user: user, app_id: 0)</code>
|
|
</li>
|
|
|
|
<li class="missed" data-hits="0" data-linenumber="176">
|
|
|
|
|
|
<code class="ruby"> payload = params[:state].split(":::", 2)[1]</code>
|
|
</li>
|
|
|
|
<li class="missed" data-hits="0" data-linenumber="177">
|
|
|
|
|
|
<code class="ruby"> yield serialize_user(user), token, payload</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="178">
|
|
|
|
|
|
<code class="ruby"> else</code>
|
|
</li>
|
|
|
|
<li class="missed" data-hits="0" data-linenumber="179">
|
|
|
|
|
|
<code class="ruby"> values[:state] = create_state</code>
|
|
</li>
|
|
|
|
<li class="missed" data-hits="0" data-linenumber="180">
|
|
|
|
|
|
<code class="ruby"> endpoint.path = config.authorize_path</code>
|
|
</li>
|
|
|
|
<li class="missed" data-hits="0" data-linenumber="181">
|
|
|
|
|
|
<code class="ruby"> endpoint.query_values = values</code>
|
|
</li>
|
|
|
|
<li class="missed" data-hits="0" data-linenumber="182">
|
|
|
|
|
|
<code class="ruby"> redirect to(endpoint.to_s)</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="183">
|
|
|
|
|
|
<code class="ruby"> end</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="184">
|
|
|
|
|
|
<code class="ruby"> end</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="185">
|
|
|
|
|
|
<code class="ruby"></code>
|
|
</li>
|
|
|
|
<li class="covered" data-hits="1" data-linenumber="186">
|
|
<span class="hits">1</span>
|
|
|
|
<code class="ruby"> def create_state</code>
|
|
</li>
|
|
|
|
<li class="missed" data-hits="0" data-linenumber="187">
|
|
|
|
|
|
<code class="ruby"> state = SecureRandom.urlsafe_base64(16)</code>
|
|
</li>
|
|
|
|
<li class="missed" data-hits="0" data-linenumber="188">
|
|
|
|
|
|
<code class="ruby"> redis.sadd('github:states', state)</code>
|
|
</li>
|
|
|
|
<li class="missed" data-hits="0" data-linenumber="189">
|
|
|
|
|
|
<code class="ruby"> redis.expire('github:states', 1800)</code>
|
|
</li>
|
|
|
|
<li class="missed" data-hits="0" data-linenumber="190">
|
|
|
|
|
|
<code class="ruby"> payload = params[:origin] || params[:redirect_uri]</code>
|
|
</li>
|
|
|
|
<li class="missed" data-hits="0" data-linenumber="191">
|
|
|
|
|
|
<code class="ruby"> state << ":::" << payload if payload</code>
|
|
</li>
|
|
|
|
<li class="missed" data-hits="0" data-linenumber="192">
|
|
|
|
|
|
<code class="ruby"> response.set_cookie('travis.state', state)</code>
|
|
</li>
|
|
|
|
<li class="missed" data-hits="0" data-linenumber="193">
|
|
|
|
|
|
<code class="ruby"> state</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="194">
|
|
|
|
|
|
<code class="ruby"> end</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="195">
|
|
|
|
|
|
<code class="ruby"></code>
|
|
</li>
|
|
|
|
<li class="covered" data-hits="1" data-linenumber="196">
|
|
<span class="hits">1</span>
|
|
|
|
<code class="ruby"> def state_ok?(state)</code>
|
|
</li>
|
|
|
|
<li class="missed" data-hits="0" data-linenumber="197">
|
|
|
|
|
|
<code class="ruby"> cookie_state = request.cookies['travis.state']</code>
|
|
</li>
|
|
|
|
<li class="missed" data-hits="0" data-linenumber="198">
|
|
|
|
|
|
<code class="ruby"> state == cookie_state and redis.srem('github:states', state.to_s.split(":::", 1))</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="199">
|
|
|
|
|
|
<code class="ruby"> end</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="200">
|
|
|
|
|
|
<code class="ruby"></code>
|
|
</li>
|
|
|
|
<li class="covered" data-hits="1" data-linenumber="201">
|
|
<span class="hits">1</span>
|
|
|
|
<code class="ruby"> def github_to_travis(token, options = {})</code>
|
|
</li>
|
|
|
|
<li class="missed" data-hits="0" data-linenumber="202">
|
|
|
|
|
|
<code class="ruby"> drop_token = options.delete(:drop_token)</code>
|
|
</li>
|
|
|
|
<li class="missed" data-hits="0" data-linenumber="203">
|
|
|
|
|
|
<code class="ruby"> generate_token options.merge(user: user_for_github_token(token, drop_token))</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="204">
|
|
|
|
|
|
<code class="ruby"> end</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="205">
|
|
|
|
|
|
<code class="ruby"></code>
|
|
</li>
|
|
|
|
<li class="covered" data-hits="1" data-linenumber="206">
|
|
<span class="hits">1</span>
|
|
|
|
<code class="ruby"> class UserManager < Struct.new(:data, :token, :drop_token)</code>
|
|
</li>
|
|
|
|
<li class="covered" data-hits="1" data-linenumber="207">
|
|
<span class="hits">1</span>
|
|
|
|
<code class="ruby"> include User::Renaming</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="208">
|
|
|
|
|
|
<code class="ruby"></code>
|
|
</li>
|
|
|
|
<li class="covered" data-hits="1" data-linenumber="209">
|
|
<span class="hits">1</span>
|
|
|
|
<code class="ruby"> attr_accessor :user</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="210">
|
|
|
|
|
|
<code class="ruby"></code>
|
|
</li>
|
|
|
|
<li class="covered" data-hits="1" data-linenumber="211">
|
|
<span class="hits">1</span>
|
|
|
|
<code class="ruby"> def initialize(*)</code>
|
|
</li>
|
|
|
|
<li class="missed" data-hits="0" data-linenumber="212">
|
|
|
|
|
|
<code class="ruby"> super</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="213">
|
|
|
|
|
|
<code class="ruby"></code>
|
|
</li>
|
|
|
|
<li class="missed" data-hits="0" data-linenumber="214">
|
|
|
|
|
|
<code class="ruby"> @user = ::User.find_by_github_id(data['id'])</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="215">
|
|
|
|
|
|
<code class="ruby"> end</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="216">
|
|
|
|
|
|
<code class="ruby"></code>
|
|
</li>
|
|
|
|
<li class="covered" data-hits="1" data-linenumber="217">
|
|
<span class="hits">1</span>
|
|
|
|
<code class="ruby"> def info(attributes = {})</code>
|
|
</li>
|
|
|
|
<li class="missed" data-hits="0" data-linenumber="218">
|
|
|
|
|
|
<code class="ruby"> info = data.to_hash.slice('name', 'login', 'gravatar_id')</code>
|
|
</li>
|
|
|
|
<li class="missed" data-hits="0" data-linenumber="219">
|
|
|
|
|
|
<code class="ruby"> info.merge! attributes.stringify_keys</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="220">
|
|
|
|
|
|
<code class="ruby"> if Travis::Features.feature_active?(:education_data_sync) ||</code>
|
|
</li>
|
|
|
|
<li class="missed" data-hits="0" data-linenumber="221">
|
|
|
|
|
|
<code class="ruby"> (user && Travis::Features.owner_active?(:education_data_sync, user))</code>
|
|
</li>
|
|
|
|
<li class="missed" data-hits="0" data-linenumber="222">
|
|
|
|
|
|
<code class="ruby"> info['education'] = education</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="223">
|
|
|
|
|
|
<code class="ruby"> end</code>
|
|
</li>
|
|
|
|
<li class="missed" data-hits="0" data-linenumber="224">
|
|
|
|
|
|
<code class="ruby"> info['github_id'] ||= data['id']</code>
|
|
</li>
|
|
|
|
<li class="missed" data-hits="0" data-linenumber="225">
|
|
|
|
|
|
<code class="ruby"> info</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="226">
|
|
|
|
|
|
<code class="ruby"> end</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="227">
|
|
|
|
|
|
<code class="ruby"></code>
|
|
</li>
|
|
|
|
<li class="covered" data-hits="1" data-linenumber="228">
|
|
<span class="hits">1</span>
|
|
|
|
<code class="ruby"> def user_exists?</code>
|
|
</li>
|
|
|
|
<li class="missed" data-hits="0" data-linenumber="229">
|
|
|
|
|
|
<code class="ruby"> user</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="230">
|
|
|
|
|
|
<code class="ruby"> end</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="231">
|
|
|
|
|
|
<code class="ruby"></code>
|
|
</li>
|
|
|
|
<li class="covered" data-hits="1" data-linenumber="232">
|
|
<span class="hits">1</span>
|
|
|
|
<code class="ruby"> def education</code>
|
|
</li>
|
|
|
|
<li class="missed" data-hits="0" data-linenumber="233">
|
|
|
|
|
|
<code class="ruby"> Travis::Github::Education.new(token.to_s).student?</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="234">
|
|
|
|
|
|
<code class="ruby"> end</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="235">
|
|
|
|
|
|
<code class="ruby"></code>
|
|
</li>
|
|
|
|
<li class="covered" data-hits="1" data-linenumber="236">
|
|
<span class="hits">1</span>
|
|
|
|
<code class="ruby"> def fetch</code>
|
|
</li>
|
|
|
|
<li class="missed" data-hits="0" data-linenumber="237">
|
|
|
|
|
|
<code class="ruby"> retried ||= false</code>
|
|
</li>
|
|
|
|
<li class="missed" data-hits="0" data-linenumber="238">
|
|
|
|
|
|
<code class="ruby"> info = drop_token ? self.info : self.info(github_oauth_token: token)</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="239">
|
|
|
|
|
|
<code class="ruby"></code>
|
|
</li>
|
|
|
|
<li class="missed" data-hits="0" data-linenumber="240">
|
|
|
|
|
|
<code class="ruby"> ActiveRecord::Base.transaction do</code>
|
|
</li>
|
|
|
|
<li class="missed" data-hits="0" data-linenumber="241">
|
|
|
|
|
|
<code class="ruby"> if user</code>
|
|
</li>
|
|
|
|
<li class="missed" data-hits="0" data-linenumber="242">
|
|
|
|
|
|
<code class="ruby"> rename_repos_owner(user.login, info['login'])</code>
|
|
</li>
|
|
|
|
<li class="missed" data-hits="0" data-linenumber="243">
|
|
|
|
|
|
<code class="ruby"> user.update_attributes info</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="244">
|
|
|
|
|
|
<code class="ruby"> else</code>
|
|
</li>
|
|
|
|
<li class="missed" data-hits="0" data-linenumber="245">
|
|
|
|
|
|
<code class="ruby"> self.user = ::User.create! info</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="246">
|
|
|
|
|
|
<code class="ruby"> end</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="247">
|
|
|
|
|
|
<code class="ruby"></code>
|
|
</li>
|
|
|
|
<li class="missed" data-hits="0" data-linenumber="248">
|
|
|
|
|
|
<code class="ruby"> nullify_logins(user.github_id, user.login)</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="249">
|
|
|
|
|
|
<code class="ruby"> end</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="250">
|
|
|
|
|
|
<code class="ruby"></code>
|
|
</li>
|
|
|
|
<li class="missed" data-hits="0" data-linenumber="251">
|
|
|
|
|
|
<code class="ruby"> user</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="252">
|
|
|
|
|
|
<code class="ruby"> rescue ActiveRecord::RecordNotUnique</code>
|
|
</li>
|
|
|
|
<li class="missed" data-hits="0" data-linenumber="253">
|
|
|
|
|
|
<code class="ruby"> unless retried</code>
|
|
</li>
|
|
|
|
<li class="missed" data-hits="0" data-linenumber="254">
|
|
|
|
|
|
<code class="ruby"> retried = true</code>
|
|
</li>
|
|
|
|
<li class="missed" data-hits="0" data-linenumber="255">
|
|
|
|
|
|
<code class="ruby"> retry</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="256">
|
|
|
|
|
|
<code class="ruby"> end</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="257">
|
|
|
|
|
|
<code class="ruby"> end</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="258">
|
|
|
|
|
|
<code class="ruby"> end</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="259">
|
|
|
|
|
|
<code class="ruby"></code>
|
|
</li>
|
|
|
|
<li class="covered" data-hits="1" data-linenumber="260">
|
|
<span class="hits">1</span>
|
|
|
|
<code class="ruby"> def user_for_github_token(token, drop_token = false)</code>
|
|
</li>
|
|
|
|
<li class="missed" data-hits="0" data-linenumber="261">
|
|
|
|
|
|
<code class="ruby"> data = GH.with(token: token.to_s, client_id: nil) { GH['user'] }</code>
|
|
</li>
|
|
|
|
<li class="missed" data-hits="0" data-linenumber="262">
|
|
|
|
|
|
<code class="ruby"> scopes = parse_scopes data.headers['x-oauth-scopes']</code>
|
|
</li>
|
|
|
|
<li class="missed" data-hits="0" data-linenumber="263">
|
|
|
|
|
|
<code class="ruby"> manager = UserManager.new(data, token, drop_token)</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="264">
|
|
|
|
|
|
<code class="ruby"></code>
|
|
</li>
|
|
|
|
<li class="missed" data-hits="0" data-linenumber="265">
|
|
|
|
|
|
<code class="ruby"> unless acceptable?(scopes, drop_token)</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="266">
|
|
|
|
|
|
<code class="ruby"> # TODO: we should probably only redirect if this is a web</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="267">
|
|
|
|
|
|
<code class="ruby"> # oauth request, are there any other possibilities to</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="268">
|
|
|
|
|
|
<code class="ruby"> # consider?</code>
|
|
</li>
|
|
|
|
<li class="missed" data-hits="0" data-linenumber="269">
|
|
|
|
|
|
<code class="ruby"> url = Travis.config.oauth2.insufficient_access_redirect_url</code>
|
|
</li>
|
|
|
|
<li class="missed" data-hits="0" data-linenumber="270">
|
|
|
|
|
|
<code class="ruby"> url += "#existing-user" if manager.user_exists?</code>
|
|
</li>
|
|
|
|
<li class="missed" data-hits="0" data-linenumber="271">
|
|
|
|
|
|
<code class="ruby"> redirect to(url)</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="272">
|
|
|
|
|
|
<code class="ruby"> end</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="273">
|
|
|
|
|
|
<code class="ruby"></code>
|
|
</li>
|
|
|
|
<li class="missed" data-hits="0" data-linenumber="274">
|
|
|
|
|
|
<code class="ruby"> user = manager.fetch</code>
|
|
</li>
|
|
|
|
<li class="missed" data-hits="0" data-linenumber="275">
|
|
|
|
|
|
<code class="ruby"> halt 403, 'not a Travis user' if user.nil?</code>
|
|
</li>
|
|
|
|
<li class="missed" data-hits="0" data-linenumber="276">
|
|
|
|
|
|
<code class="ruby"> user</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="277">
|
|
|
|
|
|
<code class="ruby"> end</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="278">
|
|
|
|
|
|
<code class="ruby"></code>
|
|
</li>
|
|
|
|
<li class="covered" data-hits="1" data-linenumber="279">
|
|
<span class="hits">1</span>
|
|
|
|
<code class="ruby"> def get_token(endpoint, values)</code>
|
|
</li>
|
|
|
|
<li class="missed" data-hits="0" data-linenumber="280">
|
|
|
|
|
|
<code class="ruby"> response = Faraday.new(ssl: Travis.config.github.ssl).post(endpoint, values)</code>
|
|
</li>
|
|
|
|
<li class="missed" data-hits="0" data-linenumber="281">
|
|
|
|
|
|
<code class="ruby"> parameters = Addressable::URI.form_unencode(response.body)</code>
|
|
</li>
|
|
|
|
<li class="missed" data-hits="0" data-linenumber="282">
|
|
|
|
|
|
<code class="ruby"> token_info = parameters.assoc("access_token")</code>
|
|
</li>
|
|
|
|
<li class="missed" data-hits="0" data-linenumber="283">
|
|
|
|
|
|
<code class="ruby"> halt 401, 'could not resolve github token' unless token_info</code>
|
|
</li>
|
|
|
|
<li class="missed" data-hits="0" data-linenumber="284">
|
|
|
|
|
|
<code class="ruby"> token_info.last</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="285">
|
|
|
|
|
|
<code class="ruby"> end</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="286">
|
|
|
|
|
|
<code class="ruby"></code>
|
|
</li>
|
|
|
|
<li class="covered" data-hits="1" data-linenumber="287">
|
|
<span class="hits">1</span>
|
|
|
|
<code class="ruby"> def parse_scopes(data)</code>
|
|
</li>
|
|
|
|
<li class="missed" data-hits="0" data-linenumber="288">
|
|
|
|
|
|
<code class="ruby"> data.gsub(/\s/,'').split(',') if data</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="289">
|
|
|
|
|
|
<code class="ruby"> end</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="290">
|
|
|
|
|
|
<code class="ruby"></code>
|
|
</li>
|
|
|
|
<li class="covered" data-hits="1" data-linenumber="291">
|
|
<span class="hits">1</span>
|
|
|
|
<code class="ruby"> def generate_token(options)</code>
|
|
</li>
|
|
|
|
<li class="missed" data-hits="0" data-linenumber="292">
|
|
|
|
|
|
<code class="ruby"> AccessToken.create(options).token</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="293">
|
|
|
|
|
|
<code class="ruby"> end</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="294">
|
|
|
|
|
|
<code class="ruby"></code>
|
|
</li>
|
|
|
|
<li class="covered" data-hits="1" data-linenumber="295">
|
|
<span class="hits">1</span>
|
|
|
|
<code class="ruby"> def acceptable?(scopes, lossy = false)</code>
|
|
</li>
|
|
|
|
<li class="missed" data-hits="0" data-linenumber="296">
|
|
|
|
|
|
<code class="ruby"> User::Oauth.wanted_scopes.all? do |scope|</code>
|
|
</li>
|
|
|
|
<li class="missed" data-hits="0" data-linenumber="297">
|
|
|
|
|
|
<code class="ruby"> acceptable_scopes_for(scope, lossy).any? { |s| scopes.include? s }</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="298">
|
|
|
|
|
|
<code class="ruby"> end</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="299">
|
|
|
|
|
|
<code class="ruby"> end</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="300">
|
|
|
|
|
|
<code class="ruby"></code>
|
|
</li>
|
|
|
|
<li class="covered" data-hits="1" data-linenumber="301">
|
|
<span class="hits">1</span>
|
|
|
|
<code class="ruby"> def acceptable_scopes_for(scope, lossy = false)</code>
|
|
</li>
|
|
|
|
<li class="missed" data-hits="0" data-linenumber="302">
|
|
|
|
|
|
<code class="ruby"> scopes = case scope = scope.to_s</code>
|
|
</li>
|
|
|
|
<li class="missed" data-hits="0" data-linenumber="303">
|
|
|
|
|
|
<code class="ruby"> when /^(.+):/ then [$1, scope]</code>
|
|
</li>
|
|
|
|
<li class="missed" data-hits="0" data-linenumber="304">
|
|
|
|
|
|
<code class="ruby"> when 'public_repo' then [scope, 'repo']</code>
|
|
</li>
|
|
|
|
<li class="missed" data-hits="0" data-linenumber="305">
|
|
|
|
|
|
<code class="ruby"> else [scope]</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="306">
|
|
|
|
|
|
<code class="ruby"> end</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="307">
|
|
|
|
|
|
<code class="ruby"></code>
|
|
</li>
|
|
|
|
<li class="missed" data-hits="0" data-linenumber="308">
|
|
|
|
|
|
<code class="ruby"> if lossy</code>
|
|
</li>
|
|
|
|
<li class="missed" data-hits="0" data-linenumber="309">
|
|
|
|
|
|
<code class="ruby"> scopes << 'repo'</code>
|
|
</li>
|
|
|
|
<li class="missed" data-hits="0" data-linenumber="310">
|
|
|
|
|
|
<code class="ruby"> scopes << 'public_repo' if lossy and scope != 'repo'</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="311">
|
|
|
|
|
|
<code class="ruby"> end</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="312">
|
|
|
|
|
|
<code class="ruby"></code>
|
|
</li>
|
|
|
|
<li class="missed" data-hits="0" data-linenumber="313">
|
|
|
|
|
|
<code class="ruby"> scopes</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="314">
|
|
|
|
|
|
<code class="ruby"> end</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="315">
|
|
|
|
|
|
<code class="ruby"></code>
|
|
</li>
|
|
|
|
<li class="covered" data-hits="1" data-linenumber="316">
|
|
<span class="hits">1</span>
|
|
|
|
<code class="ruby"> def post_message(payload)</code>
|
|
</li>
|
|
|
|
<li class="missed" data-hits="0" data-linenumber="317">
|
|
|
|
|
|
<code class="ruby"> content_type :html</code>
|
|
</li>
|
|
|
|
<li class="missed" data-hits="0" data-linenumber="318">
|
|
|
|
|
|
<code class="ruby"> erb(:post_message, locals: payload)</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="319">
|
|
|
|
|
|
<code class="ruby"> end</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="320">
|
|
|
|
|
|
<code class="ruby"></code>
|
|
</li>
|
|
|
|
<li class="covered" data-hits="1" data-linenumber="321">
|
|
<span class="hits">1</span>
|
|
|
|
<code class="ruby"> def invalid_target(target_origin)</code>
|
|
</li>
|
|
|
|
<li class="missed" data-hits="0" data-linenumber="322">
|
|
|
|
|
|
<code class="ruby"> content_type :html</code>
|
|
</li>
|
|
|
|
<li class="missed" data-hits="0" data-linenumber="323">
|
|
|
|
|
|
<code class="ruby"> erb(:invalid_target, {}, target_origin: target_origin)</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="324">
|
|
|
|
|
|
<code class="ruby"> end</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="325">
|
|
|
|
|
|
<code class="ruby"></code>
|
|
</li>
|
|
|
|
<li class="covered" data-hits="1" data-linenumber="326">
|
|
<span class="hits">1</span>
|
|
|
|
<code class="ruby"> def target_ok?(target_origin)</code>
|
|
</li>
|
|
|
|
<li class="missed" data-hits="0" data-linenumber="327">
|
|
|
|
|
|
<code class="ruby"> return unless uri = Addressable::URI.parse(target_origin)</code>
|
|
</li>
|
|
|
|
<li class="missed" data-hits="0" data-linenumber="328">
|
|
|
|
|
|
<code class="ruby"> if allowed_https_targets.include?(uri.host)</code>
|
|
</li>
|
|
|
|
<li class="missed" data-hits="0" data-linenumber="329">
|
|
|
|
|
|
<code class="ruby"> uri.scheme == 'https'</code>
|
|
</li>
|
|
|
|
<li class="missed" data-hits="0" data-linenumber="330">
|
|
|
|
|
|
<code class="ruby"> elsif uri.host =~ /\A(.+\.)?travis-ci\.(com|org)\Z/</code>
|
|
</li>
|
|
|
|
<li class="missed" data-hits="0" data-linenumber="331">
|
|
|
|
|
|
<code class="ruby"> uri.scheme == 'https'</code>
|
|
</li>
|
|
|
|
<li class="missed" data-hits="0" data-linenumber="332">
|
|
|
|
|
|
<code class="ruby"> elsif uri.host =~ /\A(.+\.)?travis-lite\.com\Z/</code>
|
|
</li>
|
|
|
|
<li class="missed" data-hits="0" data-linenumber="333">
|
|
|
|
|
|
<code class="ruby"> uri.scheme == 'https'</code>
|
|
</li>
|
|
|
|
<li class="missed" data-hits="0" data-linenumber="334">
|
|
|
|
|
|
<code class="ruby"> elsif uri.host == 'localhost' or uri.host == '127.0.0.1'</code>
|
|
</li>
|
|
|
|
<li class="missed" data-hits="0" data-linenumber="335">
|
|
|
|
|
|
<code class="ruby"> uri.port > 1023</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="336">
|
|
|
|
|
|
<code class="ruby"> end</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="337">
|
|
|
|
|
|
<code class="ruby"> end</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="338">
|
|
|
|
|
|
<code class="ruby"></code>
|
|
</li>
|
|
|
|
<li class="covered" data-hits="1" data-linenumber="339">
|
|
<span class="hits">1</span>
|
|
|
|
<code class="ruby"> def allowed_https_targets</code>
|
|
</li>
|
|
|
|
<li class="missed" data-hits="0" data-linenumber="340">
|
|
|
|
|
|
<code class="ruby"> @allowed_https_targets ||= Travis.config.auth.target_origin.to_s.split(',')</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="341">
|
|
|
|
|
|
<code class="ruby"> end</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="342">
|
|
|
|
|
|
<code class="ruby"> end</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="343">
|
|
|
|
|
|
<code class="ruby"> end</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="344">
|
|
|
|
|
|
<code class="ruby">end</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="345">
|
|
|
|
|
|
<code class="ruby"></code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="346">
|
|
|
|
|
|
<code class="ruby">__END__</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="347">
|
|
|
|
|
|
<code class="ruby"></code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="348">
|
|
|
|
|
|
<code class="ruby">@@ invalid_target</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="349">
|
|
|
|
|
|
<code class="ruby"><script></code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="350">
|
|
|
|
|
|
<code class="ruby">console.log('refusing to send a token to <%= target_origin.inspect %>, not whitelisted!');</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="351">
|
|
|
|
|
|
<code class="ruby"></script></code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="352">
|
|
|
|
|
|
<code class="ruby"></code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="353">
|
|
|
|
|
|
<code class="ruby">@@ common</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="354">
|
|
|
|
|
|
<code class="ruby">function tellEveryone(msg, win) {</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="355">
|
|
|
|
|
|
<code class="ruby"> if(win == undefined) win = window;</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="356">
|
|
|
|
|
|
<code class="ruby"> win.postMessage(msg, '*');</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="357">
|
|
|
|
|
|
<code class="ruby"> if(win.parent != win) tellEveryone(msg, win.parent);</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="358">
|
|
|
|
|
|
<code class="ruby"> if(win.opener) tellEveryone(msg, win.opener);</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="359">
|
|
|
|
|
|
<code class="ruby">}</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="360">
|
|
|
|
|
|
<code class="ruby"></code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="361">
|
|
|
|
|
|
<code class="ruby">@@ container</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="362">
|
|
|
|
|
|
<code class="ruby"><!DOCTYPE html></code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="363">
|
|
|
|
|
|
<code class="ruby"><html><body><script></code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="364">
|
|
|
|
|
|
<code class="ruby">// === THE FLOW ===</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="365">
|
|
|
|
|
|
<code class="ruby"></code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="366">
|
|
|
|
|
|
<code class="ruby">// every serious program has a main function</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="367">
|
|
|
|
|
|
<code class="ruby">function main() {</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="368">
|
|
|
|
|
|
<code class="ruby"> doYouHave(thirdPartyCookies,</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="369">
|
|
|
|
|
|
<code class="ruby"> yesIndeed("third party cookies enabled, creating iframe",</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="370">
|
|
|
|
|
|
<code class="ruby"> doYouHave(iframe(after(5)),</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="371">
|
|
|
|
|
|
<code class="ruby"> yesIndeed("iframe succeeded", done),</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="372">
|
|
|
|
|
|
<code class="ruby"> nopeSorry("iframe taking too long, creating pop-up",</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="373">
|
|
|
|
|
|
<code class="ruby"> doYouHave(popup(after(5)),</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="374">
|
|
|
|
|
|
<code class="ruby"> yesIndeed("pop-up succeeded", done),</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="375">
|
|
|
|
|
|
<code class="ruby"> nopeSorry("pop-up failed, redirecting", redirect))))),</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="376">
|
|
|
|
|
|
<code class="ruby"> nopeSorry("third party cookies disabled, creating pop-up",</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="377">
|
|
|
|
|
|
<code class="ruby"> doYouHave(popup(after(8)),</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="378">
|
|
|
|
|
|
<code class="ruby"> yesIndeed("popup succeeded", done),</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="379">
|
|
|
|
|
|
<code class="ruby"> nopeSorry("popup failed", redirect))))();</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="380">
|
|
|
|
|
|
<code class="ruby">}</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="381">
|
|
|
|
|
|
<code class="ruby"></code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="382">
|
|
|
|
|
|
<code class="ruby">// === THE LOGIC ===</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="383">
|
|
|
|
|
|
<code class="ruby">var url = window.location.pathname + '/iframe' + window.location.search;</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="384">
|
|
|
|
|
|
<code class="ruby"></code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="385">
|
|
|
|
|
|
<code class="ruby">function thirdPartyCookies(yes, no) {</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="386">
|
|
|
|
|
|
<code class="ruby"> <%= "return no();" unless check_third_party_cookies %></code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="387">
|
|
|
|
|
|
<code class="ruby"> window.cookiesCheckCallback = function(enabled) { enabled ? yes() : no() };</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="388">
|
|
|
|
|
|
<code class="ruby"> var img = document.createElement('img');</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="389">
|
|
|
|
|
|
<code class="ruby"> img.src = "https://third-party-cookies.herokuapp.com/set";</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="390">
|
|
|
|
|
|
<code class="ruby"> img.onload = function() {</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="391">
|
|
|
|
|
|
<code class="ruby"> var script = document.createElement('script');</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="392">
|
|
|
|
|
|
<code class="ruby"> script.src = "https://third-party-cookies.herokuapp.com/check";</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="393">
|
|
|
|
|
|
<code class="ruby"> window.document.body.appendChild(script);</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="394">
|
|
|
|
|
|
<code class="ruby"> }</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="395">
|
|
|
|
|
|
<code class="ruby">}</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="396">
|
|
|
|
|
|
<code class="ruby"></code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="397">
|
|
|
|
|
|
<code class="ruby">function iframe(time) {</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="398">
|
|
|
|
|
|
<code class="ruby"> return function(yes, no) {</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="399">
|
|
|
|
|
|
<code class="ruby"> var iframe = document.createElement('iframe');</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="400">
|
|
|
|
|
|
<code class="ruby"> iframe.src = url;</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="401">
|
|
|
|
|
|
<code class="ruby"> timeout(time, yes, no);</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="402">
|
|
|
|
|
|
<code class="ruby"> window.document.body.appendChild(iframe);</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="403">
|
|
|
|
|
|
<code class="ruby"> }</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="404">
|
|
|
|
|
|
<code class="ruby">}</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="405">
|
|
|
|
|
|
<code class="ruby"></code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="406">
|
|
|
|
|
|
<code class="ruby">function popup(time) {</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="407">
|
|
|
|
|
|
<code class="ruby"> return function(yes, no) {</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="408">
|
|
|
|
|
|
<code class="ruby"> if(popupWindow) {</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="409">
|
|
|
|
|
|
<code class="ruby"> timeout(time, yes, function() {</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="410">
|
|
|
|
|
|
<code class="ruby"> if(popupWindow.closed || popupWindow.innerHeight < 1) {</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="411">
|
|
|
|
|
|
<code class="ruby"> no()</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="412">
|
|
|
|
|
|
<code class="ruby"> } else {</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="413">
|
|
|
|
|
|
<code class="ruby"> try {</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="414">
|
|
|
|
|
|
<code class="ruby"> popupWindow.focus();</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="415">
|
|
|
|
|
|
<code class="ruby"> popupWindow.resizeTo(900, 500);</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="416">
|
|
|
|
|
|
<code class="ruby"> } catch(err) {</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="417">
|
|
|
|
|
|
<code class="ruby"> no()</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="418">
|
|
|
|
|
|
<code class="ruby"> }</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="419">
|
|
|
|
|
|
<code class="ruby"> }</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="420">
|
|
|
|
|
|
<code class="ruby"> });</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="421">
|
|
|
|
|
|
<code class="ruby"> } else {</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="422">
|
|
|
|
|
|
<code class="ruby"> no()</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="423">
|
|
|
|
|
|
<code class="ruby"> }</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="424">
|
|
|
|
|
|
<code class="ruby"> }</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="425">
|
|
|
|
|
|
<code class="ruby">}</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="426">
|
|
|
|
|
|
<code class="ruby"></code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="427">
|
|
|
|
|
|
<code class="ruby">function done() {</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="428">
|
|
|
|
|
|
<code class="ruby"> if(popupWindow && !popupWindow.closed) popupWindow.close();</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="429">
|
|
|
|
|
|
<code class="ruby">}</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="430">
|
|
|
|
|
|
<code class="ruby"></code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="431">
|
|
|
|
|
|
<code class="ruby">function redirect() {</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="432">
|
|
|
|
|
|
<code class="ruby"> tellEveryone('redirect');</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="433">
|
|
|
|
|
|
<code class="ruby">}</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="434">
|
|
|
|
|
|
<code class="ruby"></code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="435">
|
|
|
|
|
|
<code class="ruby">function createPopup() {</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="436">
|
|
|
|
|
|
<code class="ruby"> if(!popupWindow) popupWindow = window.open(url, 'Signing in...', 'height=50,width=50');</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="437">
|
|
|
|
|
|
<code class="ruby">}</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="438">
|
|
|
|
|
|
<code class="ruby"></code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="439">
|
|
|
|
|
|
<code class="ruby">// === THE PLUMBING ===</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="440">
|
|
|
|
|
|
<code class="ruby"><%= erb :common %></code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="441">
|
|
|
|
|
|
<code class="ruby"></code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="442">
|
|
|
|
|
|
<code class="ruby">function timeout(time, yes, no) {</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="443">
|
|
|
|
|
|
<code class="ruby"> var timeout = setTimeout(no, time);</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="444">
|
|
|
|
|
|
<code class="ruby"> onSuccess(function() {</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="445">
|
|
|
|
|
|
<code class="ruby"> clearTimeout(timeout);</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="446">
|
|
|
|
|
|
<code class="ruby"> yes()</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="447">
|
|
|
|
|
|
<code class="ruby"> });</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="448">
|
|
|
|
|
|
<code class="ruby">}</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="449">
|
|
|
|
|
|
<code class="ruby"></code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="450">
|
|
|
|
|
|
<code class="ruby">function onSuccess(callback) {</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="451">
|
|
|
|
|
|
<code class="ruby"> succeeded ? callback() : callbacks.push(callback)</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="452">
|
|
|
|
|
|
<code class="ruby">}</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="453">
|
|
|
|
|
|
<code class="ruby"></code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="454">
|
|
|
|
|
|
<code class="ruby">function doYouHave(feature, yes, no) {</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="455">
|
|
|
|
|
|
<code class="ruby"> return function() { feature(yes, no) };</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="456">
|
|
|
|
|
|
<code class="ruby">}</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="457">
|
|
|
|
|
|
<code class="ruby"></code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="458">
|
|
|
|
|
|
<code class="ruby">function yesIndeed(msg, callback) {</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="459">
|
|
|
|
|
|
<code class="ruby"> return function() {</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="460">
|
|
|
|
|
|
<code class="ruby"> if(console && console.log) console.log(msg);</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="461">
|
|
|
|
|
|
<code class="ruby"> return callback();</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="462">
|
|
|
|
|
|
<code class="ruby"> }</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="463">
|
|
|
|
|
|
<code class="ruby">}</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="464">
|
|
|
|
|
|
<code class="ruby"></code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="465">
|
|
|
|
|
|
<code class="ruby">function after(value) {</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="466">
|
|
|
|
|
|
<code class="ruby"> return value*1000;</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="467">
|
|
|
|
|
|
<code class="ruby">}</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="468">
|
|
|
|
|
|
<code class="ruby"></code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="469">
|
|
|
|
|
|
<code class="ruby">var nopeSorry = yesIndeed;</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="470">
|
|
|
|
|
|
<code class="ruby">var timeoutes = [];</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="471">
|
|
|
|
|
|
<code class="ruby">var callbacks = [];</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="472">
|
|
|
|
|
|
<code class="ruby">var seconds = 1000;</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="473">
|
|
|
|
|
|
<code class="ruby">var succeeded = false;</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="474">
|
|
|
|
|
|
<code class="ruby">var popupWindow;</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="475">
|
|
|
|
|
|
<code class="ruby"></code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="476">
|
|
|
|
|
|
<code class="ruby">window.addEventListener("message", function(event) {</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="477">
|
|
|
|
|
|
<code class="ruby"> if(event.data === "done") {</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="478">
|
|
|
|
|
|
<code class="ruby"> succeeded = true</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="479">
|
|
|
|
|
|
<code class="ruby"> for(var i = 0; i < callbacks.length; i++) {</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="480">
|
|
|
|
|
|
<code class="ruby"> (callbacks[i])();</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="481">
|
|
|
|
|
|
<code class="ruby"> }</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="482">
|
|
|
|
|
|
<code class="ruby"> }</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="483">
|
|
|
|
|
|
<code class="ruby">});</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="484">
|
|
|
|
|
|
<code class="ruby"></code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="485">
|
|
|
|
|
|
<code class="ruby">// === READY? GO! ===</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="486">
|
|
|
|
|
|
<code class="ruby">main();</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="487">
|
|
|
|
|
|
<code class="ruby"></script></code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="488">
|
|
|
|
|
|
<code class="ruby"></body></code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="489">
|
|
|
|
|
|
<code class="ruby"></html></code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="490">
|
|
|
|
|
|
<code class="ruby"></code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="491">
|
|
|
|
|
|
<code class="ruby">@@ post_message</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="492">
|
|
|
|
|
|
<code class="ruby"><script></code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="493">
|
|
|
|
|
|
<code class="ruby"><%= erb :common %></code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="494">
|
|
|
|
|
|
<code class="ruby">function uberParent(win) {</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="495">
|
|
|
|
|
|
<code class="ruby"> return win.parent === win ? win : uberParent(win.parent);</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="496">
|
|
|
|
|
|
<code class="ruby">}</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="497">
|
|
|
|
|
|
<code class="ruby"></code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="498">
|
|
|
|
|
|
<code class="ruby">function sendPayload(win) {</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="499">
|
|
|
|
|
|
<code class="ruby"> var payload = {</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="500">
|
|
|
|
|
|
<code class="ruby"> 'user': <%= user.to_json %>,</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="501">
|
|
|
|
|
|
<code class="ruby"> 'token': <%= token.inspect %></code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="502">
|
|
|
|
|
|
<code class="ruby"> };</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="503">
|
|
|
|
|
|
<code class="ruby"> uberParent(win).postMessage(payload, <%= target_origin.inspect %>);</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="504">
|
|
|
|
|
|
<code class="ruby">}</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="505">
|
|
|
|
|
|
<code class="ruby"></code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="506">
|
|
|
|
|
|
<code class="ruby">if(window.parent == window) {</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="507">
|
|
|
|
|
|
<code class="ruby"> sendPayload(window.opener);</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="508">
|
|
|
|
|
|
<code class="ruby"> window.close();</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="509">
|
|
|
|
|
|
<code class="ruby">} else {</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="510">
|
|
|
|
|
|
<code class="ruby"> tellEveryone('done');</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="511">
|
|
|
|
|
|
<code class="ruby"> sendPayload(window.parent);</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="512">
|
|
|
|
|
|
<code class="ruby">}</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="513">
|
|
|
|
|
|
<code class="ruby"></script></code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="514">
|
|
|
|
|
|
<code class="ruby"></code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="515">
|
|
|
|
|
|
<code class="ruby">@@ post_payload</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="516">
|
|
|
|
|
|
<code class="ruby"><body onload='document.forms[0].submit()'></code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="517">
|
|
|
|
|
|
<code class="ruby"> <form action="<%= uri %>" method='post'></code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="518">
|
|
|
|
|
|
<code class="ruby"> <input type='hidden' name='token' value='<%= token %>'></code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="519">
|
|
|
|
|
|
<code class="ruby"> <input type='hidden' name='user' value="<%= user.to_json.gsub('"', '&quot;') %>"></code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="520">
|
|
|
|
|
|
<code class="ruby"> <input type='hidden' name='storage' value='localStorage'></code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="521">
|
|
|
|
|
|
<code class="ruby"> </form></code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="522">
|
|
|
|
|
|
<code class="ruby"></body></code>
|
|
</li>
|
|
|
|
</ol>
|
|
</pre>
|
|
</div>
|
|
|
|
<div class="source_table" id="2b74a2462ad5e4f3ca518f0cc6f13ddc82ee8762">
|
|
<div class="header">
|
|
<h3>lib/travis/api/app/endpoint/branches.rb</h3>
|
|
<h4><span class="yellow">83.33 %</span> covered</h4>
|
|
<div>
|
|
<b>6</b> relevant lines.
|
|
<span class="green"><b>5</b> lines covered</span> and
|
|
<span class="red"><b>1</b> lines missed.</span>
|
|
</div>
|
|
</div>
|
|
|
|
<pre>
|
|
<ol>
|
|
|
|
<li class="covered" data-hits="1" data-linenumber="1">
|
|
<span class="hits">1</span>
|
|
|
|
<code class="ruby">require 'travis/api/app'</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="2">
|
|
|
|
|
|
<code class="ruby"></code>
|
|
</li>
|
|
|
|
<li class="covered" data-hits="1" data-linenumber="3">
|
|
<span class="hits">1</span>
|
|
|
|
<code class="ruby">class Travis::Api::App</code>
|
|
</li>
|
|
|
|
<li class="covered" data-hits="1" data-linenumber="4">
|
|
<span class="hits">1</span>
|
|
|
|
<code class="ruby"> class Endpoint</code>
|
|
</li>
|
|
|
|
<li class="covered" data-hits="1" data-linenumber="5">
|
|
<span class="hits">1</span>
|
|
|
|
<code class="ruby"> class Branches < Endpoint</code>
|
|
</li>
|
|
|
|
<li class="covered" data-hits="1" data-linenumber="6">
|
|
<span class="hits">1</span>
|
|
|
|
<code class="ruby"> get '/' do</code>
|
|
</li>
|
|
|
|
<li class="missed" data-hits="0" data-linenumber="7">
|
|
|
|
|
|
<code class="ruby"> respond_with service(:find_branches, params), type: :branches</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="8">
|
|
|
|
|
|
<code class="ruby"> end</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="9">
|
|
|
|
|
|
<code class="ruby"></code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="10">
|
|
|
|
|
|
<code class="ruby"> # get '/:owner_name/:name/branches' do # v1</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="11">
|
|
|
|
|
|
<code class="ruby"> # get '/repos/:owner_name/:name/branches' do # v2</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="12">
|
|
|
|
|
|
<code class="ruby"> # respond_with service(:branches, :find_all, params), type: :branches</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="13">
|
|
|
|
|
|
<code class="ruby"> # end</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="14">
|
|
|
|
|
|
<code class="ruby"> end</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="15">
|
|
|
|
|
|
<code class="ruby"> end</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="16">
|
|
|
|
|
|
<code class="ruby">end</code>
|
|
</li>
|
|
|
|
</ol>
|
|
</pre>
|
|
</div>
|
|
|
|
<div class="source_table" id="f830dba6ed178eb88e884e4ef578db0073e9384a">
|
|
<div class="header">
|
|
<h3>lib/travis/api/app/endpoint/broadcasts.rb</h3>
|
|
<h4><span class="yellow">83.33 %</span> covered</h4>
|
|
<div>
|
|
<b>6</b> relevant lines.
|
|
<span class="green"><b>5</b> lines covered</span> and
|
|
<span class="red"><b>1</b> lines missed.</span>
|
|
</div>
|
|
</div>
|
|
|
|
<pre>
|
|
<ol>
|
|
|
|
<li class="covered" data-hits="1" data-linenumber="1">
|
|
<span class="hits">1</span>
|
|
|
|
<code class="ruby">require 'travis/api/app'</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="2">
|
|
|
|
|
|
<code class="ruby"></code>
|
|
</li>
|
|
|
|
<li class="covered" data-hits="1" data-linenumber="3">
|
|
<span class="hits">1</span>
|
|
|
|
<code class="ruby">class Travis::Api::App</code>
|
|
</li>
|
|
|
|
<li class="covered" data-hits="1" data-linenumber="4">
|
|
<span class="hits">1</span>
|
|
|
|
<code class="ruby"> class Endpoint</code>
|
|
</li>
|
|
|
|
<li class="covered" data-hits="1" data-linenumber="5">
|
|
<span class="hits">1</span>
|
|
|
|
<code class="ruby"> class Broadcasts < Endpoint</code>
|
|
</li>
|
|
|
|
<li class="covered" data-hits="1" data-linenumber="6">
|
|
<span class="hits">1</span>
|
|
|
|
<code class="ruby"> get '/', scope: :private do</code>
|
|
</li>
|
|
|
|
<li class="missed" data-hits="0" data-linenumber="7">
|
|
|
|
|
|
<code class="ruby"> respond_with service(:find_user_broadcasts, params), type: :broadcasts</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="8">
|
|
|
|
|
|
<code class="ruby"> end</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="9">
|
|
|
|
|
|
<code class="ruby"> end</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="10">
|
|
|
|
|
|
<code class="ruby"> end</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="11">
|
|
|
|
|
|
<code class="ruby">end</code>
|
|
</li>
|
|
|
|
</ol>
|
|
</pre>
|
|
</div>
|
|
|
|
<div class="source_table" id="fac69dfa06cb89c53a04099fb945fb4a805cc42c">
|
|
<div class="header">
|
|
<h3>lib/travis/api/app/endpoint/builds.rb</h3>
|
|
<h4><span class="red">27.59 %</span> covered</h4>
|
|
<div>
|
|
<b>29</b> relevant lines.
|
|
<span class="green"><b>8</b> lines covered</span> and
|
|
<span class="red"><b>21</b> lines missed.</span>
|
|
</div>
|
|
</div>
|
|
|
|
<pre>
|
|
<ol>
|
|
|
|
<li class="covered" data-hits="1" data-linenumber="1">
|
|
<span class="hits">1</span>
|
|
|
|
<code class="ruby">require 'travis/api/app'</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="2">
|
|
|
|
|
|
<code class="ruby"></code>
|
|
</li>
|
|
|
|
<li class="covered" data-hits="1" data-linenumber="3">
|
|
<span class="hits">1</span>
|
|
|
|
<code class="ruby">class Travis::Api::App</code>
|
|
</li>
|
|
|
|
<li class="covered" data-hits="1" data-linenumber="4">
|
|
<span class="hits">1</span>
|
|
|
|
<code class="ruby"> class Endpoint</code>
|
|
</li>
|
|
|
|
<li class="covered" data-hits="1" data-linenumber="5">
|
|
<span class="hits">1</span>
|
|
|
|
<code class="ruby"> class Builds < Endpoint</code>
|
|
</li>
|
|
|
|
<li class="covered" data-hits="1" data-linenumber="6">
|
|
<span class="hits">1</span>
|
|
|
|
<code class="ruby"> get '/' do</code>
|
|
</li>
|
|
|
|
<li class="missed" data-hits="0" data-linenumber="7">
|
|
|
|
|
|
<code class="ruby"> prefer_follower do</code>
|
|
</li>
|
|
|
|
<li class="missed" data-hits="0" data-linenumber="8">
|
|
|
|
|
|
<code class="ruby"> name = params[:branches] ? :find_branches : :find_builds</code>
|
|
</li>
|
|
|
|
<li class="missed" data-hits="0" data-linenumber="9">
|
|
|
|
|
|
<code class="ruby"> params['ids'] = params['ids'].split(',') if params['ids'].respond_to?(:split)</code>
|
|
</li>
|
|
|
|
<li class="missed" data-hits="0" data-linenumber="10">
|
|
|
|
|
|
<code class="ruby"> respond_with service(name, params)</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="11">
|
|
|
|
|
|
<code class="ruby"> end</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="12">
|
|
|
|
|
|
<code class="ruby"> end</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="13">
|
|
|
|
|
|
<code class="ruby"></code>
|
|
</li>
|
|
|
|
<li class="covered" data-hits="1" data-linenumber="14">
|
|
<span class="hits">1</span>
|
|
|
|
<code class="ruby"> get '/:id' do</code>
|
|
</li>
|
|
|
|
<li class="missed" data-hits="0" data-linenumber="15">
|
|
|
|
|
|
<code class="ruby"> respond_with service(:find_build, params)</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="16">
|
|
|
|
|
|
<code class="ruby"> end</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="17">
|
|
|
|
|
|
<code class="ruby"></code>
|
|
</li>
|
|
|
|
<li class="covered" data-hits="1" data-linenumber="18">
|
|
<span class="hits">1</span>
|
|
|
|
<code class="ruby"> post '/:id/cancel' do</code>
|
|
</li>
|
|
|
|
<li class="missed" data-hits="0" data-linenumber="19">
|
|
|
|
|
|
<code class="ruby"> Metriks.meter("api.request.cancel_build").mark</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="20">
|
|
|
|
|
|
<code class="ruby"></code>
|
|
</li>
|
|
|
|
<li class="missed" data-hits="0" data-linenumber="21">
|
|
|
|
|
|
<code class="ruby"> service = self.service(:cancel_build, params.merge(source: 'api'))</code>
|
|
</li>
|
|
|
|
<li class="missed" data-hits="0" data-linenumber="22">
|
|
|
|
|
|
<code class="ruby"> if !service.authorized?</code>
|
|
</li>
|
|
|
|
<li class="missed" data-hits="0" data-linenumber="23">
|
|
|
|
|
|
<code class="ruby"> json = { error: {</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="24">
|
|
|
|
|
|
<code class="ruby"> message: "You don't have access to cancel build(#{params[:id]})"</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="25">
|
|
|
|
|
|
<code class="ruby"> } }</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="26">
|
|
|
|
|
|
<code class="ruby"></code>
|
|
</li>
|
|
|
|
<li class="missed" data-hits="0" data-linenumber="27">
|
|
|
|
|
|
<code class="ruby"> Metriks.meter("api.request.cancel_build.unauthorized").mark</code>
|
|
</li>
|
|
|
|
<li class="missed" data-hits="0" data-linenumber="28">
|
|
|
|
|
|
<code class="ruby"> status 403</code>
|
|
</li>
|
|
|
|
<li class="missed" data-hits="0" data-linenumber="29">
|
|
|
|
|
|
<code class="ruby"> respond_with json</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="30">
|
|
|
|
|
|
<code class="ruby"> elsif !service.can_cancel?</code>
|
|
</li>
|
|
|
|
<li class="missed" data-hits="0" data-linenumber="31">
|
|
|
|
|
|
<code class="ruby"> json = { error: {</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="32">
|
|
|
|
|
|
<code class="ruby"> message: "The build(#{params[:id]}) can't be canceled",</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="33">
|
|
|
|
|
|
<code class="ruby"> code: 'cant_cancel'</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="34">
|
|
|
|
|
|
<code class="ruby"> } }</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="35">
|
|
|
|
|
|
<code class="ruby"></code>
|
|
</li>
|
|
|
|
<li class="missed" data-hits="0" data-linenumber="36">
|
|
|
|
|
|
<code class="ruby"> Metriks.meter("api.request.cancel_build.cant_cancel").mark</code>
|
|
</li>
|
|
|
|
<li class="missed" data-hits="0" data-linenumber="37">
|
|
|
|
|
|
<code class="ruby"> status 422</code>
|
|
</li>
|
|
|
|
<li class="missed" data-hits="0" data-linenumber="38">
|
|
|
|
|
|
<code class="ruby"> respond_with json</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="39">
|
|
|
|
|
|
<code class="ruby"> else</code>
|
|
</li>
|
|
|
|
<li class="missed" data-hits="0" data-linenumber="40">
|
|
|
|
|
|
<code class="ruby"> service.run</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="41">
|
|
|
|
|
|
<code class="ruby"></code>
|
|
</li>
|
|
|
|
<li class="missed" data-hits="0" data-linenumber="42">
|
|
|
|
|
|
<code class="ruby"> Metriks.meter("api.request.cancel_build.success").mark</code>
|
|
</li>
|
|
|
|
<li class="missed" data-hits="0" data-linenumber="43">
|
|
|
|
|
|
<code class="ruby"> status 204</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="44">
|
|
|
|
|
|
<code class="ruby"> end</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="45">
|
|
|
|
|
|
<code class="ruby"> end</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="46">
|
|
|
|
|
|
<code class="ruby"></code>
|
|
</li>
|
|
|
|
<li class="covered" data-hits="1" data-linenumber="47">
|
|
<span class="hits">1</span>
|
|
|
|
<code class="ruby"> post '/:id/restart' do</code>
|
|
</li>
|
|
|
|
<li class="missed" data-hits="0" data-linenumber="48">
|
|
|
|
|
|
<code class="ruby"> Metriks.meter("api.request.restart_build").mark</code>
|
|
</li>
|
|
|
|
<li class="missed" data-hits="0" data-linenumber="49">
|
|
|
|
|
|
<code class="ruby"> respond_with service(:reset_model, build_id: params[:id])</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="50">
|
|
|
|
|
|
<code class="ruby"> end</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="51">
|
|
|
|
|
|
<code class="ruby"> end</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="52">
|
|
|
|
|
|
<code class="ruby"> end</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="53">
|
|
|
|
|
|
<code class="ruby">end</code>
|
|
</li>
|
|
|
|
</ol>
|
|
</pre>
|
|
</div>
|
|
|
|
<div class="source_table" id="03dcd32988fb710bc7a3c06636a6780bce656589">
|
|
<div class="header">
|
|
<h3>lib/travis/api/app/endpoint/documentation.rb</h3>
|
|
<h4><span class="yellow">85.71 %</span> covered</h4>
|
|
<div>
|
|
<b>7</b> relevant lines.
|
|
<span class="green"><b>6</b> lines covered</span> and
|
|
<span class="red"><b>1</b> lines missed.</span>
|
|
</div>
|
|
</div>
|
|
|
|
<pre>
|
|
<ol>
|
|
|
|
<li class="covered" data-hits="1" data-linenumber="1">
|
|
<span class="hits">1</span>
|
|
|
|
<code class="ruby">require 'travis/api/app'</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="2">
|
|
|
|
|
|
<code class="ruby"></code>
|
|
</li>
|
|
|
|
<li class="covered" data-hits="1" data-linenumber="3">
|
|
<span class="hits">1</span>
|
|
|
|
<code class="ruby">class Travis::Api::App</code>
|
|
</li>
|
|
|
|
<li class="covered" data-hits="1" data-linenumber="4">
|
|
<span class="hits">1</span>
|
|
|
|
<code class="ruby"> class Endpoint</code>
|
|
</li>
|
|
|
|
<li class="covered" data-hits="1" data-linenumber="5">
|
|
<span class="hits">1</span>
|
|
|
|
<code class="ruby"> class Documentation < Endpoint</code>
|
|
</li>
|
|
|
|
<li class="covered" data-hits="1" data-linenumber="6">
|
|
<span class="hits">1</span>
|
|
|
|
<code class="ruby"> set prefix: '/docs'</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="7">
|
|
|
|
|
|
<code class="ruby"></code>
|
|
</li>
|
|
|
|
<li class="covered" data-hits="1" data-linenumber="8">
|
|
<span class="hits">1</span>
|
|
|
|
<code class="ruby"> get '/' do</code>
|
|
</li>
|
|
|
|
<li class="missed" data-hits="0" data-linenumber="9">
|
|
|
|
|
|
<code class="ruby"> redirect "http://docs.travis-ci.com/api"</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="10">
|
|
|
|
|
|
<code class="ruby"> end</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="11">
|
|
|
|
|
|
<code class="ruby"> end</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="12">
|
|
|
|
|
|
<code class="ruby"> end</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="13">
|
|
|
|
|
|
<code class="ruby">end</code>
|
|
</li>
|
|
|
|
</ol>
|
|
</pre>
|
|
</div>
|
|
|
|
<div class="source_table" id="0dc46adef05fa2cbeadacf05c59276980cc25367">
|
|
<div class="header">
|
|
<h3>lib/travis/api/app/endpoint/endpoints.rb</h3>
|
|
<h4><span class="yellow">86.96 %</span> covered</h4>
|
|
<div>
|
|
<b>23</b> relevant lines.
|
|
<span class="green"><b>20</b> lines covered</span> and
|
|
<span class="red"><b>3</b> lines missed.</span>
|
|
</div>
|
|
</div>
|
|
|
|
<pre>
|
|
<ol>
|
|
|
|
<li class="covered" data-hits="1" data-linenumber="1">
|
|
<span class="hits">1</span>
|
|
|
|
<code class="ruby">require 'travis/api/app'</code>
|
|
</li>
|
|
|
|
<li class="covered" data-hits="1" data-linenumber="2">
|
|
<span class="hits">1</span>
|
|
|
|
<code class="ruby">require 'yard/sinatra'</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="3">
|
|
|
|
|
|
<code class="ruby"></code>
|
|
</li>
|
|
|
|
<li class="covered" data-hits="1" data-linenumber="4">
|
|
<span class="hits">1</span>
|
|
|
|
<code class="ruby">class Travis::Api::App</code>
|
|
</li>
|
|
|
|
<li class="covered" data-hits="1" data-linenumber="5">
|
|
<span class="hits">1</span>
|
|
|
|
<code class="ruby"> class Endpoint</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="6">
|
|
|
|
|
|
<code class="ruby"> # Documents all available API endpoints for the currently deployed version.</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="7">
|
|
|
|
|
|
<code class="ruby"> # Text is actually parsed from the source code upon server start.</code>
|
|
</li>
|
|
|
|
<li class="covered" data-hits="1" data-linenumber="8">
|
|
<span class="hits">1</span>
|
|
|
|
<code class="ruby"> class Endpoints < Endpoint</code>
|
|
</li>
|
|
|
|
<li class="covered" data-hits="1" data-linenumber="9">
|
|
<span class="hits">1</span>
|
|
|
|
<code class="ruby"> set :endpoints, {}</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="10">
|
|
|
|
|
|
<code class="ruby"></code>
|
|
</li>
|
|
|
|
<li class="covered" data-hits="1" data-linenumber="11">
|
|
<span class="hits">1</span>
|
|
|
|
<code class="ruby"> set :setup do</code>
|
|
</li>
|
|
|
|
<li class="covered" data-hits="1" data-linenumber="12">
|
|
<span class="hits">1</span>
|
|
|
|
<code class="ruby"> endpoint_files = Dir.glob(File.expand_path("../*.rb", __FILE__))</code>
|
|
</li>
|
|
|
|
<li class="covered" data-hits="1" data-linenumber="13">
|
|
<span class="hits">1</span>
|
|
|
|
<code class="ruby"> YARD::Registry.load(endpoint_files, true)</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="14">
|
|
|
|
|
|
<code class="ruby"></code>
|
|
</li>
|
|
|
|
<li class="covered" data-hits="1" data-linenumber="15">
|
|
<span class="hits">1</span>
|
|
|
|
<code class="ruby"> YARD::Sinatra.routes.each do |route|</code>
|
|
</li>
|
|
|
|
<li class="covered" data-hits="68" data-linenumber="16">
|
|
<span class="hits">68</span>
|
|
|
|
<code class="ruby"> namespace = route.namespace</code>
|
|
</li>
|
|
|
|
<li class="covered" data-hits="68" data-linenumber="17">
|
|
<span class="hits">68</span>
|
|
|
|
<code class="ruby"> controller = namespace.to_s.constantize</code>
|
|
</li>
|
|
|
|
<li class="covered" data-hits="68" data-linenumber="18">
|
|
<span class="hits">68</span>
|
|
|
|
<code class="ruby"> route_info = {</code>
|
|
</li>
|
|
|
|
<li class="covered" data-hits="68" data-linenumber="19">
|
|
<span class="hits">68</span>
|
|
|
|
<code class="ruby"> 'uri' => (controller.prefix + route.http_path).gsub('//', '/'),</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="20">
|
|
|
|
|
|
<code class="ruby"> 'verb' => route.http_verb,</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="21">
|
|
|
|
|
|
<code class="ruby"> 'doc' => route.docstring,</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="22">
|
|
|
|
|
|
<code class="ruby"> 'scope' => /scope\W+(\w+)/.match(route.source).try(:[], 1) || controller.default_scope.to_s</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="23">
|
|
|
|
|
|
<code class="ruby"> }</code>
|
|
</li>
|
|
|
|
<li class="covered" data-hits="68" data-linenumber="24">
|
|
<span class="hits">68</span>
|
|
|
|
<code class="ruby"> endpoint = endpoints[controller.prefix] ||= {</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="25">
|
|
|
|
|
|
<code class="ruby"> 'name' => namespace.name,</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="26">
|
|
|
|
|
|
<code class="ruby"> 'doc' => namespace.docstring,</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="27">
|
|
|
|
|
|
<code class="ruby"> 'prefix' => controller.prefix,</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="28">
|
|
|
|
|
|
<code class="ruby"> 'routes' => []</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="29">
|
|
|
|
|
|
<code class="ruby"> }</code>
|
|
</li>
|
|
|
|
<li class="covered" data-hits="68" data-linenumber="30">
|
|
<span class="hits">68</span>
|
|
|
|
<code class="ruby"> endpoint['routes'] << route_info</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="31">
|
|
|
|
|
|
<code class="ruby"> end</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="32">
|
|
|
|
|
|
<code class="ruby"></code>
|
|
</li>
|
|
|
|
<li class="covered" data-hits="18" data-linenumber="33">
|
|
<span class="hits">18</span>
|
|
|
|
<code class="ruby"> set :json, endpoints.keys.sort.map { |k| endpoints[k] }.to_json</code>
|
|
</li>
|
|
|
|
<li class="covered" data-hits="18" data-linenumber="34">
|
|
<span class="hits">18</span>
|
|
|
|
<code class="ruby"> endpoints.each_value { |r| r[:json] = r.to_json if r.respond_to? :to_hash }</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="35">
|
|
|
|
|
|
<code class="ruby"> end</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="36">
|
|
|
|
|
|
<code class="ruby"></code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="37">
|
|
|
|
|
|
<code class="ruby"> # Lists all available API endpoints by URI prefix.</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="38">
|
|
|
|
|
|
<code class="ruby"> #</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="39">
|
|
|
|
|
|
<code class="ruby"> # Values in the resulting array correspond to return values of</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="40">
|
|
|
|
|
|
<code class="ruby"> # [`/endpoints/:prefix`](#/endpoints/:prefix).</code>
|
|
</li>
|
|
|
|
<li class="covered" data-hits="1" data-linenumber="41">
|
|
<span class="hits">1</span>
|
|
|
|
<code class="ruby"> get '/' do</code>
|
|
</li>
|
|
|
|
<li class="missed" data-hits="0" data-linenumber="42">
|
|
|
|
|
|
<code class="ruby"> settings.json</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="43">
|
|
|
|
|
|
<code class="ruby"> end</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="44">
|
|
|
|
|
|
<code class="ruby"></code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="45">
|
|
|
|
|
|
<code class="ruby"> # Infos about a specific controller.</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="46">
|
|
|
|
|
|
<code class="ruby"> #</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="47">
|
|
|
|
|
|
<code class="ruby"> # Example response:</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="48">
|
|
|
|
|
|
<code class="ruby"> #</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="49">
|
|
|
|
|
|
<code class="ruby"> # {</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="50">
|
|
|
|
|
|
<code class="ruby"> # name: "Endpoints",</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="51">
|
|
|
|
|
|
<code class="ruby"> # doc: "Documents all available API endpoints...",</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="52">
|
|
|
|
|
|
<code class="ruby"> # prefix: "/endpoints",</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="53">
|
|
|
|
|
|
<code class="ruby"> # routes: [</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="54">
|
|
|
|
|
|
<code class="ruby"> # {</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="55">
|
|
|
|
|
|
<code class="ruby"> # uri: "/endpoints/:prefix",</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="56">
|
|
|
|
|
|
<code class="ruby"> # verb: "GET",</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="57">
|
|
|
|
|
|
<code class="ruby"> # doc: "Infos about...",</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="58">
|
|
|
|
|
|
<code class="ruby"> # scope: "public"</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="59">
|
|
|
|
|
|
<code class="ruby"> # }</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="60">
|
|
|
|
|
|
<code class="ruby"> # ]</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="61">
|
|
|
|
|
|
<code class="ruby"> # }</code>
|
|
</li>
|
|
|
|
<li class="covered" data-hits="1" data-linenumber="62">
|
|
<span class="hits">1</span>
|
|
|
|
<code class="ruby"> get '/:prefix' do |prefix|</code>
|
|
</li>
|
|
|
|
<li class="missed" data-hits="0" data-linenumber="63">
|
|
|
|
|
|
<code class="ruby"> pass unless endpoint = settings.endpoints["/#{prefix}"]</code>
|
|
</li>
|
|
|
|
<li class="missed" data-hits="0" data-linenumber="64">
|
|
|
|
|
|
<code class="ruby"> endpoint[:json]</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="65">
|
|
|
|
|
|
<code class="ruby"> end</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="66">
|
|
|
|
|
|
<code class="ruby"> end</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="67">
|
|
|
|
|
|
<code class="ruby"> end</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="68">
|
|
|
|
|
|
<code class="ruby">end</code>
|
|
</li>
|
|
|
|
</ol>
|
|
</pre>
|
|
</div>
|
|
|
|
<div class="source_table" id="413ff5b985954d06f57e54bae462c9380050682b">
|
|
<div class="header">
|
|
<h3>lib/travis/api/app/endpoint/env_vars.rb</h3>
|
|
<h4><span class="red">44.44 %</span> covered</h4>
|
|
<div>
|
|
<b>18</b> relevant lines.
|
|
<span class="green"><b>8</b> lines covered</span> and
|
|
<span class="red"><b>10</b> lines missed.</span>
|
|
</div>
|
|
</div>
|
|
|
|
<pre>
|
|
<ol>
|
|
|
|
<li class="covered" data-hits="1" data-linenumber="1">
|
|
<span class="hits">1</span>
|
|
|
|
<code class="ruby">require 'travis/api/app'</code>
|
|
</li>
|
|
|
|
<li class="covered" data-hits="1" data-linenumber="2">
|
|
<span class="hits">1</span>
|
|
|
|
<code class="ruby">require 'travis/api/app/endpoint/setting_endpoint'</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="3">
|
|
|
|
|
|
<code class="ruby"></code>
|
|
</li>
|
|
|
|
<li class="covered" data-hits="1" data-linenumber="4">
|
|
<span class="hits">1</span>
|
|
|
|
<code class="ruby">class Travis::Api::App</code>
|
|
</li>
|
|
|
|
<li class="covered" data-hits="1" data-linenumber="5">
|
|
<span class="hits">1</span>
|
|
|
|
<code class="ruby"> class Endpoint</code>
|
|
</li>
|
|
|
|
<li class="covered" data-hits="1" data-linenumber="6">
|
|
<span class="hits">1</span>
|
|
|
|
<code class="ruby"> class EnvVars < SettingsEndpoint</code>
|
|
</li>
|
|
|
|
<li class="covered" data-hits="1" data-linenumber="7">
|
|
<span class="hits">1</span>
|
|
|
|
<code class="ruby"> define_method(:name) { :env_vars }</code>
|
|
</li>
|
|
|
|
<li class="covered" data-hits="1" data-linenumber="8">
|
|
<span class="hits">1</span>
|
|
|
|
<code class="ruby"> define_routes!</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="9">
|
|
|
|
|
|
<code class="ruby"></code>
|
|
</li>
|
|
|
|
<li class="covered" data-hits="1" data-linenumber="10">
|
|
<span class="hits">1</span>
|
|
|
|
<code class="ruby"> def update</code>
|
|
</li>
|
|
|
|
<li class="missed" data-hits="0" data-linenumber="11">
|
|
|
|
|
|
<code class="ruby"> data = JSON.parse(request.body.read)[singular_name]</code>
|
|
</li>
|
|
|
|
<li class="missed" data-hits="0" data-linenumber="12">
|
|
|
|
|
|
<code class="ruby"> previously_public = record.public?</code>
|
|
</li>
|
|
|
|
<li class="missed" data-hits="0" data-linenumber="13">
|
|
|
|
|
|
<code class="ruby"> record.update(data)</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="14">
|
|
|
|
|
|
<code class="ruby"></code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="15">
|
|
|
|
|
|
<code class="ruby"> # if we update from private to public reset value</code>
|
|
</li>
|
|
|
|
<li class="missed" data-hits="0" data-linenumber="16">
|
|
|
|
|
|
<code class="ruby"> if !previously_public && record.public? && data['value'].nil?</code>
|
|
</li>
|
|
|
|
<li class="missed" data-hits="0" data-linenumber="17">
|
|
|
|
|
|
<code class="ruby"> record.value = nil</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="18">
|
|
|
|
|
|
<code class="ruby"> end</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="19">
|
|
|
|
|
|
<code class="ruby"></code>
|
|
</li>
|
|
|
|
<li class="missed" data-hits="0" data-linenumber="20">
|
|
|
|
|
|
<code class="ruby"> if record.valid?</code>
|
|
</li>
|
|
|
|
<li class="missed" data-hits="0" data-linenumber="21">
|
|
|
|
|
|
<code class="ruby"> repo_settings.save</code>
|
|
</li>
|
|
|
|
<li class="missed" data-hits="0" data-linenumber="22">
|
|
|
|
|
|
<code class="ruby"> respond_with(record, type: singular_name, version: :v2)</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="23">
|
|
|
|
|
|
<code class="ruby"> else</code>
|
|
</li>
|
|
|
|
<li class="missed" data-hits="0" data-linenumber="24">
|
|
|
|
|
|
<code class="ruby"> status 422</code>
|
|
</li>
|
|
|
|
<li class="missed" data-hits="0" data-linenumber="25">
|
|
|
|
|
|
<code class="ruby"> respond_with(record, type: :validation_error, version: :v2)</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="26">
|
|
|
|
|
|
<code class="ruby"> end</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="27">
|
|
|
|
|
|
<code class="ruby"> end</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="28">
|
|
|
|
|
|
<code class="ruby"></code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="29">
|
|
|
|
|
|
<code class="ruby"> end</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="30">
|
|
|
|
|
|
<code class="ruby"> end</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="31">
|
|
|
|
|
|
<code class="ruby">end</code>
|
|
</li>
|
|
|
|
</ol>
|
|
</pre>
|
|
</div>
|
|
|
|
<div class="source_table" id="f01f22d7534ebd190653ed0f88f71a94320108a3">
|
|
<div class="header">
|
|
<h3>lib/travis/api/app/endpoint/home.rb</h3>
|
|
<h4><span class="red">66.67 %</span> covered</h4>
|
|
<div>
|
|
<b>18</b> relevant lines.
|
|
<span class="green"><b>12</b> lines covered</span> and
|
|
<span class="red"><b>6</b> lines missed.</span>
|
|
</div>
|
|
</div>
|
|
|
|
<pre>
|
|
<ol>
|
|
|
|
<li class="covered" data-hits="1" data-linenumber="1">
|
|
<span class="hits">1</span>
|
|
|
|
<code class="ruby">require 'travis/api/app'</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="2">
|
|
|
|
|
|
<code class="ruby"></code>
|
|
</li>
|
|
|
|
<li class="covered" data-hits="1" data-linenumber="3">
|
|
<span class="hits">1</span>
|
|
|
|
<code class="ruby">class Travis::Api::App</code>
|
|
</li>
|
|
|
|
<li class="covered" data-hits="1" data-linenumber="4">
|
|
<span class="hits">1</span>
|
|
|
|
<code class="ruby"> class Endpoint</code>
|
|
</li>
|
|
|
|
<li class="covered" data-hits="1" data-linenumber="5">
|
|
<span class="hits">1</span>
|
|
|
|
<code class="ruby"> class Home < Endpoint</code>
|
|
</li>
|
|
|
|
<li class="covered" data-hits="1" data-linenumber="6">
|
|
<span class="hits">1</span>
|
|
|
|
<code class="ruby"> host = Travis.config.client_domain || Travis.config.host</code>
|
|
</li>
|
|
|
|
<li class="covered" data-hits="1" data-linenumber="7">
|
|
<span class="hits">1</span>
|
|
|
|
<code class="ruby"> fail "Travis.config.client_domain is not set" unless host or test?</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="8">
|
|
|
|
|
|
<code class="ruby"></code>
|
|
</li>
|
|
|
|
<li class="covered" data-hits="1" data-linenumber="9">
|
|
<span class="hits">1</span>
|
|
|
|
<code class="ruby"> set :prefix, '/'</code>
|
|
</li>
|
|
|
|
<li class="covered" data-hits="1" data-linenumber="10">
|
|
<span class="hits">1</span>
|
|
|
|
<code class="ruby"> set :client_config,</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="11">
|
|
|
|
|
|
<code class="ruby"> host: host,</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="12">
|
|
|
|
|
|
<code class="ruby"> shorten_host: Travis.config.shorten_host,</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="13">
|
|
|
|
|
|
<code class="ruby"> assets: Travis.config.assets,</code>
|
|
</li>
|
|
|
|
<li class="covered" data-hits="1" data-linenumber="14">
|
|
<span class="hits">1</span>
|
|
|
|
<code class="ruby"> pusher: (Travis.config.pusher_ws || Travis.config.pusher || {}).to_hash.slice(:scheme, :host, :port, :path, :key),</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="15">
|
|
|
|
|
|
<code class="ruby"> github: { api_url: GH.current.api_host.to_s, scopes: Travis.config.oauth2.try(:scope).to_s.split(?,) }</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="16">
|
|
|
|
|
|
<code class="ruby"></code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="17">
|
|
|
|
|
|
<code class="ruby"> # Landing point. Redirects web browsers to [API documentation](#/docs/).</code>
|
|
</li>
|
|
|
|
<li class="covered" data-hits="1" data-linenumber="18">
|
|
<span class="hits">1</span>
|
|
|
|
<code class="ruby"> get '/' do</code>
|
|
</li>
|
|
|
|
<li class="missed" data-hits="0" data-linenumber="19">
|
|
|
|
|
|
<code class="ruby"> pass if settings.disable_root_endpoint?</code>
|
|
</li>
|
|
|
|
<li class="missed" data-hits="0" data-linenumber="20">
|
|
|
|
|
|
<code class="ruby"> redirect to('/docs/') if request.preferred_type('application/json', 'application/json-home', 'text/html') == 'text/html'</code>
|
|
</li>
|
|
|
|
<li class="missed" data-hits="0" data-linenumber="21">
|
|
|
|
|
|
<code class="ruby"> { 'hello' => 'world' }</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="22">
|
|
|
|
|
|
<code class="ruby"> end</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="23">
|
|
|
|
|
|
<code class="ruby"></code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="24">
|
|
|
|
|
|
<code class="ruby"> # Simple endpoints that redirects somewhere else, to make sure we don't</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="25">
|
|
|
|
|
|
<code class="ruby"> # send a referrer.</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="26">
|
|
|
|
|
|
<code class="ruby"> #</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="27">
|
|
|
|
|
|
<code class="ruby"> # Parameters:</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="28">
|
|
|
|
|
|
<code class="ruby"> #</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="29">
|
|
|
|
|
|
<code class="ruby"> # * **to**: URI to redirect to after handshake.</code>
|
|
</li>
|
|
|
|
<li class="covered" data-hits="1" data-linenumber="30">
|
|
<span class="hits">1</span>
|
|
|
|
<code class="ruby"> get '/redirect' do</code>
|
|
</li>
|
|
|
|
<li class="missed" data-hits="0" data-linenumber="31">
|
|
|
|
|
|
<code class="ruby"> halt 400 unless params[:to] =~ %r{^https?://}</code>
|
|
</li>
|
|
|
|
<li class="missed" data-hits="0" data-linenumber="32">
|
|
|
|
|
|
<code class="ruby"> redirect params[:to]</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="33">
|
|
|
|
|
|
<code class="ruby"> end</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="34">
|
|
|
|
|
|
<code class="ruby"></code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="35">
|
|
|
|
|
|
<code class="ruby"> # Provides you with system info:</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="36">
|
|
|
|
|
|
<code class="ruby"> #</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="37">
|
|
|
|
|
|
<code class="ruby"> # {</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="38">
|
|
|
|
|
|
<code class="ruby"> # config: {</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="39">
|
|
|
|
|
|
<code class="ruby"> # host: "travis-ci.org",</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="40">
|
|
|
|
|
|
<code class="ruby"> # shorten_host: "trvs.io",</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="41">
|
|
|
|
|
|
<code class="ruby"> # pusher: { key: "dd3f11c013317df48b50" },</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="42">
|
|
|
|
|
|
<code class="ruby"> # assets: {</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="43">
|
|
|
|
|
|
<code class="ruby"> # host: "localhost:3000",</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="44">
|
|
|
|
|
|
<code class="ruby"> # version: "asset-id",</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="45">
|
|
|
|
|
|
<code class="ruby"> # interval: 15</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="46">
|
|
|
|
|
|
<code class="ruby"> # }</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="47">
|
|
|
|
|
|
<code class="ruby"> # }</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="48">
|
|
|
|
|
|
<code class="ruby"> # }</code>
|
|
</li>
|
|
|
|
<li class="covered" data-hits="1" data-linenumber="49">
|
|
<span class="hits">1</span>
|
|
|
|
<code class="ruby"> get '/config' do</code>
|
|
</li>
|
|
|
|
<li class="missed" data-hits="0" data-linenumber="50">
|
|
|
|
|
|
<code class="ruby"> { config: settings.client_config }</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="51">
|
|
|
|
|
|
<code class="ruby"> end</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="52">
|
|
|
|
|
|
<code class="ruby"> end</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="53">
|
|
|
|
|
|
<code class="ruby"> end</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="54">
|
|
|
|
|
|
<code class="ruby">end</code>
|
|
</li>
|
|
|
|
</ol>
|
|
</pre>
|
|
</div>
|
|
|
|
<div class="source_table" id="389e755e519bf86618fcf82593746fcedb9c4271">
|
|
<div class="header">
|
|
<h3>lib/travis/api/app/endpoint/hooks.rb</h3>
|
|
<h4><span class="red">75.0 %</span> covered</h4>
|
|
<div>
|
|
<b>8</b> relevant lines.
|
|
<span class="green"><b>6</b> lines covered</span> and
|
|
<span class="red"><b>2</b> lines missed.</span>
|
|
</div>
|
|
</div>
|
|
|
|
<pre>
|
|
<ol>
|
|
|
|
<li class="covered" data-hits="1" data-linenumber="1">
|
|
<span class="hits">1</span>
|
|
|
|
<code class="ruby">require 'travis/api/app'</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="2">
|
|
|
|
|
|
<code class="ruby"></code>
|
|
</li>
|
|
|
|
<li class="covered" data-hits="1" data-linenumber="3">
|
|
<span class="hits">1</span>
|
|
|
|
<code class="ruby">class Travis::Api::App</code>
|
|
</li>
|
|
|
|
<li class="covered" data-hits="1" data-linenumber="4">
|
|
<span class="hits">1</span>
|
|
|
|
<code class="ruby"> class Endpoint</code>
|
|
</li>
|
|
|
|
<li class="covered" data-hits="1" data-linenumber="5">
|
|
<span class="hits">1</span>
|
|
|
|
<code class="ruby"> class Hooks < Endpoint</code>
|
|
</li>
|
|
|
|
<li class="covered" data-hits="1" data-linenumber="6">
|
|
<span class="hits">1</span>
|
|
|
|
<code class="ruby"> get '/', scope: :private do</code>
|
|
</li>
|
|
|
|
<li class="missed" data-hits="0" data-linenumber="7">
|
|
|
|
|
|
<code class="ruby"> respond_with service(:find_hooks, params), type: :hooks</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="8">
|
|
|
|
|
|
<code class="ruby"> end</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="9">
|
|
|
|
|
|
<code class="ruby"></code>
|
|
</li>
|
|
|
|
<li class="covered" data-hits="1" data-linenumber="10">
|
|
<span class="hits">1</span>
|
|
|
|
<code class="ruby"> put '/:id?', scope: :private do</code>
|
|
</li>
|
|
|
|
<li class="missed" data-hits="0" data-linenumber="11">
|
|
|
|
|
|
<code class="ruby"> respond_with service(:update_hook, id: params[:id] || params[:hook][:id], active: params[:hook][:active])</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="12">
|
|
|
|
|
|
<code class="ruby"> end</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="13">
|
|
|
|
|
|
<code class="ruby"> end</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="14">
|
|
|
|
|
|
<code class="ruby"> end</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="15">
|
|
|
|
|
|
<code class="ruby">end</code>
|
|
</li>
|
|
|
|
</ol>
|
|
</pre>
|
|
</div>
|
|
|
|
<div class="source_table" id="0c26cbaa8343afc54bde5f948dbae2fe3039c766">
|
|
<div class="header">
|
|
<h3>lib/travis/api/app/endpoint/jobs.rb</h3>
|
|
<h4><span class="red">22.73 %</span> covered</h4>
|
|
<div>
|
|
<b>66</b> relevant lines.
|
|
<span class="green"><b>15</b> lines covered</span> and
|
|
<span class="red"><b>51</b> lines missed.</span>
|
|
</div>
|
|
</div>
|
|
|
|
<pre>
|
|
<ol>
|
|
|
|
<li class="covered" data-hits="1" data-linenumber="1">
|
|
<span class="hits">1</span>
|
|
|
|
<code class="ruby">require 'travis/api/app'</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="2">
|
|
|
|
|
|
<code class="ruby"></code>
|
|
</li>
|
|
|
|
<li class="covered" data-hits="1" data-linenumber="3">
|
|
<span class="hits">1</span>
|
|
|
|
<code class="ruby">class Travis::Api::App</code>
|
|
</li>
|
|
|
|
<li class="covered" data-hits="1" data-linenumber="4">
|
|
<span class="hits">1</span>
|
|
|
|
<code class="ruby"> class Endpoint</code>
|
|
</li>
|
|
|
|
<li class="covered" data-hits="1" data-linenumber="5">
|
|
<span class="hits">1</span>
|
|
|
|
<code class="ruby"> class Jobs < Endpoint</code>
|
|
</li>
|
|
|
|
<li class="covered" data-hits="1" data-linenumber="6">
|
|
<span class="hits">1</span>
|
|
|
|
<code class="ruby"> include Helpers::Accept</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="7">
|
|
|
|
|
|
<code class="ruby"></code>
|
|
</li>
|
|
|
|
<li class="covered" data-hits="1" data-linenumber="8">
|
|
<span class="hits">1</span>
|
|
|
|
<code class="ruby"> get '/' do</code>
|
|
</li>
|
|
|
|
<li class="missed" data-hits="0" data-linenumber="9">
|
|
|
|
|
|
<code class="ruby"> prefer_follower do</code>
|
|
</li>
|
|
|
|
<li class="missed" data-hits="0" data-linenumber="10">
|
|
|
|
|
|
<code class="ruby"> respond_with service(:find_jobs, params)</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="11">
|
|
|
|
|
|
<code class="ruby"> end</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="12">
|
|
|
|
|
|
<code class="ruby"> end</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="13">
|
|
|
|
|
|
<code class="ruby"></code>
|
|
</li>
|
|
|
|
<li class="covered" data-hits="1" data-linenumber="14">
|
|
<span class="hits">1</span>
|
|
|
|
<code class="ruby"> get '/:id' do</code>
|
|
</li>
|
|
|
|
<li class="missed" data-hits="0" data-linenumber="15">
|
|
|
|
|
|
<code class="ruby"> job = service(:find_job, params).run</code>
|
|
</li>
|
|
|
|
<li class="missed" data-hits="0" data-linenumber="16">
|
|
|
|
|
|
<code class="ruby"> if job && job.repository</code>
|
|
</li>
|
|
|
|
<li class="missed" data-hits="0" data-linenumber="17">
|
|
|
|
|
|
<code class="ruby"> respond_with job</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="18">
|
|
|
|
|
|
<code class="ruby"> else</code>
|
|
</li>
|
|
|
|
<li class="missed" data-hits="0" data-linenumber="19">
|
|
|
|
|
|
<code class="ruby"> json = { error: { message: "The job(#{params[:id]}) couldn't be found" } }</code>
|
|
</li>
|
|
|
|
<li class="missed" data-hits="0" data-linenumber="20">
|
|
|
|
|
|
<code class="ruby"> status 404</code>
|
|
</li>
|
|
|
|
<li class="missed" data-hits="0" data-linenumber="21">
|
|
|
|
|
|
<code class="ruby"> respond_with json</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="22">
|
|
|
|
|
|
<code class="ruby"> end</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="23">
|
|
|
|
|
|
<code class="ruby"> end</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="24">
|
|
|
|
|
|
<code class="ruby"></code>
|
|
</li>
|
|
|
|
<li class="covered" data-hits="1" data-linenumber="25">
|
|
<span class="hits">1</span>
|
|
|
|
<code class="ruby"> post '/:id/cancel' do</code>
|
|
</li>
|
|
|
|
<li class="missed" data-hits="0" data-linenumber="26">
|
|
|
|
|
|
<code class="ruby"> Metriks.meter("api.request.cancel_job").mark</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="27">
|
|
|
|
|
|
<code class="ruby"></code>
|
|
</li>
|
|
|
|
<li class="missed" data-hits="0" data-linenumber="28">
|
|
|
|
|
|
<code class="ruby"> service = self.service(:cancel_job, params.merge(source: 'api'))</code>
|
|
</li>
|
|
|
|
<li class="missed" data-hits="0" data-linenumber="29">
|
|
|
|
|
|
<code class="ruby"> if !service.authorized?</code>
|
|
</li>
|
|
|
|
<li class="missed" data-hits="0" data-linenumber="30">
|
|
|
|
|
|
<code class="ruby"> json = { error: {</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="31">
|
|
|
|
|
|
<code class="ruby"> message: "You don't have access to cancel job(#{params[:id]})"</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="32">
|
|
|
|
|
|
<code class="ruby"> } }</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="33">
|
|
|
|
|
|
<code class="ruby"></code>
|
|
</li>
|
|
|
|
<li class="missed" data-hits="0" data-linenumber="34">
|
|
|
|
|
|
<code class="ruby"> Metriks.meter("api.request.cancel_job.unauthorized").mark</code>
|
|
</li>
|
|
|
|
<li class="missed" data-hits="0" data-linenumber="35">
|
|
|
|
|
|
<code class="ruby"> status 403</code>
|
|
</li>
|
|
|
|
<li class="missed" data-hits="0" data-linenumber="36">
|
|
|
|
|
|
<code class="ruby"> respond_with json</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="37">
|
|
|
|
|
|
<code class="ruby"> elsif !service.can_cancel?</code>
|
|
</li>
|
|
|
|
<li class="missed" data-hits="0" data-linenumber="38">
|
|
|
|
|
|
<code class="ruby"> json = { error: {</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="39">
|
|
|
|
|
|
<code class="ruby"> message: "The job(#{params[:id]}) can't be canceled",</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="40">
|
|
|
|
|
|
<code class="ruby"> code: 'cant_cancel'</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="41">
|
|
|
|
|
|
<code class="ruby"> } }</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="42">
|
|
|
|
|
|
<code class="ruby"></code>
|
|
</li>
|
|
|
|
<li class="missed" data-hits="0" data-linenumber="43">
|
|
|
|
|
|
<code class="ruby"> Metriks.meter("api.request.cancel_job.cant_cancel").mark</code>
|
|
</li>
|
|
|
|
<li class="missed" data-hits="0" data-linenumber="44">
|
|
|
|
|
|
<code class="ruby"> status 422</code>
|
|
</li>
|
|
|
|
<li class="missed" data-hits="0" data-linenumber="45">
|
|
|
|
|
|
<code class="ruby"> respond_with json</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="46">
|
|
|
|
|
|
<code class="ruby"> else</code>
|
|
</li>
|
|
|
|
<li class="missed" data-hits="0" data-linenumber="47">
|
|
|
|
|
|
<code class="ruby"> service.run</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="48">
|
|
|
|
|
|
<code class="ruby"></code>
|
|
</li>
|
|
|
|
<li class="missed" data-hits="0" data-linenumber="49">
|
|
|
|
|
|
<code class="ruby"> Metriks.meter("api.request.cancel_job.success").mark</code>
|
|
</li>
|
|
|
|
<li class="missed" data-hits="0" data-linenumber="50">
|
|
|
|
|
|
<code class="ruby"> status 204</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="51">
|
|
|
|
|
|
<code class="ruby"> end</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="52">
|
|
|
|
|
|
<code class="ruby"> end</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="53">
|
|
|
|
|
|
<code class="ruby"></code>
|
|
</li>
|
|
|
|
<li class="covered" data-hits="1" data-linenumber="54">
|
|
<span class="hits">1</span>
|
|
|
|
<code class="ruby"> post '/:id/restart' do</code>
|
|
</li>
|
|
|
|
<li class="missed" data-hits="0" data-linenumber="55">
|
|
|
|
|
|
<code class="ruby"> Metriks.meter("api.request.restart_job").mark</code>
|
|
</li>
|
|
|
|
<li class="missed" data-hits="0" data-linenumber="56">
|
|
|
|
|
|
<code class="ruby"> respond_with service(:reset_model, job_id: params[:id])</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="57">
|
|
|
|
|
|
<code class="ruby"> end</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="58">
|
|
|
|
|
|
<code class="ruby"></code>
|
|
</li>
|
|
|
|
<li class="covered" data-hits="1" data-linenumber="59">
|
|
<span class="hits">1</span>
|
|
|
|
<code class="ruby"> get '/:job_id/log' do</code>
|
|
</li>
|
|
|
|
<li class="missed" data-hits="0" data-linenumber="60">
|
|
|
|
|
|
<code class="ruby"> resource = service(:find_log, params).run</code>
|
|
</li>
|
|
|
|
<li class="missed" data-hits="0" data-linenumber="61">
|
|
|
|
|
|
<code class="ruby"> if (!resource || resource.archived?)</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="62">
|
|
|
|
|
|
<code class="ruby"> # the way we use responders makes it hard to validate proper format</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="63">
|
|
|
|
|
|
<code class="ruby"> # automatically here, so we need to check it explicitly</code>
|
|
</li>
|
|
|
|
<li class="missed" data-hits="0" data-linenumber="64">
|
|
|
|
|
|
<code class="ruby"> if accepts?('text/plain')</code>
|
|
</li>
|
|
|
|
<li class="missed" data-hits="0" data-linenumber="65">
|
|
|
|
|
|
<code class="ruby"> archived_log_path = archive_url("/jobs/#{params[:job_id]}/log.txt")</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="66">
|
|
|
|
|
|
<code class="ruby"></code>
|
|
</li>
|
|
|
|
<li class="missed" data-hits="0" data-linenumber="67">
|
|
|
|
|
|
<code class="ruby"> if params[:cors_hax]</code>
|
|
</li>
|
|
|
|
<li class="missed" data-hits="0" data-linenumber="68">
|
|
|
|
|
|
<code class="ruby"> status 204</code>
|
|
</li>
|
|
|
|
<li class="missed" data-hits="0" data-linenumber="69">
|
|
|
|
|
|
<code class="ruby"> headers['Access-Control-Expose-Headers'] = 'Location'</code>
|
|
</li>
|
|
|
|
<li class="missed" data-hits="0" data-linenumber="70">
|
|
|
|
|
|
<code class="ruby"> headers['Location'] = archived_log_path</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="71">
|
|
|
|
|
|
<code class="ruby"> else</code>
|
|
</li>
|
|
|
|
<li class="missed" data-hits="0" data-linenumber="72">
|
|
|
|
|
|
<code class="ruby"> redirect archived_log_path, 307</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="73">
|
|
|
|
|
|
<code class="ruby"> end</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="74">
|
|
|
|
|
|
<code class="ruby"> else</code>
|
|
</li>
|
|
|
|
<li class="missed" data-hits="0" data-linenumber="75">
|
|
|
|
|
|
<code class="ruby"> status 406</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="76">
|
|
|
|
|
|
<code class="ruby"> end</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="77">
|
|
|
|
|
|
<code class="ruby"> else</code>
|
|
</li>
|
|
|
|
<li class="missed" data-hits="0" data-linenumber="78">
|
|
|
|
|
|
<code class="ruby"> respond_with resource</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="79">
|
|
|
|
|
|
<code class="ruby"> end</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="80">
|
|
|
|
|
|
<code class="ruby"> end</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="81">
|
|
|
|
|
|
<code class="ruby"></code>
|
|
</li>
|
|
|
|
<li class="covered" data-hits="1" data-linenumber="82">
|
|
<span class="hits">1</span>
|
|
|
|
<code class="ruby"> patch '/:id/log', scope: :private do |id|</code>
|
|
</li>
|
|
|
|
<li class="missed" data-hits="0" data-linenumber="83">
|
|
|
|
|
|
<code class="ruby"> begin</code>
|
|
</li>
|
|
|
|
<li class="missed" data-hits="0" data-linenumber="84">
|
|
|
|
|
|
<code class="ruby"> self.service(:remove_log, params).run</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="85">
|
|
|
|
|
|
<code class="ruby"> rescue Travis::AuthorizationDenied => ade</code>
|
|
</li>
|
|
|
|
<li class="missed" data-hits="0" data-linenumber="86">
|
|
|
|
|
|
<code class="ruby"> status 401</code>
|
|
</li>
|
|
|
|
<li class="missed" data-hits="0" data-linenumber="87">
|
|
|
|
|
|
<code class="ruby"> { error: { message: ade.message } }</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="88">
|
|
|
|
|
|
<code class="ruby"> rescue Travis::JobUnfinished, Travis::LogAlreadyRemoved => e</code>
|
|
</li>
|
|
|
|
<li class="missed" data-hits="0" data-linenumber="89">
|
|
|
|
|
|
<code class="ruby"> status 409</code>
|
|
</li>
|
|
|
|
<li class="missed" data-hits="0" data-linenumber="90">
|
|
|
|
|
|
<code class="ruby"> { error: { message: e.message } }</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="91">
|
|
|
|
|
|
<code class="ruby"> rescue => e</code>
|
|
</li>
|
|
|
|
<li class="missed" data-hits="0" data-linenumber="92">
|
|
|
|
|
|
<code class="ruby"> status 500</code>
|
|
</li>
|
|
|
|
<li class="missed" data-hits="0" data-linenumber="93">
|
|
|
|
|
|
<code class="ruby"> { error: { message: "Unexpected error occurred: #{e.message}" } }</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="94">
|
|
|
|
|
|
<code class="ruby"> end</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="95">
|
|
|
|
|
|
<code class="ruby"> end</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="96">
|
|
|
|
|
|
<code class="ruby"></code>
|
|
</li>
|
|
|
|
<li class="covered" data-hits="1" data-linenumber="97">
|
|
<span class="hits">1</span>
|
|
|
|
<code class="ruby"> get "/:job_id/annotations" do</code>
|
|
</li>
|
|
|
|
<li class="missed" data-hits="0" data-linenumber="98">
|
|
|
|
|
|
<code class="ruby"> respond_with service(:find_annotations, params)</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="99">
|
|
|
|
|
|
<code class="ruby"> end</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="100">
|
|
|
|
|
|
<code class="ruby"></code>
|
|
</li>
|
|
|
|
<li class="covered" data-hits="1" data-linenumber="101">
|
|
<span class="hits">1</span>
|
|
|
|
<code class="ruby"> post "/:job_id/annotations" do</code>
|
|
</li>
|
|
|
|
<li class="missed" data-hits="0" data-linenumber="102">
|
|
|
|
|
|
<code class="ruby"> if params[:status] && params[:description]</code>
|
|
</li>
|
|
|
|
<li class="missed" data-hits="0" data-linenumber="103">
|
|
|
|
|
|
<code class="ruby"> annotation = service(:update_annotation, params).run</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="104">
|
|
|
|
|
|
<code class="ruby"></code>
|
|
</li>
|
|
|
|
<li class="missed" data-hits="0" data-linenumber="105">
|
|
|
|
|
|
<code class="ruby"> status annotation ? 204 : 401</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="106">
|
|
|
|
|
|
<code class="ruby"> else</code>
|
|
</li>
|
|
|
|
<li class="missed" data-hits="0" data-linenumber="107">
|
|
|
|
|
|
<code class="ruby"> status 422</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="108">
|
|
|
|
|
|
<code class="ruby"></code>
|
|
</li>
|
|
|
|
<li class="missed" data-hits="0" data-linenumber="109">
|
|
|
|
|
|
<code class="ruby"> { "error" => "Must include status and description" }</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="110">
|
|
|
|
|
|
<code class="ruby"> end</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="111">
|
|
|
|
|
|
<code class="ruby"> end</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="112">
|
|
|
|
|
|
<code class="ruby"></code>
|
|
</li>
|
|
|
|
<li class="covered" data-hits="1" data-linenumber="113">
|
|
<span class="hits">1</span>
|
|
|
|
<code class="ruby"> def archive_url(path)</code>
|
|
</li>
|
|
|
|
<li class="missed" data-hits="0" data-linenumber="114">
|
|
|
|
|
|
<code class="ruby"> "https://s3.amazonaws.com/#{hostname('archive')}#{path}"</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="115">
|
|
|
|
|
|
<code class="ruby"> end</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="116">
|
|
|
|
|
|
<code class="ruby"></code>
|
|
</li>
|
|
|
|
<li class="covered" data-hits="1" data-linenumber="117">
|
|
<span class="hits">1</span>
|
|
|
|
<code class="ruby"> def hostname(name)</code>
|
|
</li>
|
|
|
|
<li class="missed" data-hits="0" data-linenumber="118">
|
|
|
|
|
|
<code class="ruby"> "#{name}#{'-staging' if Travis.env == 'staging'}.#{Travis.config.host.split('.')[-2, 2].join('.')}"</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="119">
|
|
|
|
|
|
<code class="ruby"> end</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="120">
|
|
|
|
|
|
<code class="ruby"> end</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="121">
|
|
|
|
|
|
<code class="ruby"> end</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="122">
|
|
|
|
|
|
<code class="ruby">end</code>
|
|
</li>
|
|
|
|
</ol>
|
|
</pre>
|
|
</div>
|
|
|
|
<div class="source_table" id="1d8c0ceda3860fb26fc34a1a770660c35db5b435">
|
|
<div class="header">
|
|
<h3>lib/travis/api/app/endpoint/lint.rb</h3>
|
|
<h4><span class="red">61.54 %</span> covered</h4>
|
|
<div>
|
|
<b>13</b> relevant lines.
|
|
<span class="green"><b>8</b> lines covered</span> and
|
|
<span class="red"><b>5</b> lines missed.</span>
|
|
</div>
|
|
</div>
|
|
|
|
<pre>
|
|
<ol>
|
|
|
|
<li class="covered" data-hits="1" data-linenumber="1">
|
|
<span class="hits">1</span>
|
|
|
|
<code class="ruby">require 'travis/api/app'</code>
|
|
</li>
|
|
|
|
<li class="covered" data-hits="1" data-linenumber="2">
|
|
<span class="hits">1</span>
|
|
|
|
<code class="ruby">require 'travis/yaml'</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="3">
|
|
|
|
|
|
<code class="ruby"></code>
|
|
</li>
|
|
|
|
<li class="covered" data-hits="1" data-linenumber="4">
|
|
<span class="hits">1</span>
|
|
|
|
<code class="ruby">class Travis::Api::App</code>
|
|
</li>
|
|
|
|
<li class="covered" data-hits="1" data-linenumber="5">
|
|
<span class="hits">1</span>
|
|
|
|
<code class="ruby"> class Endpoint</code>
|
|
</li>
|
|
|
|
<li class="covered" data-hits="1" data-linenumber="6">
|
|
<span class="hits">1</span>
|
|
|
|
<code class="ruby"> class Lint < Endpoint</code>
|
|
</li>
|
|
|
|
<li class="covered" data-hits="1" data-linenumber="7">
|
|
<span class="hits">1</span>
|
|
|
|
<code class="ruby"> def lint</code>
|
|
</li>
|
|
|
|
<li class="missed" data-hits="0" data-linenumber="8">
|
|
|
|
|
|
<code class="ruby"> request.body.rewind</code>
|
|
</li>
|
|
|
|
<li class="missed" data-hits="0" data-linenumber="9">
|
|
|
|
|
|
<code class="ruby"> content = params[:content] || request.body.read</code>
|
|
</li>
|
|
|
|
<li class="missed" data-hits="0" data-linenumber="10">
|
|
|
|
|
|
<code class="ruby"> parsed = Travis::Yaml.parse(content)</code>
|
|
</li>
|
|
|
|
<li class="missed" data-hits="0" data-linenumber="11">
|
|
|
|
|
|
<code class="ruby"> warnings = parsed.nested_warnings.map { |k, m| { key: k, message: m } }</code>
|
|
</li>
|
|
|
|
<li class="missed" data-hits="0" data-linenumber="12">
|
|
|
|
|
|
<code class="ruby"> { lint: { warnings: warnings } }.to_json</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="13">
|
|
|
|
|
|
<code class="ruby"> end</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="14">
|
|
|
|
|
|
<code class="ruby"></code>
|
|
</li>
|
|
|
|
<li class="covered" data-hits="1" data-linenumber="15">
|
|
<span class="hits">1</span>
|
|
|
|
<code class="ruby"> post('/', scope: :public) { lint }</code>
|
|
</li>
|
|
|
|
<li class="covered" data-hits="1" data-linenumber="16">
|
|
<span class="hits">1</span>
|
|
|
|
<code class="ruby"> put('/', scope: :public) { lint }</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="17">
|
|
|
|
|
|
<code class="ruby"> end</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="18">
|
|
|
|
|
|
<code class="ruby"> end</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="19">
|
|
|
|
|
|
<code class="ruby">end</code>
|
|
</li>
|
|
|
|
</ol>
|
|
</pre>
|
|
</div>
|
|
|
|
<div class="source_table" id="5d621a9a5eb87e9eb39a114965b4bc43594c05ee">
|
|
<div class="header">
|
|
<h3>lib/travis/api/app/endpoint/logs.rb</h3>
|
|
<h4><span class="yellow">83.33 %</span> covered</h4>
|
|
<div>
|
|
<b>6</b> relevant lines.
|
|
<span class="green"><b>5</b> lines covered</span> and
|
|
<span class="red"><b>1</b> lines missed.</span>
|
|
</div>
|
|
</div>
|
|
|
|
<pre>
|
|
<ol>
|
|
|
|
<li class="covered" data-hits="1" data-linenumber="1">
|
|
<span class="hits">1</span>
|
|
|
|
<code class="ruby">require 'travis/api/app'</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="2">
|
|
|
|
|
|
<code class="ruby"></code>
|
|
</li>
|
|
|
|
<li class="covered" data-hits="1" data-linenumber="3">
|
|
<span class="hits">1</span>
|
|
|
|
<code class="ruby">class Travis::Api::App</code>
|
|
</li>
|
|
|
|
<li class="covered" data-hits="1" data-linenumber="4">
|
|
<span class="hits">1</span>
|
|
|
|
<code class="ruby"> class Endpoint</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="5">
|
|
|
|
|
|
<code class="ruby"> # Logs are generated by builds.</code>
|
|
</li>
|
|
|
|
<li class="covered" data-hits="1" data-linenumber="6">
|
|
<span class="hits">1</span>
|
|
|
|
<code class="ruby"> class Logs < Endpoint</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="7">
|
|
|
|
|
|
<code class="ruby"> # Fetches a log by its *id*.</code>
|
|
</li>
|
|
|
|
<li class="covered" data-hits="1" data-linenumber="8">
|
|
<span class="hits">1</span>
|
|
|
|
<code class="ruby"> get '/:id' do |id|</code>
|
|
</li>
|
|
|
|
<li class="missed" data-hits="0" data-linenumber="9">
|
|
|
|
|
|
<code class="ruby"> respond_with service(:find_log, params)</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="10">
|
|
|
|
|
|
<code class="ruby"> end</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="11">
|
|
|
|
|
|
<code class="ruby"> end</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="12">
|
|
|
|
|
|
<code class="ruby"> end</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="13">
|
|
|
|
|
|
<code class="ruby">end</code>
|
|
</li>
|
|
|
|
</ol>
|
|
</pre>
|
|
</div>
|
|
|
|
<div class="source_table" id="41717bfcba400b9bc1a7add2cb84d3195cfc3565">
|
|
<div class="header">
|
|
<h3>lib/travis/api/app/endpoint/repos.rb</h3>
|
|
<h4><span class="red">39.71 %</span> covered</h4>
|
|
<div>
|
|
<b>68</b> relevant lines.
|
|
<span class="green"><b>27</b> lines covered</span> and
|
|
<span class="red"><b>41</b> lines missed.</span>
|
|
</div>
|
|
</div>
|
|
|
|
<pre>
|
|
<ol>
|
|
|
|
<li class="covered" data-hits="1" data-linenumber="1">
|
|
<span class="hits">1</span>
|
|
|
|
<code class="ruby">require 'travis/api/app'</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="2">
|
|
|
|
|
|
<code class="ruby"></code>
|
|
</li>
|
|
|
|
<li class="covered" data-hits="1" data-linenumber="3">
|
|
<span class="hits">1</span>
|
|
|
|
<code class="ruby">class Travis::Api::App</code>
|
|
</li>
|
|
|
|
<li class="covered" data-hits="1" data-linenumber="4">
|
|
<span class="hits">1</span>
|
|
|
|
<code class="ruby"> class Endpoint</code>
|
|
</li>
|
|
|
|
<li class="covered" data-hits="1" data-linenumber="5">
|
|
<span class="hits">1</span>
|
|
|
|
<code class="ruby"> class Repos < Endpoint</code>
|
|
</li>
|
|
|
|
<li class="covered" data-hits="1" data-linenumber="6">
|
|
<span class="hits">1</span>
|
|
|
|
<code class="ruby"> set :pattern, capture: { id: /\d+/ }</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="7">
|
|
|
|
|
|
<code class="ruby"></code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="8">
|
|
|
|
|
|
<code class="ruby"> # Endpoint for getting all repositories.</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="9">
|
|
|
|
|
|
<code class="ruby"> #</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="10">
|
|
|
|
|
|
<code class="ruby"> # You can filter the repositories by adding parameters to the request. For example, you can get all repositories</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="11">
|
|
|
|
|
|
<code class="ruby"> # owned by johndoe by adding `owner_name=johndoe`, or all repositories that johndoe has access to by adding</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="12">
|
|
|
|
|
|
<code class="ruby"> # `member=johndoe`. The parameter names correspond to the keys of the response hash.</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="13">
|
|
|
|
|
|
<code class="ruby"> #</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="14">
|
|
|
|
|
|
<code class="ruby"> # ### Response</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="15">
|
|
|
|
|
|
<code class="ruby"> #</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="16">
|
|
|
|
|
|
<code class="ruby"> # json(:repositories)</code>
|
|
</li>
|
|
|
|
<li class="covered" data-hits="1" data-linenumber="17">
|
|
<span class="hits">1</span>
|
|
|
|
<code class="ruby"> get '/' do</code>
|
|
</li>
|
|
|
|
<li class="missed" data-hits="0" data-linenumber="18">
|
|
|
|
|
|
<code class="ruby"> prefer_follower do</code>
|
|
</li>
|
|
|
|
<li class="missed" data-hits="0" data-linenumber="19">
|
|
|
|
|
|
<code class="ruby"> respond_with service(:find_repos, params)</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="20">
|
|
|
|
|
|
<code class="ruby"> end</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="21">
|
|
|
|
|
|
<code class="ruby"> end</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="22">
|
|
|
|
|
|
<code class="ruby"></code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="23">
|
|
|
|
|
|
<code class="ruby"> # Gets the repository with the given id.</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="24">
|
|
|
|
|
|
<code class="ruby"> #</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="25">
|
|
|
|
|
|
<code class="ruby"> # ### Response</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="26">
|
|
|
|
|
|
<code class="ruby"> #</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="27">
|
|
|
|
|
|
<code class="ruby"> # json(:repository)</code>
|
|
</li>
|
|
|
|
<li class="covered" data-hits="1" data-linenumber="28">
|
|
<span class="hits">1</span>
|
|
|
|
<code class="ruby"> get '/:id' do</code>
|
|
</li>
|
|
|
|
<li class="missed" data-hits="0" data-linenumber="29">
|
|
|
|
|
|
<code class="ruby"> prefer_follower do</code>
|
|
</li>
|
|
|
|
<li class="missed" data-hits="0" data-linenumber="30">
|
|
|
|
|
|
<code class="ruby"> respond_with service(:find_repo, params)</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="31">
|
|
|
|
|
|
<code class="ruby"> end</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="32">
|
|
|
|
|
|
<code class="ruby"> end</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="33">
|
|
|
|
|
|
<code class="ruby"></code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="34">
|
|
|
|
|
|
<code class="ruby"> # Retrieves repositories for a given owner.</code>
|
|
</li>
|
|
|
|
<li class="covered" data-hits="1" data-linenumber="35">
|
|
<span class="hits">1</span>
|
|
|
|
<code class="ruby"> get '/:owner_name' do</code>
|
|
</li>
|
|
|
|
<li class="missed" data-hits="0" data-linenumber="36">
|
|
|
|
|
|
<code class="ruby"> prefer_follower do</code>
|
|
</li>
|
|
|
|
<li class="missed" data-hits="0" data-linenumber="37">
|
|
|
|
|
|
<code class="ruby"> respond_with service(:find_repos, params)</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="38">
|
|
|
|
|
|
<code class="ruby"> end</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="39">
|
|
|
|
|
|
<code class="ruby"> end</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="40">
|
|
|
|
|
|
<code class="ruby"></code>
|
|
</li>
|
|
|
|
<li class="covered" data-hits="1" data-linenumber="41">
|
|
<span class="hits">1</span>
|
|
|
|
<code class="ruby"> get '/:id/cc' do</code>
|
|
</li>
|
|
|
|
<li class="missed" data-hits="0" data-linenumber="42">
|
|
|
|
|
|
<code class="ruby"> respond_with service(:find_repo, params.merge(schema: 'cc'))</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="43">
|
|
|
|
|
|
<code class="ruby"> end</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="44">
|
|
|
|
|
|
<code class="ruby"></code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="45">
|
|
|
|
|
|
<code class="ruby"> # Get settings for a given repository</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="46">
|
|
|
|
|
|
<code class="ruby"> #</code>
|
|
</li>
|
|
|
|
<li class="covered" data-hits="1" data-linenumber="47">
|
|
<span class="hits">1</span>
|
|
|
|
<code class="ruby"> get '/:id/settings', scope: :private do</code>
|
|
</li>
|
|
|
|
<li class="missed" data-hits="0" data-linenumber="48">
|
|
|
|
|
|
<code class="ruby"> settings = service(:find_repo_settings, params).run</code>
|
|
</li>
|
|
|
|
<li class="missed" data-hits="0" data-linenumber="49">
|
|
|
|
|
|
<code class="ruby"> if settings</code>
|
|
</li>
|
|
|
|
<li class="missed" data-hits="0" data-linenumber="50">
|
|
|
|
|
|
<code class="ruby"> respond_with({ settings: settings.simple_attributes }, version: :v2)</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="51">
|
|
|
|
|
|
<code class="ruby"> else</code>
|
|
</li>
|
|
|
|
<li class="missed" data-hits="0" data-linenumber="52">
|
|
|
|
|
|
<code class="ruby"> status 404</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="53">
|
|
|
|
|
|
<code class="ruby"> end</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="54">
|
|
|
|
|
|
<code class="ruby"> end</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="55">
|
|
|
|
|
|
<code class="ruby"></code>
|
|
</li>
|
|
|
|
<li class="covered" data-hits="1" data-linenumber="56">
|
|
<span class="hits">1</span>
|
|
|
|
<code class="ruby"> patch '/:id/settings', scope: :private do</code>
|
|
</li>
|
|
|
|
<li class="missed" data-hits="0" data-linenumber="57">
|
|
|
|
|
|
<code class="ruby"> payload = JSON.parse request.body.read</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="58">
|
|
|
|
|
|
<code class="ruby"></code>
|
|
</li>
|
|
|
|
<li class="missed" data-hits="0" data-linenumber="59">
|
|
|
|
|
|
<code class="ruby"> if payload['settings'].blank? || !payload['settings'].is_a?(Hash)</code>
|
|
</li>
|
|
|
|
<li class="missed" data-hits="0" data-linenumber="60">
|
|
|
|
|
|
<code class="ruby"> halt 422, { "error" => "Settings must be passed with a request" }</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="61">
|
|
|
|
|
|
<code class="ruby"> end</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="62">
|
|
|
|
|
|
<code class="ruby"></code>
|
|
</li>
|
|
|
|
<li class="missed" data-hits="0" data-linenumber="63">
|
|
|
|
|
|
<code class="ruby"> settings = service(:find_repo_settings, params).run</code>
|
|
</li>
|
|
|
|
<li class="missed" data-hits="0" data-linenumber="64">
|
|
|
|
|
|
<code class="ruby"> if settings</code>
|
|
</li>
|
|
|
|
<li class="missed" data-hits="0" data-linenumber="65">
|
|
|
|
|
|
<code class="ruby"> settings.merge(payload['settings'])</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="66">
|
|
|
|
|
|
<code class="ruby"> # TODO: I would like to have better API here, but leaving this</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="67">
|
|
|
|
|
|
<code class="ruby"> # for testing to not waste too much time before I can play with it</code>
|
|
</li>
|
|
|
|
<li class="missed" data-hits="0" data-linenumber="68">
|
|
|
|
|
|
<code class="ruby"> if settings.save</code>
|
|
</li>
|
|
|
|
<li class="missed" data-hits="0" data-linenumber="69">
|
|
|
|
|
|
<code class="ruby"> respond_with({ settings: settings.simple_attributes }, version: :v2)</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="70">
|
|
|
|
|
|
<code class="ruby"> else</code>
|
|
</li>
|
|
|
|
<li class="missed" data-hits="0" data-linenumber="71">
|
|
|
|
|
|
<code class="ruby"> status 422</code>
|
|
</li>
|
|
|
|
<li class="missed" data-hits="0" data-linenumber="72">
|
|
|
|
|
|
<code class="ruby"> respond_with(settings, type: :validation_error, version: :v2)</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="73">
|
|
|
|
|
|
<code class="ruby"> end</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="74">
|
|
|
|
|
|
<code class="ruby"> else</code>
|
|
</li>
|
|
|
|
<li class="missed" data-hits="0" data-linenumber="75">
|
|
|
|
|
|
<code class="ruby"> status 404</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="76">
|
|
|
|
|
|
<code class="ruby"> end</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="77">
|
|
|
|
|
|
<code class="ruby"> end</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="78">
|
|
|
|
|
|
<code class="ruby"></code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="79">
|
|
|
|
|
|
<code class="ruby"> # Get the public key for the repository with the given id.</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="80">
|
|
|
|
|
|
<code class="ruby"> #</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="81">
|
|
|
|
|
|
<code class="ruby"> # This can be used to encrypt secure variables in the build configuration. See</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="82">
|
|
|
|
|
|
<code class="ruby"> # [the encryption keys](http://docs.travis-ci.com/user/encryption-keys/) documentation page for more</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="83">
|
|
|
|
|
|
<code class="ruby"> # information.</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="84">
|
|
|
|
|
|
<code class="ruby"> #</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="85">
|
|
|
|
|
|
<code class="ruby"> # ### Response</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="86">
|
|
|
|
|
|
<code class="ruby"> #</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="87">
|
|
|
|
|
|
<code class="ruby"> # json(:repository_key)</code>
|
|
</li>
|
|
|
|
<li class="covered" data-hits="1" data-linenumber="88">
|
|
<span class="hits">1</span>
|
|
|
|
<code class="ruby"> get '/:id/key' do</code>
|
|
</li>
|
|
|
|
<li class="missed" data-hits="0" data-linenumber="89">
|
|
|
|
|
|
<code class="ruby"> respond_with service(:find_repo_key, params), version: :v2</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="90">
|
|
|
|
|
|
<code class="ruby"> end</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="91">
|
|
|
|
|
|
<code class="ruby"></code>
|
|
</li>
|
|
|
|
<li class="covered" data-hits="1" data-linenumber="92">
|
|
<span class="hits">1</span>
|
|
|
|
<code class="ruby"> post '/:id/key' do</code>
|
|
</li>
|
|
|
|
<li class="missed" data-hits="0" data-linenumber="93">
|
|
|
|
|
|
<code class="ruby"> respond_with service(:regenerate_repo_key, params), version: :v2</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="94">
|
|
|
|
|
|
<code class="ruby"> end</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="95">
|
|
|
|
|
|
<code class="ruby"></code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="96">
|
|
|
|
|
|
<code class="ruby"> # Gets list of branches</code>
|
|
</li>
|
|
|
|
<li class="covered" data-hits="1" data-linenumber="97">
|
|
<span class="hits">1</span>
|
|
|
|
<code class="ruby"> get '/:repository_id/branches' do</code>
|
|
</li>
|
|
|
|
<li class="missed" data-hits="0" data-linenumber="98">
|
|
|
|
|
|
<code class="ruby"> respond_with service(:find_branches, params), type: :branches, version: :v2</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="99">
|
|
|
|
|
|
<code class="ruby"> end</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="100">
|
|
|
|
|
|
<code class="ruby"></code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="101">
|
|
|
|
|
|
<code class="ruby"> # Gets lastest build on a branch branches</code>
|
|
</li>
|
|
|
|
<li class="covered" data-hits="1" data-linenumber="102">
|
|
<span class="hits">1</span>
|
|
|
|
<code class="ruby"> get '/:repository_id/branches/:branch' do</code>
|
|
</li>
|
|
|
|
<li class="missed" data-hits="0" data-linenumber="103">
|
|
|
|
|
|
<code class="ruby"> respond_with service(:find_branch, params), type: :branch, version: :v2</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="104">
|
|
|
|
|
|
<code class="ruby"> end</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="105">
|
|
|
|
|
|
<code class="ruby"></code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="106">
|
|
|
|
|
|
<code class="ruby"> # List caches for a given repo. Can be filtered with `branch` and `match` query parameter.</code>
|
|
</li>
|
|
|
|
<li class="covered" data-hits="1" data-linenumber="107">
|
|
<span class="hits">1</span>
|
|
|
|
<code class="ruby"> get '/:repository_id/caches', scope: :private do</code>
|
|
</li>
|
|
|
|
<li class="missed" data-hits="0" data-linenumber="108">
|
|
|
|
|
|
<code class="ruby"> respond_with service(:find_caches, params), type: :caches, version: :v2</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="109">
|
|
|
|
|
|
<code class="ruby"> end</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="110">
|
|
|
|
|
|
<code class="ruby"></code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="111">
|
|
|
|
|
|
<code class="ruby"> # Delete caches for a given repo. Can be filtered with `branch` and `match` query parameter.</code>
|
|
</li>
|
|
|
|
<li class="covered" data-hits="1" data-linenumber="112">
|
|
<span class="hits">1</span>
|
|
|
|
<code class="ruby"> delete '/:repository_id/caches', scope: :private do</code>
|
|
</li>
|
|
|
|
<li class="missed" data-hits="0" data-linenumber="113">
|
|
|
|
|
|
<code class="ruby"> respond_with service(:delete_caches, params), type: :caches, version: :v2</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="114">
|
|
|
|
|
|
<code class="ruby"> end</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="115">
|
|
|
|
|
|
<code class="ruby"></code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="116">
|
|
|
|
|
|
<code class="ruby"> # Gets the repository with the given name.</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="117">
|
|
|
|
|
|
<code class="ruby"> #</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="118">
|
|
|
|
|
|
<code class="ruby"> # ### Response</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="119">
|
|
|
|
|
|
<code class="ruby"> #</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="120">
|
|
|
|
|
|
<code class="ruby"> # json(:repository)</code>
|
|
</li>
|
|
|
|
<li class="covered" data-hits="1" data-linenumber="121">
|
|
<span class="hits">1</span>
|
|
|
|
<code class="ruby"> get '/:owner_name/:name' do</code>
|
|
</li>
|
|
|
|
<li class="missed" data-hits="0" data-linenumber="122">
|
|
|
|
|
|
<code class="ruby"> prefer_follower do</code>
|
|
</li>
|
|
|
|
<li class="missed" data-hits="0" data-linenumber="123">
|
|
|
|
|
|
<code class="ruby"> respond_with service(:find_repo, params)</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="124">
|
|
|
|
|
|
<code class="ruby"> end</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="125">
|
|
|
|
|
|
<code class="ruby"> end</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="126">
|
|
|
|
|
|
<code class="ruby"></code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="127">
|
|
|
|
|
|
<code class="ruby"> # Gets the builds for the repository with the given name.</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="128">
|
|
|
|
|
|
<code class="ruby"> #</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="129">
|
|
|
|
|
|
<code class="ruby"> # ### Response</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="130">
|
|
|
|
|
|
<code class="ruby"> #</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="131">
|
|
|
|
|
|
<code class="ruby"> # json(:builds)</code>
|
|
</li>
|
|
|
|
<li class="covered" data-hits="1" data-linenumber="132">
|
|
<span class="hits">1</span>
|
|
|
|
<code class="ruby"> get '/:owner_name/:name/builds' do</code>
|
|
</li>
|
|
|
|
<li class="missed" data-hits="0" data-linenumber="133">
|
|
|
|
|
|
<code class="ruby"> name = params[:branches] ? :find_branches : :find_builds</code>
|
|
</li>
|
|
|
|
<li class="missed" data-hits="0" data-linenumber="134">
|
|
|
|
|
|
<code class="ruby"> params['ids'] = params['ids'].split(',') if params['ids'].respond_to?(:split)</code>
|
|
</li>
|
|
|
|
<li class="missed" data-hits="0" data-linenumber="135">
|
|
|
|
|
|
<code class="ruby"> respond_with service(:find_builds, params)</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="136">
|
|
|
|
|
|
<code class="ruby"> end</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="137">
|
|
|
|
|
|
<code class="ruby"></code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="138">
|
|
|
|
|
|
<code class="ruby"> # Get a build with the given id in the repository with the given name.</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="139">
|
|
|
|
|
|
<code class="ruby"> #</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="140">
|
|
|
|
|
|
<code class="ruby"> # ### Response</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="141">
|
|
|
|
|
|
<code class="ruby"> #</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="142">
|
|
|
|
|
|
<code class="ruby"> # json(:build)</code>
|
|
</li>
|
|
|
|
<li class="covered" data-hits="1" data-linenumber="143">
|
|
<span class="hits">1</span>
|
|
|
|
<code class="ruby"> get '/:owner_name/:name/builds/:id' do</code>
|
|
</li>
|
|
|
|
<li class="missed" data-hits="0" data-linenumber="144">
|
|
|
|
|
|
<code class="ruby"> respond_with service(:find_build, params)</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="145">
|
|
|
|
|
|
<code class="ruby"> end</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="146">
|
|
|
|
|
|
<code class="ruby"></code>
|
|
</li>
|
|
|
|
<li class="covered" data-hits="1" data-linenumber="147">
|
|
<span class="hits">1</span>
|
|
|
|
<code class="ruby"> get '/:owner_name/:name/cc' do</code>
|
|
</li>
|
|
|
|
<li class="missed" data-hits="0" data-linenumber="148">
|
|
|
|
|
|
<code class="ruby"> respond_with service(:find_repo, params.merge(schema: 'cc'))</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="149">
|
|
|
|
|
|
<code class="ruby"> end</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="150">
|
|
|
|
|
|
<code class="ruby"></code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="151">
|
|
|
|
|
|
<code class="ruby"> # Get the public key for a given repository.</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="152">
|
|
|
|
|
|
<code class="ruby"> #</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="153">
|
|
|
|
|
|
<code class="ruby"> # This can be used to encrypt secure variables in the build configuration. See</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="154">
|
|
|
|
|
|
<code class="ruby"> # [the encryption keys](http://docs.travis-ci.com/user/encryption-keys/) documentation page for more</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="155">
|
|
|
|
|
|
<code class="ruby"> # information.</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="156">
|
|
|
|
|
|
<code class="ruby"> #</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="157">
|
|
|
|
|
|
<code class="ruby"> # ### Response</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="158">
|
|
|
|
|
|
<code class="ruby"> #</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="159">
|
|
|
|
|
|
<code class="ruby"> # json(:repository_key)</code>
|
|
</li>
|
|
|
|
<li class="covered" data-hits="1" data-linenumber="160">
|
|
<span class="hits">1</span>
|
|
|
|
<code class="ruby"> get '/:owner_name/:name/key' do</code>
|
|
</li>
|
|
|
|
<li class="missed" data-hits="0" data-linenumber="161">
|
|
|
|
|
|
<code class="ruby"> respond_with service(:find_repo_key, params), version: :v2</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="162">
|
|
|
|
|
|
<code class="ruby"> end</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="163">
|
|
|
|
|
|
<code class="ruby"></code>
|
|
</li>
|
|
|
|
<li class="covered" data-hits="1" data-linenumber="164">
|
|
<span class="hits">1</span>
|
|
|
|
<code class="ruby"> post '/:owner_name/:name/key' do</code>
|
|
</li>
|
|
|
|
<li class="missed" data-hits="0" data-linenumber="165">
|
|
|
|
|
|
<code class="ruby"> respond_with service(:regenerate_repo_key, params), version: :v2</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="166">
|
|
|
|
|
|
<code class="ruby"> end</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="167">
|
|
|
|
|
|
<code class="ruby"></code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="168">
|
|
|
|
|
|
<code class="ruby"> # Gets list of branches</code>
|
|
</li>
|
|
|
|
<li class="covered" data-hits="1" data-linenumber="169">
|
|
<span class="hits">1</span>
|
|
|
|
<code class="ruby"> get '/:owner_name/:name/branches' do</code>
|
|
</li>
|
|
|
|
<li class="missed" data-hits="0" data-linenumber="170">
|
|
|
|
|
|
<code class="ruby"> respond_with service(:find_branches, params), type: :branches, version: :v2</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="171">
|
|
|
|
|
|
<code class="ruby"> end</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="172">
|
|
|
|
|
|
<code class="ruby"></code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="173">
|
|
|
|
|
|
<code class="ruby"> # Gets lastest build on a branch branches</code>
|
|
</li>
|
|
|
|
<li class="covered" data-hits="1" data-linenumber="174">
|
|
<span class="hits">1</span>
|
|
|
|
<code class="ruby"> get '/:owner_name/:name/branches/:branch' do</code>
|
|
</li>
|
|
|
|
<li class="missed" data-hits="0" data-linenumber="175">
|
|
|
|
|
|
<code class="ruby"> respond_with service(:find_branch, params), type: :branch, version: :v2</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="176">
|
|
|
|
|
|
<code class="ruby"> end</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="177">
|
|
|
|
|
|
<code class="ruby"></code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="178">
|
|
|
|
|
|
<code class="ruby"> # List caches for a given repo. Can be filtered with `branch` and `match` query parameter.</code>
|
|
</li>
|
|
|
|
<li class="covered" data-hits="1" data-linenumber="179">
|
|
<span class="hits">1</span>
|
|
|
|
<code class="ruby"> get '/:owner_name/:name/caches', scope: :private do</code>
|
|
</li>
|
|
|
|
<li class="missed" data-hits="0" data-linenumber="180">
|
|
|
|
|
|
<code class="ruby"> respond_with service(:find_caches, params), type: :caches, version: :v2</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="181">
|
|
|
|
|
|
<code class="ruby"> end</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="182">
|
|
|
|
|
|
<code class="ruby"></code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="183">
|
|
|
|
|
|
<code class="ruby"> # Delete caches for a given repo. Can be filtered with `branch` and `match` query parameter.</code>
|
|
</li>
|
|
|
|
<li class="covered" data-hits="1" data-linenumber="184">
|
|
<span class="hits">1</span>
|
|
|
|
<code class="ruby"> delete '/:owner_name/:name/caches', scope: :private do</code>
|
|
</li>
|
|
|
|
<li class="missed" data-hits="0" data-linenumber="185">
|
|
|
|
|
|
<code class="ruby"> respond_with service(:delete_caches, params), type: :caches, version: :v2</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="186">
|
|
|
|
|
|
<code class="ruby"> end</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="187">
|
|
|
|
|
|
<code class="ruby"> end</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="188">
|
|
|
|
|
|
<code class="ruby"> end</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="189">
|
|
|
|
|
|
<code class="ruby">end</code>
|
|
</li>
|
|
|
|
</ol>
|
|
</pre>
|
|
</div>
|
|
|
|
<div class="source_table" id="3542f33a7b8a282ed0436611428aa30ad3f980a1">
|
|
<div class="header">
|
|
<h3>lib/travis/api/app/endpoint/requests.rb</h3>
|
|
<h4><span class="red">47.06 %</span> covered</h4>
|
|
<div>
|
|
<b>17</b> relevant lines.
|
|
<span class="green"><b>8</b> lines covered</span> and
|
|
<span class="red"><b>9</b> lines missed.</span>
|
|
</div>
|
|
</div>
|
|
|
|
<pre>
|
|
<ol>
|
|
|
|
<li class="covered" data-hits="1" data-linenumber="1">
|
|
<span class="hits">1</span>
|
|
|
|
<code class="ruby">require 'travis/api/app'</code>
|
|
</li>
|
|
|
|
<li class="covered" data-hits="1" data-linenumber="2">
|
|
<span class="hits">1</span>
|
|
|
|
<code class="ruby">require 'travis/api/app/services/schedule_request'</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="3">
|
|
|
|
|
|
<code class="ruby"></code>
|
|
</li>
|
|
|
|
<li class="covered" data-hits="1" data-linenumber="4">
|
|
<span class="hits">1</span>
|
|
|
|
<code class="ruby">class Travis::Api::App</code>
|
|
</li>
|
|
|
|
<li class="covered" data-hits="1" data-linenumber="5">
|
|
<span class="hits">1</span>
|
|
|
|
<code class="ruby"> class Endpoint</code>
|
|
</li>
|
|
|
|
<li class="covered" data-hits="1" data-linenumber="6">
|
|
<span class="hits">1</span>
|
|
|
|
<code class="ruby"> class Requests < Endpoint</code>
|
|
</li>
|
|
|
|
<li class="covered" data-hits="1" data-linenumber="7">
|
|
<span class="hits">1</span>
|
|
|
|
<code class="ruby"> post '/', scope: :private do</code>
|
|
</li>
|
|
|
|
<li class="missed" data-hits="0" data-linenumber="8">
|
|
|
|
|
|
<code class="ruby"> if params[:request] && params[:request][:repository]</code>
|
|
</li>
|
|
|
|
<li class="missed" data-hits="0" data-linenumber="9">
|
|
|
|
|
|
<code class="ruby"> respond_with service(:schedule_request, params[:request])</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="10">
|
|
|
|
|
|
<code class="ruby"> else</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="11">
|
|
|
|
|
|
<code class="ruby"> # DEPRECATED: this will be removed by 1st of December</code>
|
|
</li>
|
|
|
|
<li class="missed" data-hits="0" data-linenumber="12">
|
|
|
|
|
|
<code class="ruby"> Metriks.meter("api.request.restart").mark</code>
|
|
</li>
|
|
|
|
<li class="missed" data-hits="0" data-linenumber="13">
|
|
|
|
|
|
<code class="ruby"> respond_with service(:reset_model, params)</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="14">
|
|
|
|
|
|
<code class="ruby"> end</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="15">
|
|
|
|
|
|
<code class="ruby"> end</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="16">
|
|
|
|
|
|
<code class="ruby"></code>
|
|
</li>
|
|
|
|
<li class="covered" data-hits="1" data-linenumber="17">
|
|
<span class="hits">1</span>
|
|
|
|
<code class="ruby"> get '/' do</code>
|
|
</li>
|
|
|
|
<li class="missed" data-hits="0" data-linenumber="18">
|
|
|
|
|
|
<code class="ruby"> begin</code>
|
|
</li>
|
|
|
|
<li class="missed" data-hits="0" data-linenumber="19">
|
|
|
|
|
|
<code class="ruby"> respond_with(service(:find_requests, params).run)</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="20">
|
|
|
|
|
|
<code class="ruby"> rescue Travis::RepositoryNotFoundError => e</code>
|
|
</li>
|
|
|
|
<li class="missed" data-hits="0" data-linenumber="21">
|
|
|
|
|
|
<code class="ruby"> status 404</code>
|
|
</li>
|
|
|
|
<li class="missed" data-hits="0" data-linenumber="22">
|
|
|
|
|
|
<code class="ruby"> { "error" => "Repository could not be found" }</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="23">
|
|
|
|
|
|
<code class="ruby"> end</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="24">
|
|
|
|
|
|
<code class="ruby"> end</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="25">
|
|
|
|
|
|
<code class="ruby"></code>
|
|
</li>
|
|
|
|
<li class="covered" data-hits="1" data-linenumber="26">
|
|
<span class="hits">1</span>
|
|
|
|
<code class="ruby"> get '/:id' do</code>
|
|
</li>
|
|
|
|
<li class="missed" data-hits="0" data-linenumber="27">
|
|
|
|
|
|
<code class="ruby"> respond_with service(:find_request, params)</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="28">
|
|
|
|
|
|
<code class="ruby"> end</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="29">
|
|
|
|
|
|
<code class="ruby"> end</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="30">
|
|
|
|
|
|
<code class="ruby"> end</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="31">
|
|
|
|
|
|
<code class="ruby">end</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="32">
|
|
|
|
|
|
<code class="ruby"></code>
|
|
</li>
|
|
|
|
</ol>
|
|
</pre>
|
|
</div>
|
|
|
|
<div class="source_table" id="b615d4751e9fd711ed50e22c4b49c7c51f964d93">
|
|
<div class="header">
|
|
<h3>lib/travis/api/app/endpoint/setting_endpoint.rb</h3>
|
|
<h4><span class="red">52.73 %</span> covered</h4>
|
|
<div>
|
|
<b>55</b> relevant lines.
|
|
<span class="green"><b>29</b> lines covered</span> and
|
|
<span class="red"><b>26</b> lines missed.</span>
|
|
</div>
|
|
</div>
|
|
|
|
<pre>
|
|
<ol>
|
|
|
|
<li class="covered" data-hits="1" data-linenumber="1">
|
|
<span class="hits">1</span>
|
|
|
|
<code class="ruby">require 'travis/api/app'</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="2">
|
|
|
|
|
|
<code class="ruby"></code>
|
|
</li>
|
|
|
|
<li class="covered" data-hits="1" data-linenumber="3">
|
|
<span class="hits">1</span>
|
|
|
|
<code class="ruby">class Travis::Api::App</code>
|
|
</li>
|
|
|
|
<li class="covered" data-hits="1" data-linenumber="4">
|
|
<span class="hits">1</span>
|
|
|
|
<code class="ruby"> class SettingsEndpoint < Endpoint</code>
|
|
</li>
|
|
|
|
<li class="covered" data-hits="66" data-linenumber="5">
|
|
<span class="hits">66</span>
|
|
|
|
<code class="ruby"> set(:prefix) { "/settings/" << name[/[^:]+$/].underscore }</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="6">
|
|
|
|
|
|
<code class="ruby"></code>
|
|
</li>
|
|
|
|
<li class="covered" data-hits="1" data-linenumber="7">
|
|
<span class="hits">1</span>
|
|
|
|
<code class="ruby"> class << self</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="8">
|
|
|
|
|
|
<code class="ruby"> # This method checks if class based on a given name exists or creates</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="9">
|
|
|
|
|
|
<code class="ruby"> # a new SettingsEndpoint subclass, which will be then used as an endpoint</code>
|
|
</li>
|
|
|
|
<li class="covered" data-hits="1" data-linenumber="10">
|
|
<span class="hits">1</span>
|
|
|
|
<code class="ruby"> def subclass(name)</code>
|
|
</li>
|
|
|
|
<li class="covered" data-hits="54" data-linenumber="11">
|
|
<span class="hits">54</span>
|
|
|
|
<code class="ruby"> class_name = name.to_s.camelize</code>
|
|
</li>
|
|
|
|
<li class="covered" data-hits="54" data-linenumber="12">
|
|
<span class="hits">54</span>
|
|
|
|
<code class="ruby"> if Travis::Api::App::Endpoint.const_defined?(class_name)</code>
|
|
</li>
|
|
|
|
<li class="covered" data-hits="53" data-linenumber="13">
|
|
<span class="hits">53</span>
|
|
|
|
<code class="ruby"> Travis::Api::App::Endpoint.const_get(class_name)</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="14">
|
|
|
|
|
|
<code class="ruby"> else</code>
|
|
</li>
|
|
|
|
<li class="covered" data-hits="1" data-linenumber="15">
|
|
<span class="hits">1</span>
|
|
|
|
<code class="ruby"> klass = create_settings_class(name)</code>
|
|
</li>
|
|
|
|
<li class="covered" data-hits="1" data-linenumber="16">
|
|
<span class="hits">1</span>
|
|
|
|
<code class="ruby"> Travis::Api::App::Endpoint.const_set(class_name, klass)</code>
|
|
</li>
|
|
|
|
<li class="covered" data-hits="1" data-linenumber="17">
|
|
<span class="hits">1</span>
|
|
|
|
<code class="ruby"> klass</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="18">
|
|
|
|
|
|
<code class="ruby"> end</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="19">
|
|
|
|
|
|
<code class="ruby"> end</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="20">
|
|
|
|
|
|
<code class="ruby"></code>
|
|
</li>
|
|
|
|
<li class="covered" data-hits="1" data-linenumber="21">
|
|
<span class="hits">1</span>
|
|
|
|
<code class="ruby"> def create_settings_class(name)</code>
|
|
</li>
|
|
|
|
<li class="missed" data-hits="0" data-linenumber="22">
|
|
|
|
|
|
<code class="ruby"> klass = Class.new(self) do</code>
|
|
</li>
|
|
|
|
<li class="missed" data-hits="0" data-linenumber="23">
|
|
|
|
|
|
<code class="ruby"> define_method(:name) { name }</code>
|
|
</li>
|
|
|
|
<li class="missed" data-hits="0" data-linenumber="24">
|
|
|
|
|
|
<code class="ruby"> define_routes!</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="25">
|
|
|
|
|
|
<code class="ruby"> end</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="26">
|
|
|
|
|
|
<code class="ruby"> end</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="27">
|
|
|
|
|
|
<code class="ruby"></code>
|
|
</li>
|
|
|
|
<li class="covered" data-hits="1" data-linenumber="28">
|
|
<span class="hits">1</span>
|
|
|
|
<code class="ruby"> def define_routes!</code>
|
|
</li>
|
|
|
|
<li class="covered" data-hits="1" data-linenumber="29">
|
|
<span class="hits">1</span>
|
|
|
|
<code class="ruby"> get("/", scope: :private) do index end</code>
|
|
</li>
|
|
|
|
<li class="covered" data-hits="1" data-linenumber="30">
|
|
<span class="hits">1</span>
|
|
|
|
<code class="ruby"> get("/:id", scope: :private) do show end</code>
|
|
</li>
|
|
|
|
<li class="covered" data-hits="1" data-linenumber="31">
|
|
<span class="hits">1</span>
|
|
|
|
<code class="ruby"> post("/", scope: :private) do create end</code>
|
|
</li>
|
|
|
|
<li class="covered" data-hits="1" data-linenumber="32">
|
|
<span class="hits">1</span>
|
|
|
|
<code class="ruby"> patch("/:id", scope: :private) do update end</code>
|
|
</li>
|
|
|
|
<li class="covered" data-hits="1" data-linenumber="33">
|
|
<span class="hits">1</span>
|
|
|
|
<code class="ruby"> delete("/:id", scope: :private) do destroy end</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="34">
|
|
|
|
|
|
<code class="ruby"> end</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="35">
|
|
|
|
|
|
<code class="ruby"> end</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="36">
|
|
|
|
|
|
<code class="ruby"></code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="37">
|
|
|
|
|
|
<code class="ruby"> # Rails style methods for easy overriding</code>
|
|
</li>
|
|
|
|
<li class="covered" data-hits="1" data-linenumber="38">
|
|
<span class="hits">1</span>
|
|
|
|
<code class="ruby"> def index</code>
|
|
</li>
|
|
|
|
<li class="missed" data-hits="0" data-linenumber="39">
|
|
|
|
|
|
<code class="ruby"> respond_with(collection, type: name, version: :v2)</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="40">
|
|
|
|
|
|
<code class="ruby"> end</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="41">
|
|
|
|
|
|
<code class="ruby"></code>
|
|
</li>
|
|
|
|
<li class="covered" data-hits="1" data-linenumber="42">
|
|
<span class="hits">1</span>
|
|
|
|
<code class="ruby"> def show</code>
|
|
</li>
|
|
|
|
<li class="missed" data-hits="0" data-linenumber="43">
|
|
|
|
|
|
<code class="ruby"> respond_with(record, type: singular_name, version: :v2)</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="44">
|
|
|
|
|
|
<code class="ruby"> end</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="45">
|
|
|
|
|
|
<code class="ruby"></code>
|
|
</li>
|
|
|
|
<li class="covered" data-hits="1" data-linenumber="46">
|
|
<span class="hits">1</span>
|
|
|
|
<code class="ruby"> def update</code>
|
|
</li>
|
|
|
|
<li class="missed" data-hits="0" data-linenumber="47">
|
|
|
|
|
|
<code class="ruby"> record.update(JSON.parse(request.body.read)[singular_name])</code>
|
|
</li>
|
|
|
|
<li class="missed" data-hits="0" data-linenumber="48">
|
|
|
|
|
|
<code class="ruby"> if record.valid?</code>
|
|
</li>
|
|
|
|
<li class="missed" data-hits="0" data-linenumber="49">
|
|
|
|
|
|
<code class="ruby"> repo_settings.save</code>
|
|
</li>
|
|
|
|
<li class="missed" data-hits="0" data-linenumber="50">
|
|
|
|
|
|
<code class="ruby"> respond_with(record, type: singular_name, version: :v2)</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="51">
|
|
|
|
|
|
<code class="ruby"> else</code>
|
|
</li>
|
|
|
|
<li class="missed" data-hits="0" data-linenumber="52">
|
|
|
|
|
|
<code class="ruby"> status 422</code>
|
|
</li>
|
|
|
|
<li class="missed" data-hits="0" data-linenumber="53">
|
|
|
|
|
|
<code class="ruby"> respond_with(record, type: :validation_error, version: :v2)</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="54">
|
|
|
|
|
|
<code class="ruby"> end</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="55">
|
|
|
|
|
|
<code class="ruby"> end</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="56">
|
|
|
|
|
|
<code class="ruby"></code>
|
|
</li>
|
|
|
|
<li class="covered" data-hits="1" data-linenumber="57">
|
|
<span class="hits">1</span>
|
|
|
|
<code class="ruby"> def create</code>
|
|
</li>
|
|
|
|
<li class="missed" data-hits="0" data-linenumber="58">
|
|
|
|
|
|
<code class="ruby"> record = collection.create(JSON.parse(request.body.read)[singular_name])</code>
|
|
</li>
|
|
|
|
<li class="missed" data-hits="0" data-linenumber="59">
|
|
|
|
|
|
<code class="ruby"> if record.valid?</code>
|
|
</li>
|
|
|
|
<li class="missed" data-hits="0" data-linenumber="60">
|
|
|
|
|
|
<code class="ruby"> repo_settings.save</code>
|
|
</li>
|
|
|
|
<li class="missed" data-hits="0" data-linenumber="61">
|
|
|
|
|
|
<code class="ruby"> respond_with(record, type: singular_name, version: :v2)</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="62">
|
|
|
|
|
|
<code class="ruby"> else</code>
|
|
</li>
|
|
|
|
<li class="missed" data-hits="0" data-linenumber="63">
|
|
|
|
|
|
<code class="ruby"> status 422</code>
|
|
</li>
|
|
|
|
<li class="missed" data-hits="0" data-linenumber="64">
|
|
|
|
|
|
<code class="ruby"> respond_with(record, type: :validation_error, version: :v2)</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="65">
|
|
|
|
|
|
<code class="ruby"> end</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="66">
|
|
|
|
|
|
<code class="ruby"> end</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="67">
|
|
|
|
|
|
<code class="ruby"></code>
|
|
</li>
|
|
|
|
<li class="covered" data-hits="1" data-linenumber="68">
|
|
<span class="hits">1</span>
|
|
|
|
<code class="ruby"> def destroy</code>
|
|
</li>
|
|
|
|
<li class="missed" data-hits="0" data-linenumber="69">
|
|
|
|
|
|
<code class="ruby"> record = collection.destroy(params[:id]) || record_not_found</code>
|
|
</li>
|
|
|
|
<li class="missed" data-hits="0" data-linenumber="70">
|
|
|
|
|
|
<code class="ruby"> repo_settings.save</code>
|
|
</li>
|
|
|
|
<li class="missed" data-hits="0" data-linenumber="71">
|
|
|
|
|
|
<code class="ruby"> respond_with(record, type: singular_name, version: :v2)</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="72">
|
|
|
|
|
|
<code class="ruby"> end</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="73">
|
|
|
|
|
|
<code class="ruby"></code>
|
|
</li>
|
|
|
|
<li class="covered" data-hits="1" data-linenumber="74">
|
|
<span class="hits">1</span>
|
|
|
|
<code class="ruby"> def singular_name</code>
|
|
</li>
|
|
|
|
<li class="missed" data-hits="0" data-linenumber="75">
|
|
|
|
|
|
<code class="ruby"> name.to_s.singularize</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="76">
|
|
|
|
|
|
<code class="ruby"> end</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="77">
|
|
|
|
|
|
<code class="ruby"></code>
|
|
</li>
|
|
|
|
<li class="covered" data-hits="1" data-linenumber="78">
|
|
<span class="hits">1</span>
|
|
|
|
<code class="ruby"> def collection</code>
|
|
</li>
|
|
|
|
<li class="missed" data-hits="0" data-linenumber="79">
|
|
|
|
|
|
<code class="ruby"> @collection ||= repo_settings.send(name)</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="80">
|
|
|
|
|
|
<code class="ruby"> end</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="81">
|
|
|
|
|
|
<code class="ruby"></code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="82">
|
|
|
|
|
|
<code class="ruby"> # This method can't be called "settings" because it clashes with</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="83">
|
|
|
|
|
|
<code class="ruby"> # Sinatra's method</code>
|
|
</li>
|
|
|
|
<li class="covered" data-hits="1" data-linenumber="84">
|
|
<span class="hits">1</span>
|
|
|
|
<code class="ruby"> def repo_settings</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="85">
|
|
|
|
|
|
<code class="ruby"> @settings ||= begin</code>
|
|
</li>
|
|
|
|
<li class="missed" data-hits="0" data-linenumber="86">
|
|
|
|
|
|
<code class="ruby"> service(:find_repo_settings, id: params['repository_id'].to_i).run</code>
|
|
</li>
|
|
|
|
<li class="missed" data-hits="0" data-linenumber="87">
|
|
|
|
|
|
<code class="ruby"> end || halt(404, error: "Couldn't find repository")</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="88">
|
|
|
|
|
|
<code class="ruby"> end</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="89">
|
|
|
|
|
|
<code class="ruby"></code>
|
|
</li>
|
|
|
|
<li class="covered" data-hits="1" data-linenumber="90">
|
|
<span class="hits">1</span>
|
|
|
|
<code class="ruby"> def record</code>
|
|
</li>
|
|
|
|
<li class="missed" data-hits="0" data-linenumber="91">
|
|
|
|
|
|
<code class="ruby"> collection.find(params[:id]) || record_not_found</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="92">
|
|
|
|
|
|
<code class="ruby"> end</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="93">
|
|
|
|
|
|
<code class="ruby"></code>
|
|
</li>
|
|
|
|
<li class="covered" data-hits="1" data-linenumber="94">
|
|
<span class="hits">1</span>
|
|
|
|
<code class="ruby"> def record_not_found</code>
|
|
</li>
|
|
|
|
<li class="missed" data-hits="0" data-linenumber="95">
|
|
|
|
|
|
<code class="ruby"> halt(404, { error: "Could not find a requested setting" })</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="96">
|
|
|
|
|
|
<code class="ruby"> end</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="97">
|
|
|
|
|
|
<code class="ruby"> end</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="98">
|
|
|
|
|
|
<code class="ruby">end</code>
|
|
</li>
|
|
|
|
</ol>
|
|
</pre>
|
|
</div>
|
|
|
|
<div class="source_table" id="c146923d5484592bc716b1adae4f3329fd9ebb1b">
|
|
<div class="header">
|
|
<h3>lib/travis/api/app/endpoint/singleton_settings_endpoint.rb</h3>
|
|
<h4><span class="red">57.14 %</span> covered</h4>
|
|
<div>
|
|
<b>28</b> relevant lines.
|
|
<span class="green"><b>16</b> lines covered</span> and
|
|
<span class="red"><b>12</b> lines missed.</span>
|
|
</div>
|
|
</div>
|
|
|
|
<pre>
|
|
<ol>
|
|
|
|
<li class="covered" data-hits="1" data-linenumber="1">
|
|
<span class="hits">1</span>
|
|
|
|
<code class="ruby">require 'travis/api/app'</code>
|
|
</li>
|
|
|
|
<li class="covered" data-hits="1" data-linenumber="2">
|
|
<span class="hits">1</span>
|
|
|
|
<code class="ruby">require 'travis/api/app/endpoint/setting_endpoint'</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="3">
|
|
|
|
|
|
<code class="ruby"></code>
|
|
</li>
|
|
|
|
<li class="covered" data-hits="1" data-linenumber="4">
|
|
<span class="hits">1</span>
|
|
|
|
<code class="ruby">class Travis::Api::App</code>
|
|
</li>
|
|
|
|
<li class="covered" data-hits="1" data-linenumber="5">
|
|
<span class="hits">1</span>
|
|
|
|
<code class="ruby"> class SingletonSettingsEndpoint < SettingsEndpoint</code>
|
|
</li>
|
|
|
|
<li class="covered" data-hits="1" data-linenumber="6">
|
|
<span class="hits">1</span>
|
|
|
|
<code class="ruby"> class << self</code>
|
|
</li>
|
|
|
|
<li class="covered" data-hits="1" data-linenumber="7">
|
|
<span class="hits">1</span>
|
|
|
|
<code class="ruby"> def create_settings_class(name)</code>
|
|
</li>
|
|
|
|
<li class="covered" data-hits="1" data-linenumber="8">
|
|
<span class="hits">1</span>
|
|
|
|
<code class="ruby"> klass = Class.new(self) do</code>
|
|
</li>
|
|
|
|
<li class="covered" data-hits="1" data-linenumber="9">
|
|
<span class="hits">1</span>
|
|
|
|
<code class="ruby"> define_method(:name) { name }</code>
|
|
</li>
|
|
|
|
<li class="covered" data-hits="1" data-linenumber="10">
|
|
<span class="hits">1</span>
|
|
|
|
<code class="ruby"> get("/:repository_id", scope: :private) do show end</code>
|
|
</li>
|
|
|
|
<li class="covered" data-hits="1" data-linenumber="11">
|
|
<span class="hits">1</span>
|
|
|
|
<code class="ruby"> patch("/:repository_id", scope: :private) do update end</code>
|
|
</li>
|
|
|
|
<li class="covered" data-hits="1" data-linenumber="12">
|
|
<span class="hits">1</span>
|
|
|
|
<code class="ruby"> delete("/:repository_id", scope: :private) do destroy end</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="13">
|
|
|
|
|
|
<code class="ruby"> end</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="14">
|
|
|
|
|
|
<code class="ruby"> end</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="15">
|
|
|
|
|
|
<code class="ruby"> end</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="16">
|
|
|
|
|
|
<code class="ruby"></code>
|
|
</li>
|
|
|
|
<li class="covered" data-hits="1" data-linenumber="17">
|
|
<span class="hits">1</span>
|
|
|
|
<code class="ruby"> def update</code>
|
|
</li>
|
|
|
|
<li class="missed" data-hits="0" data-linenumber="18">
|
|
|
|
|
|
<code class="ruby"> record = parent.update(name, JSON.parse(request.body.read)[singular_name])</code>
|
|
</li>
|
|
|
|
<li class="missed" data-hits="0" data-linenumber="19">
|
|
|
|
|
|
<code class="ruby"> if record.valid?</code>
|
|
</li>
|
|
|
|
<li class="missed" data-hits="0" data-linenumber="20">
|
|
|
|
|
|
<code class="ruby"> repo_settings.save</code>
|
|
</li>
|
|
|
|
<li class="missed" data-hits="0" data-linenumber="21">
|
|
|
|
|
|
<code class="ruby"> respond_with(record, type: singular_name, version: :v2)</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="22">
|
|
|
|
|
|
<code class="ruby"> else</code>
|
|
</li>
|
|
|
|
<li class="missed" data-hits="0" data-linenumber="23">
|
|
|
|
|
|
<code class="ruby"> status 422</code>
|
|
</li>
|
|
|
|
<li class="missed" data-hits="0" data-linenumber="24">
|
|
|
|
|
|
<code class="ruby"> respond_with(record, type: :validation_error, version: :v2)</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="25">
|
|
|
|
|
|
<code class="ruby"> end</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="26">
|
|
|
|
|
|
<code class="ruby"> end</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="27">
|
|
|
|
|
|
<code class="ruby"></code>
|
|
</li>
|
|
|
|
<li class="covered" data-hits="1" data-linenumber="28">
|
|
<span class="hits">1</span>
|
|
|
|
<code class="ruby"> def destroy</code>
|
|
</li>
|
|
|
|
<li class="missed" data-hits="0" data-linenumber="29">
|
|
|
|
|
|
<code class="ruby"> record = parent.delete(name)</code>
|
|
</li>
|
|
|
|
<li class="missed" data-hits="0" data-linenumber="30">
|
|
|
|
|
|
<code class="ruby"> repo_settings.save</code>
|
|
</li>
|
|
|
|
<li class="missed" data-hits="0" data-linenumber="31">
|
|
|
|
|
|
<code class="ruby"> respond_with(record, type: singular_name, version: :v2)</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="32">
|
|
|
|
|
|
<code class="ruby"> end</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="33">
|
|
|
|
|
|
<code class="ruby"></code>
|
|
</li>
|
|
|
|
<li class="covered" data-hits="1" data-linenumber="34">
|
|
<span class="hits">1</span>
|
|
|
|
<code class="ruby"> def record</code>
|
|
</li>
|
|
|
|
<li class="missed" data-hits="0" data-linenumber="35">
|
|
|
|
|
|
<code class="ruby"> parent.get(name) || record_not_found</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="36">
|
|
|
|
|
|
<code class="ruby"> end</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="37">
|
|
|
|
|
|
<code class="ruby"></code>
|
|
</li>
|
|
|
|
<li class="covered" data-hits="1" data-linenumber="38">
|
|
<span class="hits">1</span>
|
|
|
|
<code class="ruby"> def parent</code>
|
|
</li>
|
|
|
|
<li class="missed" data-hits="0" data-linenumber="39">
|
|
|
|
|
|
<code class="ruby"> repo_settings</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="40">
|
|
|
|
|
|
<code class="ruby"> end</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="41">
|
|
|
|
|
|
<code class="ruby"></code>
|
|
</li>
|
|
|
|
<li class="covered" data-hits="1" data-linenumber="42">
|
|
<span class="hits">1</span>
|
|
|
|
<code class="ruby"> def record_not_found</code>
|
|
</li>
|
|
|
|
<li class="missed" data-hits="0" data-linenumber="43">
|
|
|
|
|
|
<code class="ruby"> halt(404, { error: "Could not find a requested setting" })</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="44">
|
|
|
|
|
|
<code class="ruby"> end</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="45">
|
|
|
|
|
|
<code class="ruby"> end</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="46">
|
|
|
|
|
|
<code class="ruby">end</code>
|
|
</li>
|
|
|
|
</ol>
|
|
</pre>
|
|
</div>
|
|
|
|
<div class="source_table" id="3aa4c3de70a6e7203940667017613935754e19cd">
|
|
<div class="header">
|
|
<h3>lib/travis/api/app/endpoint/uptime.rb</h3>
|
|
<h4><span class="red">55.56 %</span> covered</h4>
|
|
<div>
|
|
<b>9</b> relevant lines.
|
|
<span class="green"><b>5</b> lines covered</span> and
|
|
<span class="red"><b>4</b> lines missed.</span>
|
|
</div>
|
|
</div>
|
|
|
|
<pre>
|
|
<ol>
|
|
|
|
<li class="covered" data-hits="1" data-linenumber="1">
|
|
<span class="hits">1</span>
|
|
|
|
<code class="ruby">require 'travis/api/app'</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="2">
|
|
|
|
|
|
<code class="ruby"></code>
|
|
</li>
|
|
|
|
<li class="covered" data-hits="1" data-linenumber="3">
|
|
<span class="hits">1</span>
|
|
|
|
<code class="ruby">class Travis::Api::App</code>
|
|
</li>
|
|
|
|
<li class="covered" data-hits="1" data-linenumber="4">
|
|
<span class="hits">1</span>
|
|
|
|
<code class="ruby"> class Endpoint</code>
|
|
</li>
|
|
|
|
<li class="covered" data-hits="1" data-linenumber="5">
|
|
<span class="hits">1</span>
|
|
|
|
<code class="ruby"> class Uptime < Endpoint</code>
|
|
</li>
|
|
|
|
<li class="covered" data-hits="1" data-linenumber="6">
|
|
<span class="hits">1</span>
|
|
|
|
<code class="ruby"> get '/' do</code>
|
|
</li>
|
|
|
|
<li class="missed" data-hits="0" data-linenumber="7">
|
|
|
|
|
|
<code class="ruby"> begin</code>
|
|
</li>
|
|
|
|
<li class="missed" data-hits="0" data-linenumber="8">
|
|
|
|
|
|
<code class="ruby"> ActiveRecord::Base.connection.execute('select 1')</code>
|
|
</li>
|
|
|
|
<li class="missed" data-hits="0" data-linenumber="9">
|
|
|
|
|
|
<code class="ruby"> [200, "OK"]</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="10">
|
|
|
|
|
|
<code class="ruby"> rescue Exception => e</code>
|
|
</li>
|
|
|
|
<li class="missed" data-hits="0" data-linenumber="11">
|
|
|
|
|
|
<code class="ruby"> return [500, "Error: #{e.message}"]</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="12">
|
|
|
|
|
|
<code class="ruby"> end</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="13">
|
|
|
|
|
|
<code class="ruby"> end</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="14">
|
|
|
|
|
|
<code class="ruby"> end</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="15">
|
|
|
|
|
|
<code class="ruby"> end</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="16">
|
|
|
|
|
|
<code class="ruby">end</code>
|
|
</li>
|
|
|
|
</ol>
|
|
</pre>
|
|
</div>
|
|
|
|
<div class="source_table" id="2aeec642e9353983d22c25e11bb6aee7a68ff327">
|
|
<div class="header">
|
|
<h3>lib/travis/api/app/endpoint/users.rb</h3>
|
|
<h4><span class="red">50.0 %</span> covered</h4>
|
|
<div>
|
|
<b>18</b> relevant lines.
|
|
<span class="green"><b>9</b> lines covered</span> and
|
|
<span class="red"><b>9</b> lines missed.</span>
|
|
</div>
|
|
</div>
|
|
|
|
<pre>
|
|
<ol>
|
|
|
|
<li class="covered" data-hits="1" data-linenumber="1">
|
|
<span class="hits">1</span>
|
|
|
|
<code class="ruby">require 'travis/api/app'</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="2">
|
|
|
|
|
|
<code class="ruby"></code>
|
|
</li>
|
|
|
|
<li class="covered" data-hits="1" data-linenumber="3">
|
|
<span class="hits">1</span>
|
|
|
|
<code class="ruby">class Travis::Api::App</code>
|
|
</li>
|
|
|
|
<li class="covered" data-hits="1" data-linenumber="4">
|
|
<span class="hits">1</span>
|
|
|
|
<code class="ruby"> class Endpoint</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="5">
|
|
|
|
|
|
<code class="ruby"> # TODO should this be /profile?</code>
|
|
</li>
|
|
|
|
<li class="covered" data-hits="1" data-linenumber="6">
|
|
<span class="hits">1</span>
|
|
|
|
<code class="ruby"> class Users < Endpoint</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="7">
|
|
|
|
|
|
<code class="ruby"> # Gives information about the currently logged in user.</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="8">
|
|
|
|
|
|
<code class="ruby"> #</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="9">
|
|
|
|
|
|
<code class="ruby"> # Example:</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="10">
|
|
|
|
|
|
<code class="ruby"> #</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="11">
|
|
|
|
|
|
<code class="ruby"> # {</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="12">
|
|
|
|
|
|
<code class="ruby"> # "user": {</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="13">
|
|
|
|
|
|
<code class="ruby"> # "name": "Sven Fuchs",</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="14">
|
|
|
|
|
|
<code class="ruby"> # "login": "svenfuchs",</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="15">
|
|
|
|
|
|
<code class="ruby"> # "email": "svenfuchs@artweb-design.de",</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="16">
|
|
|
|
|
|
<code class="ruby"> # "gravatar_id": "402602a60e500e85f2f5dc1ff3648ecb",</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="17">
|
|
|
|
|
|
<code class="ruby"> # "locale": "de",</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="18">
|
|
|
|
|
|
<code class="ruby"> # "is_syncing": false,</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="19">
|
|
|
|
|
|
<code class="ruby"> # "synced_at": "2012-08-14T22:11:21Z"</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="20">
|
|
|
|
|
|
<code class="ruby"> # }</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="21">
|
|
|
|
|
|
<code class="ruby"> # }</code>
|
|
</li>
|
|
|
|
<li class="covered" data-hits="1" data-linenumber="22">
|
|
<span class="hits">1</span>
|
|
|
|
<code class="ruby"> get '/', scope: :private do</code>
|
|
</li>
|
|
|
|
<li class="missed" data-hits="0" data-linenumber="23">
|
|
|
|
|
|
<code class="ruby"> respond_with current_user</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="24">
|
|
|
|
|
|
<code class="ruby"> end</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="25">
|
|
|
|
|
|
<code class="ruby"></code>
|
|
</li>
|
|
|
|
<li class="covered" data-hits="1" data-linenumber="26">
|
|
<span class="hits">1</span>
|
|
|
|
<code class="ruby"> get '/permissions', scope: :private do</code>
|
|
</li>
|
|
|
|
<li class="missed" data-hits="0" data-linenumber="27">
|
|
|
|
|
|
<code class="ruby"> respond_with service(:find_user_permissions), type: :permissions</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="28">
|
|
|
|
|
|
<code class="ruby"> end</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="29">
|
|
|
|
|
|
<code class="ruby"></code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="30">
|
|
|
|
|
|
<code class="ruby"> # TODO fix url/key generation in ember-data</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="31">
|
|
|
|
|
|
<code class="ruby"> # get '/accounts', scope: :private do</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="32">
|
|
|
|
|
|
<code class="ruby"> # respond_with service(:users, :find_accounts), type: :accounts</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="33">
|
|
|
|
|
|
<code class="ruby"> # end</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="34">
|
|
|
|
|
|
<code class="ruby"></code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="35">
|
|
|
|
|
|
<code class="ruby"> # TODO fix url/key generation in ember-data</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="36">
|
|
|
|
|
|
<code class="ruby"> # get '/broadcasts', scope: :private do</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="37">
|
|
|
|
|
|
<code class="ruby"> # respond_with service(:users, :find_broadcasts), type: :broadcasts</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="38">
|
|
|
|
|
|
<code class="ruby"> # end</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="39">
|
|
|
|
|
|
<code class="ruby"></code>
|
|
</li>
|
|
|
|
<li class="covered" data-hits="1" data-linenumber="40">
|
|
<span class="hits">1</span>
|
|
|
|
<code class="ruby"> get '/:id', scope: :private do</code>
|
|
</li>
|
|
|
|
<li class="missed" data-hits="0" data-linenumber="41">
|
|
|
|
|
|
<code class="ruby"> pass unless current_user.id.to_s == params[:id]</code>
|
|
</li>
|
|
|
|
<li class="missed" data-hits="0" data-linenumber="42">
|
|
|
|
|
|
<code class="ruby"> respond_with current_user</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="43">
|
|
|
|
|
|
<code class="ruby"> end</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="44">
|
|
|
|
|
|
<code class="ruby"></code>
|
|
</li>
|
|
|
|
<li class="covered" data-hits="1" data-linenumber="45">
|
|
<span class="hits">1</span>
|
|
|
|
<code class="ruby"> put '/:id?', scope: :private do</code>
|
|
</li>
|
|
|
|
<li class="missed" data-hits="0" data-linenumber="46">
|
|
|
|
|
|
<code class="ruby"> respond_with service(:update_user, params[:user])</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="47">
|
|
|
|
|
|
<code class="ruby"> end</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="48">
|
|
|
|
|
|
<code class="ruby"></code>
|
|
</li>
|
|
|
|
<li class="covered" data-hits="1" data-linenumber="49">
|
|
<span class="hits">1</span>
|
|
|
|
<code class="ruby"> post '/sync', scope: :private do</code>
|
|
</li>
|
|
|
|
<li class="missed" data-hits="0" data-linenumber="50">
|
|
|
|
|
|
<code class="ruby"> if current_user.syncing?</code>
|
|
</li>
|
|
|
|
<li class="missed" data-hits="0" data-linenumber="51">
|
|
|
|
|
|
<code class="ruby"> status 409</code>
|
|
</li>
|
|
|
|
<li class="missed" data-hits="0" data-linenumber="52">
|
|
|
|
|
|
<code class="ruby"> { 'message' => "Sync already in progress. Try again later." }</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="53">
|
|
|
|
|
|
<code class="ruby"> else</code>
|
|
</li>
|
|
|
|
<li class="missed" data-hits="0" data-linenumber="54">
|
|
|
|
|
|
<code class="ruby"> respond_with service(:sync_user)</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="55">
|
|
|
|
|
|
<code class="ruby"> end</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="56">
|
|
|
|
|
|
<code class="ruby"> end</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="57">
|
|
|
|
|
|
<code class="ruby"> end</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="58">
|
|
|
|
|
|
<code class="ruby"> end</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="59">
|
|
|
|
|
|
<code class="ruby">end</code>
|
|
</li>
|
|
|
|
</ol>
|
|
</pre>
|
|
</div>
|
|
|
|
<div class="source_table" id="98cb249669c6e20fed930c4f814f8e6266add77c">
|
|
<div class="header">
|
|
<h3>lib/travis/api/app/extensions.rb</h3>
|
|
<h4><span class="green">100.0 %</span> covered</h4>
|
|
<div>
|
|
<b>4</b> relevant lines.
|
|
<span class="green"><b>4</b> lines covered</span> and
|
|
<span class="red"><b>0</b> lines missed.</span>
|
|
</div>
|
|
</div>
|
|
|
|
<pre>
|
|
<ol>
|
|
|
|
<li class="covered" data-hits="1" data-linenumber="1">
|
|
<span class="hits">1</span>
|
|
|
|
<code class="ruby">require 'travis/api/app'</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="2">
|
|
|
|
|
|
<code class="ruby"></code>
|
|
</li>
|
|
|
|
<li class="covered" data-hits="1" data-linenumber="3">
|
|
<span class="hits">1</span>
|
|
|
|
<code class="ruby">class Travis::Api::App</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="4">
|
|
|
|
|
|
<code class="ruby"> # Namespace for Sinatra extensions.</code>
|
|
</li>
|
|
|
|
<li class="covered" data-hits="1" data-linenumber="5">
|
|
<span class="hits">1</span>
|
|
|
|
<code class="ruby"> module Extensions</code>
|
|
</li>
|
|
|
|
<li class="covered" data-hits="5" data-linenumber="6">
|
|
<span class="hits">5</span>
|
|
|
|
<code class="ruby"> Dir.glob("#{__dir__}/extensions/*.rb").each { |f| require f[%r[(?<=lib/).+(?=\.rb$)]] }</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="7">
|
|
|
|
|
|
<code class="ruby"> end</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="8">
|
|
|
|
|
|
<code class="ruby">end</code>
|
|
</li>
|
|
|
|
</ol>
|
|
</pre>
|
|
</div>
|
|
|
|
<div class="source_table" id="00c3504cff5eca9f25748185fb2bd47ad1755d92">
|
|
<div class="header">
|
|
<h3>lib/travis/api/app/extensions/expose_pattern.rb</h3>
|
|
<h4><span class="green">100.0 %</span> covered</h4>
|
|
<div>
|
|
<b>7</b> relevant lines.
|
|
<span class="green"><b>7</b> lines covered</span> and
|
|
<span class="red"><b>0</b> lines missed.</span>
|
|
</div>
|
|
</div>
|
|
|
|
<pre>
|
|
<ol>
|
|
|
|
<li class="covered" data-hits="1" data-linenumber="1">
|
|
<span class="hits">1</span>
|
|
|
|
<code class="ruby">require 'travis/api/app'</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="2">
|
|
|
|
|
|
<code class="ruby"></code>
|
|
</li>
|
|
|
|
<li class="covered" data-hits="1" data-linenumber="3">
|
|
<span class="hits">1</span>
|
|
|
|
<code class="ruby">class Travis::Api::App</code>
|
|
</li>
|
|
|
|
<li class="covered" data-hits="1" data-linenumber="4">
|
|
<span class="hits">1</span>
|
|
|
|
<code class="ruby"> module Extensions</code>
|
|
</li>
|
|
|
|
<li class="covered" data-hits="1" data-linenumber="5">
|
|
<span class="hits">1</span>
|
|
|
|
<code class="ruby"> module ExposePattern</code>
|
|
</li>
|
|
|
|
<li class="covered" data-hits="1" data-linenumber="6">
|
|
<span class="hits">1</span>
|
|
|
|
<code class="ruby"> def route(verb, path, *)</code>
|
|
</li>
|
|
|
|
<li class="covered" data-hits="119" data-linenumber="7">
|
|
<span class="hits">119</span>
|
|
|
|
<code class="ruby"> condition { headers('X-Endpoint' => settings.name.to_s, 'X-Pattern' => path.to_s) }</code>
|
|
</li>
|
|
|
|
<li class="covered" data-hits="119" data-linenumber="8">
|
|
<span class="hits">119</span>
|
|
|
|
<code class="ruby"> super</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="9">
|
|
|
|
|
|
<code class="ruby"> end</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="10">
|
|
|
|
|
|
<code class="ruby"> end</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="11">
|
|
|
|
|
|
<code class="ruby"> end</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="12">
|
|
|
|
|
|
<code class="ruby">end</code>
|
|
</li>
|
|
|
|
</ol>
|
|
</pre>
|
|
</div>
|
|
|
|
<div class="source_table" id="cf7268e37e643b00ddda6c99c2b8d2601a66df25">
|
|
<div class="header">
|
|
<h3>lib/travis/api/app/extensions/scoping.rb</h3>
|
|
<h4><span class="red">41.03 %</span> covered</h4>
|
|
<div>
|
|
<b>39</b> relevant lines.
|
|
<span class="green"><b>16</b> lines covered</span> and
|
|
<span class="red"><b>23</b> lines missed.</span>
|
|
</div>
|
|
</div>
|
|
|
|
<pre>
|
|
<ol>
|
|
|
|
<li class="covered" data-hits="1" data-linenumber="1">
|
|
<span class="hits">1</span>
|
|
|
|
<code class="ruby">require 'travis/api/app'</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="2">
|
|
|
|
|
|
<code class="ruby"></code>
|
|
</li>
|
|
|
|
<li class="covered" data-hits="1" data-linenumber="3">
|
|
<span class="hits">1</span>
|
|
|
|
<code class="ruby">class Travis::Api::App</code>
|
|
</li>
|
|
|
|
<li class="covered" data-hits="1" data-linenumber="4">
|
|
<span class="hits">1</span>
|
|
|
|
<code class="ruby"> module Extensions</code>
|
|
</li>
|
|
|
|
<li class="covered" data-hits="1" data-linenumber="5">
|
|
<span class="hits">1</span>
|
|
|
|
<code class="ruby"> module Scoping</code>
|
|
</li>
|
|
|
|
<li class="covered" data-hits="1" data-linenumber="6">
|
|
<span class="hits">1</span>
|
|
|
|
<code class="ruby"> module Helpers</code>
|
|
</li>
|
|
|
|
<li class="covered" data-hits="1" data-linenumber="7">
|
|
<span class="hits">1</span>
|
|
|
|
<code class="ruby"> def scope</code>
|
|
</li>
|
|
|
|
<li class="missed" data-hits="0" data-linenumber="8">
|
|
|
|
|
|
<code class="ruby"> env['travis.scope'].to_sym</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="9">
|
|
|
|
|
|
<code class="ruby"> end</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="10">
|
|
|
|
|
|
<code class="ruby"></code>
|
|
</li>
|
|
|
|
<li class="covered" data-hits="1" data-linenumber="11">
|
|
<span class="hits">1</span>
|
|
|
|
<code class="ruby"> def public?</code>
|
|
</li>
|
|
|
|
<li class="missed" data-hits="0" data-linenumber="12">
|
|
|
|
|
|
<code class="ruby"> scope == :public</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="13">
|
|
|
|
|
|
<code class="ruby"> end</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="14">
|
|
|
|
|
|
<code class="ruby"></code>
|
|
</li>
|
|
|
|
<li class="covered" data-hits="1" data-linenumber="15">
|
|
<span class="hits">1</span>
|
|
|
|
<code class="ruby"> def required_params_match?</code>
|
|
</li>
|
|
|
|
<li class="missed" data-hits="0" data-linenumber="16">
|
|
|
|
|
|
<code class="ruby"> return true unless token = env['travis.access_token']</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="17">
|
|
|
|
|
|
<code class="ruby"></code>
|
|
</li>
|
|
|
|
<li class="missed" data-hits="0" data-linenumber="18">
|
|
|
|
|
|
<code class="ruby"> if token.extra && (required_params = token.extra['required_params'])</code>
|
|
</li>
|
|
|
|
<li class="missed" data-hits="0" data-linenumber="19">
|
|
|
|
|
|
<code class="ruby"> required_params.all? { |name, value| params[name] == value }</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="20">
|
|
|
|
|
|
<code class="ruby"> else</code>
|
|
</li>
|
|
|
|
<li class="missed" data-hits="0" data-linenumber="21">
|
|
|
|
|
|
<code class="ruby"> true</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="22">
|
|
|
|
|
|
<code class="ruby"> end</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="23">
|
|
|
|
|
|
<code class="ruby"> end</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="24">
|
|
|
|
|
|
<code class="ruby"> end</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="25">
|
|
|
|
|
|
<code class="ruby"></code>
|
|
</li>
|
|
|
|
<li class="covered" data-hits="1" data-linenumber="26">
|
|
<span class="hits">1</span>
|
|
|
|
<code class="ruby"> def self.registered(app)</code>
|
|
</li>
|
|
|
|
<li class="covered" data-hits="1" data-linenumber="27">
|
|
<span class="hits">1</span>
|
|
|
|
<code class="ruby"> app.set default_scope: :public, anonymous_scopes: [:public]</code>
|
|
</li>
|
|
|
|
<li class="covered" data-hits="1" data-linenumber="28">
|
|
<span class="hits">1</span>
|
|
|
|
<code class="ruby"> app.helpers(Helpers)</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="29">
|
|
|
|
|
|
<code class="ruby"> end</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="30">
|
|
|
|
|
|
<code class="ruby"></code>
|
|
</li>
|
|
|
|
<li class="covered" data-hits="1" data-linenumber="31">
|
|
<span class="hits">1</span>
|
|
|
|
<code class="ruby"> def scope(*names)</code>
|
|
</li>
|
|
|
|
<li class="covered" data-hits="118" data-linenumber="32">
|
|
<span class="hits">118</span>
|
|
|
|
<code class="ruby"> condition do</code>
|
|
</li>
|
|
|
|
<li class="missed" data-hits="0" data-linenumber="33">
|
|
|
|
|
|
<code class="ruby"> names = [settings.default_scope] if names == [:default]</code>
|
|
</li>
|
|
|
|
<li class="missed" data-hits="0" data-linenumber="34">
|
|
|
|
|
|
<code class="ruby"> scopes = env['travis.access_token'].try(:scopes) || settings.anonymous_scopes</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="35">
|
|
|
|
|
|
<code class="ruby"></code>
|
|
</li>
|
|
|
|
<li class="missed" data-hits="0" data-linenumber="36">
|
|
|
|
|
|
<code class="ruby"> result = names.any? do |name|</code>
|
|
</li>
|
|
|
|
<li class="missed" data-hits="0" data-linenumber="37">
|
|
|
|
|
|
<code class="ruby"> if scopes.include?(name) && required_params_match?</code>
|
|
</li>
|
|
|
|
<li class="missed" data-hits="0" data-linenumber="38">
|
|
|
|
|
|
<code class="ruby"> headers['X-OAuth-Scopes'] = scopes.map(&:to_s).join(',')</code>
|
|
</li>
|
|
|
|
<li class="missed" data-hits="0" data-linenumber="39">
|
|
|
|
|
|
<code class="ruby"> headers['X-Accepted-OAuth-Scopes'] = name.to_s</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="40">
|
|
|
|
|
|
<code class="ruby"></code>
|
|
</li>
|
|
|
|
<li class="missed" data-hits="0" data-linenumber="41">
|
|
|
|
|
|
<code class="ruby"> env['travis.scope'] = name</code>
|
|
</li>
|
|
|
|
<li class="missed" data-hits="0" data-linenumber="42">
|
|
|
|
|
|
<code class="ruby"> headers['Vary'] = 'Accept'</code>
|
|
</li>
|
|
|
|
<li class="missed" data-hits="0" data-linenumber="43">
|
|
|
|
|
|
<code class="ruby"> headers['Vary'] << ', Authorization' unless public?</code>
|
|
</li>
|
|
|
|
<li class="missed" data-hits="0" data-linenumber="44">
|
|
|
|
|
|
<code class="ruby"> true</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="45">
|
|
|
|
|
|
<code class="ruby"> end</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="46">
|
|
|
|
|
|
<code class="ruby"> end</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="47">
|
|
|
|
|
|
<code class="ruby"></code>
|
|
</li>
|
|
|
|
<li class="missed" data-hits="0" data-linenumber="48">
|
|
|
|
|
|
<code class="ruby"> if !result</code>
|
|
</li>
|
|
|
|
<li class="missed" data-hits="0" data-linenumber="49">
|
|
|
|
|
|
<code class="ruby"> headers['X-OAuth-Scopes'] = scopes.map(&:to_s).join(',')</code>
|
|
</li>
|
|
|
|
<li class="missed" data-hits="0" data-linenumber="50">
|
|
|
|
|
|
<code class="ruby"> headers['X-Accepted-OAuth-Scopes'] = names.first.to_s</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="51">
|
|
|
|
|
|
<code class="ruby"></code>
|
|
</li>
|
|
|
|
<li class="missed" data-hits="0" data-linenumber="52">
|
|
|
|
|
|
<code class="ruby"> if env['travis.access_token']</code>
|
|
</li>
|
|
|
|
<li class="missed" data-hits="0" data-linenumber="53">
|
|
|
|
|
|
<code class="ruby"> pass { halt 403, "insufficient access" }</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="54">
|
|
|
|
|
|
<code class="ruby"> else</code>
|
|
</li>
|
|
|
|
<li class="missed" data-hits="0" data-linenumber="55">
|
|
|
|
|
|
<code class="ruby"> pass { halt 401, "no access token supplied" }</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="56">
|
|
|
|
|
|
<code class="ruby"> end</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="57">
|
|
|
|
|
|
<code class="ruby"> end</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="58">
|
|
|
|
|
|
<code class="ruby"></code>
|
|
</li>
|
|
|
|
<li class="missed" data-hits="0" data-linenumber="59">
|
|
|
|
|
|
<code class="ruby"> result</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="60">
|
|
|
|
|
|
<code class="ruby"> end</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="61">
|
|
|
|
|
|
<code class="ruby"> end</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="62">
|
|
|
|
|
|
<code class="ruby"></code>
|
|
</li>
|
|
|
|
<li class="covered" data-hits="1" data-linenumber="63">
|
|
<span class="hits">1</span>
|
|
|
|
<code class="ruby"> def route(verb, path, options = {}, &block)</code>
|
|
</li>
|
|
|
|
<li class="covered" data-hits="118" data-linenumber="64">
|
|
<span class="hits">118</span>
|
|
|
|
<code class="ruby"> options[:scope] ||= :default</code>
|
|
</li>
|
|
|
|
<li class="covered" data-hits="118" data-linenumber="65">
|
|
<span class="hits">118</span>
|
|
|
|
<code class="ruby"> super(verb, path, options, &block)</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="66">
|
|
|
|
|
|
<code class="ruby"> end</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="67">
|
|
|
|
|
|
<code class="ruby"> end</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="68">
|
|
|
|
|
|
<code class="ruby"> end</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="69">
|
|
|
|
|
|
<code class="ruby">end</code>
|
|
</li>
|
|
|
|
</ol>
|
|
</pre>
|
|
</div>
|
|
|
|
<div class="source_table" id="4afdb495e463d11449413cb7fabf94f05a66ff88">
|
|
<div class="header">
|
|
<h3>lib/travis/api/app/extensions/smart_constants.rb</h3>
|
|
<h4><span class="green">100.0 %</span> covered</h4>
|
|
<div>
|
|
<b>11</b> relevant lines.
|
|
<span class="green"><b>11</b> lines covered</span> and
|
|
<span class="red"><b>0</b> lines missed.</span>
|
|
</div>
|
|
</div>
|
|
|
|
<pre>
|
|
<ol>
|
|
|
|
<li class="covered" data-hits="1" data-linenumber="1">
|
|
<span class="hits">1</span>
|
|
|
|
<code class="ruby">require 'travis/api/app'</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="2">
|
|
|
|
|
|
<code class="ruby"></code>
|
|
</li>
|
|
|
|
<li class="covered" data-hits="1" data-linenumber="3">
|
|
<span class="hits">1</span>
|
|
|
|
<code class="ruby">class Travis::Api::App</code>
|
|
</li>
|
|
|
|
<li class="covered" data-hits="1" data-linenumber="4">
|
|
<span class="hits">1</span>
|
|
|
|
<code class="ruby"> module Extensions</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="5">
|
|
|
|
|
|
<code class="ruby"> # Allows writing</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="6">
|
|
|
|
|
|
<code class="ruby"> #</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="7">
|
|
|
|
|
|
<code class="ruby"> # helpers :some_helper</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="8">
|
|
|
|
|
|
<code class="ruby"> #</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="9">
|
|
|
|
|
|
<code class="ruby"> # Instead of</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="10">
|
|
|
|
|
|
<code class="ruby"> #</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="11">
|
|
|
|
|
|
<code class="ruby"> # helpers Travis::Api::App::Helpers::SomeHelper</code>
|
|
</li>
|
|
|
|
<li class="covered" data-hits="1" data-linenumber="12">
|
|
<span class="hits">1</span>
|
|
|
|
<code class="ruby"> module SmartConstants</code>
|
|
</li>
|
|
|
|
<li class="covered" data-hits="1" data-linenumber="13">
|
|
<span class="hits">1</span>
|
|
|
|
<code class="ruby"> def helpers(*list, &block)</code>
|
|
</li>
|
|
|
|
<li class="covered" data-hits="4" data-linenumber="14">
|
|
<span class="hits">4</span>
|
|
|
|
<code class="ruby"> super(*resolve_constants(list, Helpers), &block)</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="15">
|
|
|
|
|
|
<code class="ruby"> end</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="16">
|
|
|
|
|
|
<code class="ruby"></code>
|
|
</li>
|
|
|
|
<li class="covered" data-hits="1" data-linenumber="17">
|
|
<span class="hits">1</span>
|
|
|
|
<code class="ruby"> def register(*list, &block)</code>
|
|
</li>
|
|
|
|
<li class="covered" data-hits="4" data-linenumber="18">
|
|
<span class="hits">4</span>
|
|
|
|
<code class="ruby"> super(*resolve_constants(list, Extensions), &block)</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="19">
|
|
|
|
|
|
<code class="ruby"> end</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="20">
|
|
|
|
|
|
<code class="ruby"></code>
|
|
</li>
|
|
|
|
<li class="covered" data-hits="1" data-linenumber="21">
|
|
<span class="hits">1</span>
|
|
|
|
<code class="ruby"> private</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="22">
|
|
|
|
|
|
<code class="ruby"></code>
|
|
</li>
|
|
|
|
<li class="covered" data-hits="1" data-linenumber="23">
|
|
<span class="hits">1</span>
|
|
|
|
<code class="ruby"> def resolve_constants(list, namespace)</code>
|
|
</li>
|
|
|
|
<li class="covered" data-hits="20" data-linenumber="24">
|
|
<span class="hits">20</span>
|
|
|
|
<code class="ruby"> list.map { |e| Symbol === e ? namespace.const_get(e.to_s.camelize) : e }</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="25">
|
|
|
|
|
|
<code class="ruby"> end</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="26">
|
|
|
|
|
|
<code class="ruby"> end</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="27">
|
|
|
|
|
|
<code class="ruby"> end</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="28">
|
|
|
|
|
|
<code class="ruby">end</code>
|
|
</li>
|
|
|
|
</ol>
|
|
</pre>
|
|
</div>
|
|
|
|
<div class="source_table" id="32932af295b8d816c57702d2dd3215d03df46d91">
|
|
<div class="header">
|
|
<h3>lib/travis/api/app/extensions/subclass_tracker.rb</h3>
|
|
<h4><span class="green">100.0 %</span> covered</h4>
|
|
<div>
|
|
<b>13</b> relevant lines.
|
|
<span class="green"><b>13</b> lines covered</span> and
|
|
<span class="red"><b>0</b> lines missed.</span>
|
|
</div>
|
|
</div>
|
|
|
|
<pre>
|
|
<ol>
|
|
|
|
<li class="covered" data-hits="1" data-linenumber="1">
|
|
<span class="hits">1</span>
|
|
|
|
<code class="ruby">require 'travis/api/app'</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="2">
|
|
|
|
|
|
<code class="ruby"></code>
|
|
</li>
|
|
|
|
<li class="covered" data-hits="1" data-linenumber="3">
|
|
<span class="hits">1</span>
|
|
|
|
<code class="ruby">class Travis::Api::App</code>
|
|
</li>
|
|
|
|
<li class="covered" data-hits="1" data-linenumber="4">
|
|
<span class="hits">1</span>
|
|
|
|
<code class="ruby"> module Extensions</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="5">
|
|
|
|
|
|
<code class="ruby"> # Keeps track of subclasses. Used for endpoint and middleware detection.</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="6">
|
|
|
|
|
|
<code class="ruby"> # This will prevent garbage collection of subclasses.</code>
|
|
</li>
|
|
|
|
<li class="covered" data-hits="1" data-linenumber="7">
|
|
<span class="hits">1</span>
|
|
|
|
<code class="ruby"> module SubclassTracker</code>
|
|
</li>
|
|
|
|
<li class="covered" data-hits="1" data-linenumber="8">
|
|
<span class="hits">1</span>
|
|
|
|
<code class="ruby"> def direct_subclasses</code>
|
|
</li>
|
|
|
|
<li class="covered" data-hits="707" data-linenumber="9">
|
|
<span class="hits">707</span>
|
|
|
|
<code class="ruby"> @direct_subclasses ||= []</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="10">
|
|
|
|
|
|
<code class="ruby"> end</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="11">
|
|
|
|
|
|
<code class="ruby"></code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="12">
|
|
|
|
|
|
<code class="ruby"> # List of "leaf" subclasses (ie subclasses without subclasses).</code>
|
|
</li>
|
|
|
|
<li class="covered" data-hits="1" data-linenumber="13">
|
|
<span class="hits">1</span>
|
|
|
|
<code class="ruby"> def subclasses</code>
|
|
</li>
|
|
|
|
<li class="covered" data-hits="594" data-linenumber="14">
|
|
<span class="hits">594</span>
|
|
|
|
<code class="ruby"> return [self] if direct_subclasses.empty?</code>
|
|
</li>
|
|
|
|
<li class="covered" data-hits="85" data-linenumber="15">
|
|
<span class="hits">85</span>
|
|
|
|
<code class="ruby"> direct_subclasses.map(&:subclasses).flatten.uniq</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="16">
|
|
|
|
|
|
<code class="ruby"> end</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="17">
|
|
|
|
|
|
<code class="ruby"></code>
|
|
</li>
|
|
|
|
<li class="covered" data-hits="1" data-linenumber="18">
|
|
<span class="hits">1</span>
|
|
|
|
<code class="ruby"> def inherited(subclass)</code>
|
|
</li>
|
|
|
|
<li class="covered" data-hits="28" data-linenumber="19">
|
|
<span class="hits">28</span>
|
|
|
|
<code class="ruby"> super</code>
|
|
</li>
|
|
|
|
<li class="covered" data-hits="28" data-linenumber="20">
|
|
<span class="hits">28</span>
|
|
|
|
<code class="ruby"> subclass.set app_file: caller_files.first</code>
|
|
</li>
|
|
|
|
<li class="covered" data-hits="28" data-linenumber="21">
|
|
<span class="hits">28</span>
|
|
|
|
<code class="ruby"> direct_subclasses << subclass</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="22">
|
|
|
|
|
|
<code class="ruby"> end</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="23">
|
|
|
|
|
|
<code class="ruby"> end</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="24">
|
|
|
|
|
|
<code class="ruby"> end</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="25">
|
|
|
|
|
|
<code class="ruby">end</code>
|
|
</li>
|
|
|
|
</ol>
|
|
</pre>
|
|
</div>
|
|
|
|
<div class="source_table" id="3583b3399a71ebe7de3f253f8a6a166b5ff1450d">
|
|
<div class="header">
|
|
<h3>lib/travis/api/app/helpers.rb</h3>
|
|
<h4><span class="green">100.0 %</span> covered</h4>
|
|
<div>
|
|
<b>4</b> relevant lines.
|
|
<span class="green"><b>4</b> lines covered</span> and
|
|
<span class="red"><b>0</b> lines missed.</span>
|
|
</div>
|
|
</div>
|
|
|
|
<pre>
|
|
<ol>
|
|
|
|
<li class="covered" data-hits="1" data-linenumber="1">
|
|
<span class="hits">1</span>
|
|
|
|
<code class="ruby">require 'travis/api/app'</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="2">
|
|
|
|
|
|
<code class="ruby"></code>
|
|
</li>
|
|
|
|
<li class="covered" data-hits="1" data-linenumber="3">
|
|
<span class="hits">1</span>
|
|
|
|
<code class="ruby">class Travis::Api::App</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="4">
|
|
|
|
|
|
<code class="ruby"> # Namespace for helpers.</code>
|
|
</li>
|
|
|
|
<li class="covered" data-hits="1" data-linenumber="5">
|
|
<span class="hits">1</span>
|
|
|
|
<code class="ruby"> module Helpers</code>
|
|
</li>
|
|
|
|
<li class="covered" data-hits="7" data-linenumber="6">
|
|
<span class="hits">7</span>
|
|
|
|
<code class="ruby"> Dir.glob("#{__dir__}/helpers/*.rb").each { |f| require f[%r[(?<=lib/).+(?=\.rb$)]] }</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="7">
|
|
|
|
|
|
<code class="ruby"> end</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="8">
|
|
|
|
|
|
<code class="ruby">end</code>
|
|
</li>
|
|
|
|
</ol>
|
|
</pre>
|
|
</div>
|
|
|
|
<div class="source_table" id="d434ebb9387430acf5e4c2c6adda113f213d9a27">
|
|
<div class="header">
|
|
<h3>lib/travis/api/app/helpers/accept.rb</h3>
|
|
<h4><span class="red">49.06 %</span> covered</h4>
|
|
<div>
|
|
<b>53</b> relevant lines.
|
|
<span class="green"><b>26</b> lines covered</span> and
|
|
<span class="red"><b>27</b> lines missed.</span>
|
|
</div>
|
|
</div>
|
|
|
|
<pre>
|
|
<ol>
|
|
|
|
<li class="covered" data-hits="1" data-linenumber="1">
|
|
<span class="hits">1</span>
|
|
|
|
<code class="ruby">require 'travis/api/app'</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="2">
|
|
|
|
|
|
<code class="ruby"></code>
|
|
</li>
|
|
|
|
<li class="covered" data-hits="1" data-linenumber="3">
|
|
<span class="hits">1</span>
|
|
|
|
<code class="ruby">class Travis::Api::App</code>
|
|
</li>
|
|
|
|
<li class="covered" data-hits="1" data-linenumber="4">
|
|
<span class="hits">1</span>
|
|
|
|
<code class="ruby"> module Helpers</code>
|
|
</li>
|
|
|
|
<li class="covered" data-hits="1" data-linenumber="5">
|
|
<span class="hits">1</span>
|
|
|
|
<code class="ruby"> module Accept</code>
|
|
</li>
|
|
|
|
<li class="covered" data-hits="1" data-linenumber="6">
|
|
<span class="hits">1</span>
|
|
|
|
<code class="ruby"> HEADER_FORMAT = /vnd\.travis-ci\.(\d+)\+(\w+)/</code>
|
|
</li>
|
|
|
|
<li class="covered" data-hits="1" data-linenumber="7">
|
|
<span class="hits">1</span>
|
|
|
|
<code class="ruby"> DEFAULT_VERSION = 'v1'</code>
|
|
</li>
|
|
|
|
<li class="covered" data-hits="1" data-linenumber="8">
|
|
<span class="hits">1</span>
|
|
|
|
<code class="ruby"> DEFAULT_FORMAT = 'json'</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="9">
|
|
|
|
|
|
<code class="ruby"></code>
|
|
</li>
|
|
|
|
<li class="covered" data-hits="1" data-linenumber="10">
|
|
<span class="hits">1</span>
|
|
|
|
<code class="ruby"> class Entry</code>
|
|
</li>
|
|
|
|
<li class="covered" data-hits="1" data-linenumber="11">
|
|
<span class="hits">1</span>
|
|
|
|
<code class="ruby"> SEPARATORS = Regexp.escape("()<>@,;:\/[]?={}\t ")</code>
|
|
</li>
|
|
|
|
<li class="covered" data-hits="1" data-linenumber="12">
|
|
<span class="hits">1</span>
|
|
|
|
<code class="ruby"> TOKEN = /[^#{SEPARATORS}]+/</code>
|
|
</li>
|
|
|
|
<li class="covered" data-hits="1" data-linenumber="13">
|
|
<span class="hits">1</span>
|
|
|
|
<code class="ruby"> attr_reader :type, :subtype, :quality, :version, :params</code>
|
|
</li>
|
|
|
|
<li class="covered" data-hits="1" data-linenumber="14">
|
|
<span class="hits">1</span>
|
|
|
|
<code class="ruby"> def initialize(accept_string)</code>
|
|
</li>
|
|
|
|
<li class="missed" data-hits="0" data-linenumber="15">
|
|
|
|
|
|
<code class="ruby"> @type, @subtype, @quality, @version, @params = parse(accept_string)</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="16">
|
|
|
|
|
|
<code class="ruby"> end</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="17">
|
|
|
|
|
|
<code class="ruby"></code>
|
|
</li>
|
|
|
|
<li class="covered" data-hits="1" data-linenumber="18">
|
|
<span class="hits">1</span>
|
|
|
|
<code class="ruby"> def <=>(other)</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="19">
|
|
|
|
|
|
<code class="ruby"> [1 - quality, mime_type.count('*'), 1 - params.size] <=></code>
|
|
</li>
|
|
|
|
<li class="missed" data-hits="0" data-linenumber="20">
|
|
|
|
|
|
<code class="ruby"> [1 - other.quality, other.mime_type.count('*'), 1 - other.params.size]</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="21">
|
|
|
|
|
|
<code class="ruby"> end</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="22">
|
|
|
|
|
|
<code class="ruby"></code>
|
|
</li>
|
|
|
|
<li class="covered" data-hits="1" data-linenumber="23">
|
|
<span class="hits">1</span>
|
|
|
|
<code class="ruby"> def mime_type</code>
|
|
</li>
|
|
|
|
<li class="missed" data-hits="0" data-linenumber="24">
|
|
|
|
|
|
<code class="ruby"> "#{type}/#{subtype}"</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="25">
|
|
|
|
|
|
<code class="ruby"> end</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="26">
|
|
|
|
|
|
<code class="ruby"></code>
|
|
</li>
|
|
|
|
<li class="covered" data-hits="1" data-linenumber="27">
|
|
<span class="hits">1</span>
|
|
|
|
<code class="ruby"> def version</code>
|
|
</li>
|
|
|
|
<li class="missed" data-hits="0" data-linenumber="28">
|
|
|
|
|
|
<code class="ruby"> version = @version || params['version']</code>
|
|
</li>
|
|
|
|
<li class="missed" data-hits="0" data-linenumber="29">
|
|
|
|
|
|
<code class="ruby"> version ? "v#{version}" : nil</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="30">
|
|
|
|
|
|
<code class="ruby"> end</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="31">
|
|
|
|
|
|
<code class="ruby"></code>
|
|
</li>
|
|
|
|
<li class="covered" data-hits="1" data-linenumber="32">
|
|
<span class="hits">1</span>
|
|
|
|
<code class="ruby"> def accepts?(mime_type)</code>
|
|
</li>
|
|
|
|
<li class="missed" data-hits="0" data-linenumber="33">
|
|
|
|
|
|
<code class="ruby"> return true if self.mime_type == '*/*'</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="34">
|
|
|
|
|
|
<code class="ruby"></code>
|
|
</li>
|
|
|
|
<li class="missed" data-hits="0" data-linenumber="35">
|
|
|
|
|
|
<code class="ruby"> type, subtype = mime_type.scan(%r{(#{TOKEN})/(#{TOKEN})}).flatten</code>
|
|
</li>
|
|
|
|
<li class="missed" data-hits="0" data-linenumber="36">
|
|
|
|
|
|
<code class="ruby"> type == self.type && (self.subtype == '*' || subtype == self.subtype)</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="37">
|
|
|
|
|
|
<code class="ruby"> end</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="38">
|
|
|
|
|
|
<code class="ruby"></code>
|
|
</li>
|
|
|
|
<li class="covered" data-hits="1" data-linenumber="39">
|
|
<span class="hits">1</span>
|
|
|
|
<code class="ruby"> def to_s</code>
|
|
</li>
|
|
|
|
<li class="missed" data-hits="0" data-linenumber="40">
|
|
|
|
|
|
<code class="ruby"> str = "#{mime_type}; q=#{quality}"</code>
|
|
</li>
|
|
|
|
<li class="missed" data-hits="0" data-linenumber="41">
|
|
|
|
|
|
<code class="ruby"> str << "; #{params.map { |k,v| "#{k}=#{v}" }.join('; ')}" if params.length > 0</code>
|
|
</li>
|
|
|
|
<li class="missed" data-hits="0" data-linenumber="42">
|
|
|
|
|
|
<code class="ruby"> str</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="43">
|
|
|
|
|
|
<code class="ruby"> end</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="44">
|
|
|
|
|
|
<code class="ruby"></code>
|
|
</li>
|
|
|
|
<li class="covered" data-hits="1" data-linenumber="45">
|
|
<span class="hits">1</span>
|
|
|
|
<code class="ruby"> private</code>
|
|
</li>
|
|
|
|
<li class="covered" data-hits="1" data-linenumber="46">
|
|
<span class="hits">1</span>
|
|
|
|
<code class="ruby"> def parse(str)</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="47">
|
|
|
|
|
|
<code class="ruby"> # this handles only subset of what Accept header can</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="48">
|
|
|
|
|
|
<code class="ruby"> # contain, only the simplest cases, no quoted strings etc.</code>
|
|
</li>
|
|
|
|
<li class="missed" data-hits="0" data-linenumber="49">
|
|
|
|
|
|
<code class="ruby"> type, subtype, params = str.scan(%r{(#{TOKEN})/(#{TOKEN})(.*)}).flatten</code>
|
|
</li>
|
|
|
|
<li class="missed" data-hits="0" data-linenumber="50">
|
|
|
|
|
|
<code class="ruby"> quality = 1</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="51">
|
|
|
|
|
|
<code class="ruby"></code>
|
|
</li>
|
|
|
|
<li class="missed" data-hits="0" data-linenumber="52">
|
|
|
|
|
|
<code class="ruby"> version = nil</code>
|
|
</li>
|
|
|
|
<li class="missed" data-hits="0" data-linenumber="53">
|
|
|
|
|
|
<code class="ruby"> if params</code>
|
|
</li>
|
|
|
|
<li class="missed" data-hits="0" data-linenumber="54">
|
|
|
|
|
|
<code class="ruby"> params = Hash[*params.split(';').map { |p| p.scan /(#{TOKEN})=(#{TOKEN})/ }.flatten]</code>
|
|
</li>
|
|
|
|
<li class="missed" data-hits="0" data-linenumber="55">
|
|
|
|
|
|
<code class="ruby"> quality = params.delete('q').to_f if params['q']</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="56">
|
|
|
|
|
|
<code class="ruby"> end</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="57">
|
|
|
|
|
|
<code class="ruby"></code>
|
|
</li>
|
|
|
|
<li class="missed" data-hits="0" data-linenumber="58">
|
|
|
|
|
|
<code class="ruby"> if subtype =~ HEADER_FORMAT</code>
|
|
</li>
|
|
|
|
<li class="missed" data-hits="0" data-linenumber="59">
|
|
|
|
|
|
<code class="ruby"> subtype = $2</code>
|
|
</li>
|
|
|
|
<li class="missed" data-hits="0" data-linenumber="60">
|
|
|
|
|
|
<code class="ruby"> version = $1</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="61">
|
|
|
|
|
|
<code class="ruby"> end</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="62">
|
|
|
|
|
|
<code class="ruby"></code>
|
|
</li>
|
|
|
|
<li class="missed" data-hits="0" data-linenumber="63">
|
|
|
|
|
|
<code class="ruby"> [type, subtype, quality, version, params]</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="64">
|
|
|
|
|
|
<code class="ruby"> end</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="65">
|
|
|
|
|
|
<code class="ruby"> end</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="66">
|
|
|
|
|
|
<code class="ruby"></code>
|
|
</li>
|
|
|
|
<li class="covered" data-hits="1" data-linenumber="67">
|
|
<span class="hits">1</span>
|
|
|
|
<code class="ruby"> def accepts?(mime_type)</code>
|
|
</li>
|
|
|
|
<li class="missed" data-hits="0" data-linenumber="68">
|
|
|
|
|
|
<code class="ruby"> accept_entries.any? { |e| e.accepts?(mime_type) }</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="69">
|
|
|
|
|
|
<code class="ruby"> end</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="70">
|
|
|
|
|
|
<code class="ruby"></code>
|
|
</li>
|
|
|
|
<li class="covered" data-hits="1" data-linenumber="71">
|
|
<span class="hits">1</span>
|
|
|
|
<code class="ruby"> def accept_entries</code>
|
|
</li>
|
|
|
|
<li class="missed" data-hits="0" data-linenumber="72">
|
|
|
|
|
|
<code class="ruby"> entries = env['HTTP_ACCEPT'].to_s.delete(' ').to_s.split(',').map { |e| Entry.new(e) }</code>
|
|
</li>
|
|
|
|
<li class="missed" data-hits="0" data-linenumber="73">
|
|
|
|
|
|
<code class="ruby"> entries.empty? ? [Entry.new('*/*')] : entries.sort</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="74">
|
|
|
|
|
|
<code class="ruby"> end</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="75">
|
|
|
|
|
|
<code class="ruby"></code>
|
|
</li>
|
|
|
|
<li class="covered" data-hits="1" data-linenumber="76">
|
|
<span class="hits">1</span>
|
|
|
|
<code class="ruby"> def acceptable_formats</code>
|
|
</li>
|
|
|
|
<li class="missed" data-hits="0" data-linenumber="77">
|
|
|
|
|
|
<code class="ruby"> if format = env['travis.format_from_path']</code>
|
|
</li>
|
|
|
|
<li class="missed" data-hits="0" data-linenumber="78">
|
|
|
|
|
|
<code class="ruby"> [Entry.new(Rack::Mime.mime_type(".#{format}"))]</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="79">
|
|
|
|
|
|
<code class="ruby"> else</code>
|
|
</li>
|
|
|
|
<li class="missed" data-hits="0" data-linenumber="80">
|
|
|
|
|
|
<code class="ruby"> accept_entries</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="81">
|
|
|
|
|
|
<code class="ruby"> end</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="82">
|
|
|
|
|
|
<code class="ruby"> end</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="83">
|
|
|
|
|
|
<code class="ruby"></code>
|
|
</li>
|
|
|
|
<li class="covered" data-hits="1" data-linenumber="84">
|
|
<span class="hits">1</span>
|
|
|
|
<code class="ruby"> def accept_version</code>
|
|
</li>
|
|
|
|
<li class="covered" data-hits="43" data-linenumber="85">
|
|
<span class="hits">43</span>
|
|
|
|
<code class="ruby"> @accept_version ||= request.accept.join =~ HEADER_FORMAT && "v#{$1}" || DEFAULT_VERSION</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="86">
|
|
|
|
|
|
<code class="ruby"> end</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="87">
|
|
|
|
|
|
<code class="ruby"></code>
|
|
</li>
|
|
|
|
<li class="covered" data-hits="1" data-linenumber="88">
|
|
<span class="hits">1</span>
|
|
|
|
<code class="ruby"> def accept_format</code>
|
|
</li>
|
|
|
|
<li class="covered" data-hits="10" data-linenumber="89">
|
|
<span class="hits">10</span>
|
|
|
|
<code class="ruby"> @accept_format ||= request.accept.join =~ HEADER_FORMAT && $2 || DEFAULT_FORMAT</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="90">
|
|
|
|
|
|
<code class="ruby"> end</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="91">
|
|
|
|
|
|
<code class="ruby"> end</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="92">
|
|
|
|
|
|
<code class="ruby"> end</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="93">
|
|
|
|
|
|
<code class="ruby">end</code>
|
|
</li>
|
|
|
|
</ol>
|
|
</pre>
|
|
</div>
|
|
|
|
<div class="source_table" id="945fc5424b8698f6c9f47bf45d950c7993fe7f7d">
|
|
<div class="header">
|
|
<h3>lib/travis/api/app/helpers/current_user.rb</h3>
|
|
<h4><span class="red">70.0 %</span> covered</h4>
|
|
<div>
|
|
<b>10</b> relevant lines.
|
|
<span class="green"><b>7</b> lines covered</span> and
|
|
<span class="red"><b>3</b> lines missed.</span>
|
|
</div>
|
|
</div>
|
|
|
|
<pre>
|
|
<ol>
|
|
|
|
<li class="covered" data-hits="1" data-linenumber="1">
|
|
<span class="hits">1</span>
|
|
|
|
<code class="ruby">require 'travis/api/app'</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="2">
|
|
|
|
|
|
<code class="ruby"></code>
|
|
</li>
|
|
|
|
<li class="covered" data-hits="1" data-linenumber="3">
|
|
<span class="hits">1</span>
|
|
|
|
<code class="ruby">class Travis::Api::App</code>
|
|
</li>
|
|
|
|
<li class="covered" data-hits="1" data-linenumber="4">
|
|
<span class="hits">1</span>
|
|
|
|
<code class="ruby"> module Helpers</code>
|
|
</li>
|
|
|
|
<li class="covered" data-hits="1" data-linenumber="5">
|
|
<span class="hits">1</span>
|
|
|
|
<code class="ruby"> module CurrentUser</code>
|
|
</li>
|
|
|
|
<li class="covered" data-hits="1" data-linenumber="6">
|
|
<span class="hits">1</span>
|
|
|
|
<code class="ruby"> def current_user</code>
|
|
</li>
|
|
|
|
<li class="missed" data-hits="0" data-linenumber="7">
|
|
|
|
|
|
<code class="ruby"> access_token.user if signed_in?</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="8">
|
|
|
|
|
|
<code class="ruby"> end</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="9">
|
|
|
|
|
|
<code class="ruby"></code>
|
|
</li>
|
|
|
|
<li class="covered" data-hits="1" data-linenumber="10">
|
|
<span class="hits">1</span>
|
|
|
|
<code class="ruby"> def access_token</code>
|
|
</li>
|
|
|
|
<li class="missed" data-hits="0" data-linenumber="11">
|
|
|
|
|
|
<code class="ruby"> env['travis.access_token']</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="12">
|
|
|
|
|
|
<code class="ruby"> end</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="13">
|
|
|
|
|
|
<code class="ruby"></code>
|
|
</li>
|
|
|
|
<li class="covered" data-hits="1" data-linenumber="14">
|
|
<span class="hits">1</span>
|
|
|
|
<code class="ruby"> def signed_in?</code>
|
|
</li>
|
|
|
|
<li class="missed" data-hits="0" data-linenumber="15">
|
|
|
|
|
|
<code class="ruby"> !!access_token</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="16">
|
|
|
|
|
|
<code class="ruby"> end</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="17">
|
|
|
|
|
|
<code class="ruby"> end</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="18">
|
|
|
|
|
|
<code class="ruby"> end</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="19">
|
|
|
|
|
|
<code class="ruby">end</code>
|
|
</li>
|
|
|
|
</ol>
|
|
</pre>
|
|
</div>
|
|
|
|
<div class="source_table" id="d6d6177d6e0d49294315541845ceb6265759cdf1">
|
|
<div class="header">
|
|
<h3>lib/travis/api/app/helpers/db_follower.rb</h3>
|
|
<h4><span class="yellow">83.33 %</span> covered</h4>
|
|
<div>
|
|
<b>6</b> relevant lines.
|
|
<span class="green"><b>5</b> lines covered</span> and
|
|
<span class="red"><b>1</b> lines missed.</span>
|
|
</div>
|
|
</div>
|
|
|
|
<pre>
|
|
<ol>
|
|
|
|
<li class="covered" data-hits="1" data-linenumber="1">
|
|
<span class="hits">1</span>
|
|
|
|
<code class="ruby">require 'travis/api/app'</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="2">
|
|
|
|
|
|
<code class="ruby"></code>
|
|
</li>
|
|
|
|
<li class="covered" data-hits="1" data-linenumber="3">
|
|
<span class="hits">1</span>
|
|
|
|
<code class="ruby">class Travis::Api::App</code>
|
|
</li>
|
|
|
|
<li class="covered" data-hits="1" data-linenumber="4">
|
|
<span class="hits">1</span>
|
|
|
|
<code class="ruby"> module Helpers</code>
|
|
</li>
|
|
|
|
<li class="covered" data-hits="1" data-linenumber="5">
|
|
<span class="hits">1</span>
|
|
|
|
<code class="ruby"> module DbFollower</code>
|
|
</li>
|
|
|
|
<li class="covered" data-hits="1" data-linenumber="6">
|
|
<span class="hits">1</span>
|
|
|
|
<code class="ruby"> def prefer_follower</code>
|
|
</li>
|
|
|
|
<li class="missed" data-hits="0" data-linenumber="7">
|
|
|
|
|
|
<code class="ruby"> yield</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="8">
|
|
|
|
|
|
<code class="ruby"> end</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="9">
|
|
|
|
|
|
<code class="ruby"> end</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="10">
|
|
|
|
|
|
<code class="ruby"> end</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="11">
|
|
|
|
|
|
<code class="ruby">end</code>
|
|
</li>
|
|
|
|
</ol>
|
|
</pre>
|
|
</div>
|
|
|
|
<div class="source_table" id="9b6cc591941ba41c4e94fefe940858e3353c284f">
|
|
<div class="header">
|
|
<h3>lib/travis/api/app/helpers/flash.rb</h3>
|
|
<h4><span class="green">100.0 %</span> covered</h4>
|
|
<div>
|
|
<b>6</b> relevant lines.
|
|
<span class="green"><b>6</b> lines covered</span> and
|
|
<span class="red"><b>0</b> lines missed.</span>
|
|
</div>
|
|
</div>
|
|
|
|
<pre>
|
|
<ol>
|
|
|
|
<li class="covered" data-hits="1" data-linenumber="1">
|
|
<span class="hits">1</span>
|
|
|
|
<code class="ruby">require 'travis/api/app'</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="2">
|
|
|
|
|
|
<code class="ruby"></code>
|
|
</li>
|
|
|
|
<li class="covered" data-hits="1" data-linenumber="3">
|
|
<span class="hits">1</span>
|
|
|
|
<code class="ruby">class Travis::Api::App</code>
|
|
</li>
|
|
|
|
<li class="covered" data-hits="1" data-linenumber="4">
|
|
<span class="hits">1</span>
|
|
|
|
<code class="ruby"> module Helpers</code>
|
|
</li>
|
|
|
|
<li class="covered" data-hits="1" data-linenumber="5">
|
|
<span class="hits">1</span>
|
|
|
|
<code class="ruby"> module Flash</code>
|
|
</li>
|
|
|
|
<li class="covered" data-hits="1" data-linenumber="6">
|
|
<span class="hits">1</span>
|
|
|
|
<code class="ruby"> def flash</code>
|
|
</li>
|
|
|
|
<li class="covered" data-hits="10" data-linenumber="7">
|
|
<span class="hits">10</span>
|
|
|
|
<code class="ruby"> @flash ||= []</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="8">
|
|
|
|
|
|
<code class="ruby"> end</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="9">
|
|
|
|
|
|
<code class="ruby"> end</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="10">
|
|
|
|
|
|
<code class="ruby"> end</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="11">
|
|
|
|
|
|
<code class="ruby">end</code>
|
|
</li>
|
|
|
|
</ol>
|
|
</pre>
|
|
</div>
|
|
|
|
<div class="source_table" id="4bc54455bbe2ec43bb23f5b569a91e4d444598b6">
|
|
<div class="header">
|
|
<h3>lib/travis/api/app/helpers/mime_types.rb</h3>
|
|
<h4><span class="red">64.29 %</span> covered</h4>
|
|
<div>
|
|
<b>14</b> relevant lines.
|
|
<span class="green"><b>9</b> lines covered</span> and
|
|
<span class="red"><b>5</b> lines missed.</span>
|
|
</div>
|
|
</div>
|
|
|
|
<pre>
|
|
<ol>
|
|
|
|
<li class="covered" data-hits="1" data-linenumber="1">
|
|
<span class="hits">1</span>
|
|
|
|
<code class="ruby">require 'travis/api/app'</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="2">
|
|
|
|
|
|
<code class="ruby"></code>
|
|
</li>
|
|
|
|
<li class="covered" data-hits="1" data-linenumber="3">
|
|
<span class="hits">1</span>
|
|
|
|
<code class="ruby">class Travis::Api::App</code>
|
|
</li>
|
|
|
|
<li class="covered" data-hits="1" data-linenumber="4">
|
|
<span class="hits">1</span>
|
|
|
|
<code class="ruby"> module Helpers</code>
|
|
</li>
|
|
|
|
<li class="covered" data-hits="1" data-linenumber="5">
|
|
<span class="hits">1</span>
|
|
|
|
<code class="ruby"> module MimeTypes</code>
|
|
</li>
|
|
|
|
<li class="covered" data-hits="1" data-linenumber="6">
|
|
<span class="hits">1</span>
|
|
|
|
<code class="ruby"> def html?</code>
|
|
</li>
|
|
|
|
<li class="missed" data-hits="0" data-linenumber="7">
|
|
|
|
|
|
<code class="ruby"> request.accept =~ %r(text/html)</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="8">
|
|
|
|
|
|
<code class="ruby"> end</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="9">
|
|
|
|
|
|
<code class="ruby"></code>
|
|
</li>
|
|
|
|
<li class="covered" data-hits="1" data-linenumber="10">
|
|
<span class="hits">1</span>
|
|
|
|
<code class="ruby"> def json?</code>
|
|
</li>
|
|
|
|
<li class="missed" data-hits="0" data-linenumber="11">
|
|
|
|
|
|
<code class="ruby"> request.accept =~ %r(application/json)</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="12">
|
|
|
|
|
|
<code class="ruby"> end</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="13">
|
|
|
|
|
|
<code class="ruby"></code>
|
|
</li>
|
|
|
|
<li class="covered" data-hits="1" data-linenumber="14">
|
|
<span class="hits">1</span>
|
|
|
|
<code class="ruby"> def xml?</code>
|
|
</li>
|
|
|
|
<li class="missed" data-hits="0" data-linenumber="15">
|
|
|
|
|
|
<code class="ruby"> request.accept =~ %r(application/xml)</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="16">
|
|
|
|
|
|
<code class="ruby"> end</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="17">
|
|
|
|
|
|
<code class="ruby"></code>
|
|
</li>
|
|
|
|
<li class="covered" data-hits="1" data-linenumber="18">
|
|
<span class="hits">1</span>
|
|
|
|
<code class="ruby"> def png?</code>
|
|
</li>
|
|
|
|
<li class="missed" data-hits="0" data-linenumber="19">
|
|
|
|
|
|
<code class="ruby"> request.accept =~ %r(image/png)</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="20">
|
|
|
|
|
|
<code class="ruby"> end</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="21">
|
|
|
|
|
|
<code class="ruby"></code>
|
|
</li>
|
|
|
|
<li class="covered" data-hits="1" data-linenumber="22">
|
|
<span class="hits">1</span>
|
|
|
|
<code class="ruby"> def atom?</code>
|
|
</li>
|
|
|
|
<li class="missed" data-hits="0" data-linenumber="23">
|
|
|
|
|
|
<code class="ruby"> request.accept =~ %r(application/atom+xml)</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="24">
|
|
|
|
|
|
<code class="ruby"> end</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="25">
|
|
|
|
|
|
<code class="ruby"> end</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="26">
|
|
|
|
|
|
<code class="ruby"> end</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="27">
|
|
|
|
|
|
<code class="ruby">end</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="28">
|
|
|
|
|
|
<code class="ruby"></code>
|
|
</li>
|
|
|
|
</ol>
|
|
</pre>
|
|
</div>
|
|
|
|
<div class="source_table" id="e5ee14c5580baf7a66bac731983db9d3bdb48996">
|
|
<div class="header">
|
|
<h3>lib/travis/api/app/helpers/respond_with.rb</h3>
|
|
<h4><span class="red">40.54 %</span> covered</h4>
|
|
<div>
|
|
<b>37</b> relevant lines.
|
|
<span class="green"><b>15</b> lines covered</span> and
|
|
<span class="red"><b>22</b> lines missed.</span>
|
|
</div>
|
|
</div>
|
|
|
|
<pre>
|
|
<ol>
|
|
|
|
<li class="covered" data-hits="1" data-linenumber="1">
|
|
<span class="hits">1</span>
|
|
|
|
<code class="ruby">require 'travis/api/app'</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="2">
|
|
|
|
|
|
<code class="ruby"></code>
|
|
</li>
|
|
|
|
<li class="covered" data-hits="1" data-linenumber="3">
|
|
<span class="hits">1</span>
|
|
|
|
<code class="ruby">class Travis::Api::App</code>
|
|
</li>
|
|
|
|
<li class="covered" data-hits="1" data-linenumber="4">
|
|
<span class="hits">1</span>
|
|
|
|
<code class="ruby"> module Helpers</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="5">
|
|
|
|
|
|
<code class="ruby"> # Allows routes to return either hashes or anything Travis::API.data can</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="6">
|
|
|
|
|
|
<code class="ruby"> # convert (in addition to the return values supported by Sinatra, of</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="7">
|
|
|
|
|
|
<code class="ruby"> # course). These values will be encoded in JSON.</code>
|
|
</li>
|
|
|
|
<li class="covered" data-hits="1" data-linenumber="8">
|
|
<span class="hits">1</span>
|
|
|
|
<code class="ruby"> module RespondWith</code>
|
|
</li>
|
|
|
|
<li class="covered" data-hits="1" data-linenumber="9">
|
|
<span class="hits">1</span>
|
|
|
|
<code class="ruby"> include Accept</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="10">
|
|
|
|
|
|
<code class="ruby"></code>
|
|
</li>
|
|
|
|
<li class="covered" data-hits="1" data-linenumber="11">
|
|
<span class="hits">1</span>
|
|
|
|
<code class="ruby"> STATUS = {</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="12">
|
|
|
|
|
|
<code class="ruby"> success: 200,</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="13">
|
|
|
|
|
|
<code class="ruby"> not_found: 404</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="14">
|
|
|
|
|
|
<code class="ruby"> }</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="15">
|
|
|
|
|
|
<code class="ruby"></code>
|
|
</li>
|
|
|
|
<li class="covered" data-hits="1" data-linenumber="16">
|
|
<span class="hits">1</span>
|
|
|
|
<code class="ruby"> def respond_with(resource, options = {})</code>
|
|
</li>
|
|
|
|
<li class="missed" data-hits="0" data-linenumber="17">
|
|
|
|
|
|
<code class="ruby"> result = respond(resource, options)</code>
|
|
</li>
|
|
|
|
<li class="missed" data-hits="0" data-linenumber="18">
|
|
|
|
|
|
<code class="ruby"> if result && response.content_type =~ /application\/json/</code>
|
|
</li>
|
|
|
|
<li class="missed" data-hits="0" data-linenumber="19">
|
|
|
|
|
|
<code class="ruby"> status STATUS[result[:result]] if result.is_a?(Hash) && result[:result].is_a?(Symbol)</code>
|
|
</li>
|
|
|
|
<li class="missed" data-hits="0" data-linenumber="20">
|
|
|
|
|
|
<code class="ruby"> result = prettify_result? ? JSON.pretty_generate(result) : result.to_json</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="21">
|
|
|
|
|
|
<code class="ruby"> end</code>
|
|
</li>
|
|
|
|
<li class="missed" data-hits="0" data-linenumber="22">
|
|
|
|
|
|
<code class="ruby"> halt result || 404</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="23">
|
|
|
|
|
|
<code class="ruby"> end</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="24">
|
|
|
|
|
|
<code class="ruby"></code>
|
|
</li>
|
|
|
|
<li class="covered" data-hits="1" data-linenumber="25">
|
|
<span class="hits">1</span>
|
|
|
|
<code class="ruby"> def body(value = nil, options = {}, &block)</code>
|
|
</li>
|
|
|
|
<li class="covered" data-hits="40" data-linenumber="26">
|
|
<span class="hits">40</span>
|
|
|
|
<code class="ruby"> value = value.to_json if value.is_a?(Hash)</code>
|
|
</li>
|
|
|
|
<li class="covered" data-hits="40" data-linenumber="27">
|
|
<span class="hits">40</span>
|
|
|
|
<code class="ruby"> super(value, &block)</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="28">
|
|
|
|
|
|
<code class="ruby"> end</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="29">
|
|
|
|
|
|
<code class="ruby"></code>
|
|
</li>
|
|
|
|
<li class="covered" data-hits="1" data-linenumber="30">
|
|
<span class="hits">1</span>
|
|
|
|
<code class="ruby"> private</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="31">
|
|
|
|
|
|
<code class="ruby"></code>
|
|
</li>
|
|
|
|
<li class="covered" data-hits="1" data-linenumber="32">
|
|
<span class="hits">1</span>
|
|
|
|
<code class="ruby"> def respond(resource, options)</code>
|
|
</li>
|
|
|
|
<li class="missed" data-hits="0" data-linenumber="33">
|
|
|
|
|
|
<code class="ruby"> resource = apply_service_responder(resource, options)</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="34">
|
|
|
|
|
|
<code class="ruby"></code>
|
|
</li>
|
|
|
|
<li class="missed" data-hits="0" data-linenumber="35">
|
|
|
|
|
|
<code class="ruby"> response = nil</code>
|
|
</li>
|
|
|
|
<li class="missed" data-hits="0" data-linenumber="36">
|
|
|
|
|
|
<code class="ruby"> acceptable_formats.find do |accept|</code>
|
|
</li>
|
|
|
|
<li class="missed" data-hits="0" data-linenumber="37">
|
|
|
|
|
|
<code class="ruby"> responders(resource, options).find do |const|</code>
|
|
</li>
|
|
|
|
<li class="missed" data-hits="0" data-linenumber="38">
|
|
|
|
|
|
<code class="ruby"> responder = const.new(self, resource, options.dup.merge(accept: accept))</code>
|
|
</li>
|
|
|
|
<li class="missed" data-hits="0" data-linenumber="39">
|
|
|
|
|
|
<code class="ruby"> response = responder.apply if responder.apply?</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="40">
|
|
|
|
|
|
<code class="ruby"> end</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="41">
|
|
|
|
|
|
<code class="ruby"> end</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="42">
|
|
|
|
|
|
<code class="ruby"></code>
|
|
</li>
|
|
|
|
<li class="missed" data-hits="0" data-linenumber="43">
|
|
|
|
|
|
<code class="ruby"> if responders = options[:responders]</code>
|
|
</li>
|
|
|
|
<li class="missed" data-hits="0" data-linenumber="44">
|
|
|
|
|
|
<code class="ruby"> responders.each do |klass|</code>
|
|
</li>
|
|
|
|
<li class="missed" data-hits="0" data-linenumber="45">
|
|
|
|
|
|
<code class="ruby"> responder = klass.new(self, response, options)</code>
|
|
</li>
|
|
|
|
<li class="missed" data-hits="0" data-linenumber="46">
|
|
|
|
|
|
<code class="ruby"> response = responder.apply if responder.apply?</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="47">
|
|
|
|
|
|
<code class="ruby"> end</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="48">
|
|
|
|
|
|
<code class="ruby"> end</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="49">
|
|
|
|
|
|
<code class="ruby"></code>
|
|
</li>
|
|
|
|
<li class="missed" data-hits="0" data-linenumber="50">
|
|
|
|
|
|
<code class="ruby"> response || (resource ? error(406) : error(404))</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="51">
|
|
|
|
|
|
<code class="ruby"> end</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="52">
|
|
|
|
|
|
<code class="ruby"></code>
|
|
</li>
|
|
|
|
<li class="covered" data-hits="1" data-linenumber="53">
|
|
<span class="hits">1</span>
|
|
|
|
<code class="ruby"> def prettify_result?</code>
|
|
</li>
|
|
|
|
<li class="missed" data-hits="0" data-linenumber="54">
|
|
|
|
|
|
<code class="ruby"> !params[:pretty].nil? && (params[:pretty].downcase == 'true' || params[:pretty].to_i > 0)</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="55">
|
|
|
|
|
|
<code class="ruby"> end</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="56">
|
|
|
|
|
|
<code class="ruby"></code>
|
|
</li>
|
|
|
|
<li class="covered" data-hits="1" data-linenumber="57">
|
|
<span class="hits">1</span>
|
|
|
|
<code class="ruby"> def apply_service_responder(resource, options)</code>
|
|
</li>
|
|
|
|
<li class="missed" data-hits="0" data-linenumber="58">
|
|
|
|
|
|
<code class="ruby"> responder = Responders::Service.new(self, resource, options)</code>
|
|
</li>
|
|
|
|
<li class="missed" data-hits="0" data-linenumber="59">
|
|
|
|
|
|
<code class="ruby"> resource = responder.apply if responder.apply?</code>
|
|
</li>
|
|
|
|
<li class="missed" data-hits="0" data-linenumber="60">
|
|
|
|
|
|
<code class="ruby"> resource</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="61">
|
|
|
|
|
|
<code class="ruby"> end</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="62">
|
|
|
|
|
|
<code class="ruby"></code>
|
|
</li>
|
|
|
|
<li class="covered" data-hits="1" data-linenumber="63">
|
|
<span class="hits">1</span>
|
|
|
|
<code class="ruby"> def responders(resource, options)</code>
|
|
</li>
|
|
|
|
<li class="missed" data-hits="0" data-linenumber="64">
|
|
|
|
|
|
<code class="ruby"> [:Json, :Atom, :Image, :Xml, :Plain, :Badge].map do |name|</code>
|
|
</li>
|
|
|
|
<li class="missed" data-hits="0" data-linenumber="65">
|
|
|
|
|
|
<code class="ruby"> Responders.const_get(name)</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="66">
|
|
|
|
|
|
<code class="ruby"> end</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="67">
|
|
|
|
|
|
<code class="ruby"> end</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="68">
|
|
|
|
|
|
<code class="ruby"> end</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="69">
|
|
|
|
|
|
<code class="ruby"> end</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="70">
|
|
|
|
|
|
<code class="ruby">end</code>
|
|
</li>
|
|
|
|
</ol>
|
|
</pre>
|
|
</div>
|
|
|
|
<div class="source_table" id="abcb6fbe07ff5db52c5716e39eb648ef96550296">
|
|
<div class="header">
|
|
<h3>lib/travis/api/app/middleware.rb</h3>
|
|
<h4><span class="green">100.0 %</span> covered</h4>
|
|
<div>
|
|
<b>3</b> relevant lines.
|
|
<span class="green"><b>3</b> lines covered</span> and
|
|
<span class="red"><b>0</b> lines missed.</span>
|
|
</div>
|
|
</div>
|
|
|
|
<pre>
|
|
<ol>
|
|
|
|
<li class="covered" data-hits="1" data-linenumber="1">
|
|
<span class="hits">1</span>
|
|
|
|
<code class="ruby">require 'travis/api/app'</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="2">
|
|
|
|
|
|
<code class="ruby"></code>
|
|
</li>
|
|
|
|
<li class="covered" data-hits="1" data-linenumber="3">
|
|
<span class="hits">1</span>
|
|
|
|
<code class="ruby">class Travis::Api::App</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="4">
|
|
|
|
|
|
<code class="ruby"> # Superclass for all middleware.</code>
|
|
</li>
|
|
|
|
<li class="covered" data-hits="1" data-linenumber="5">
|
|
<span class="hits">1</span>
|
|
|
|
<code class="ruby"> class Middleware < Base</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="6">
|
|
|
|
|
|
<code class="ruby"> end</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="7">
|
|
|
|
|
|
<code class="ruby">end</code>
|
|
</li>
|
|
|
|
</ol>
|
|
</pre>
|
|
</div>
|
|
|
|
<div class="source_table" id="fafd069a2bcef83fff5f536d88402c883f3cdc31">
|
|
<div class="header">
|
|
<h3>lib/travis/api/app/middleware/logging.rb</h3>
|
|
<h4><span class="green">100.0 %</span> covered</h4>
|
|
<div>
|
|
<b>8</b> relevant lines.
|
|
<span class="green"><b>8</b> lines covered</span> and
|
|
<span class="red"><b>0</b> lines missed.</span>
|
|
</div>
|
|
</div>
|
|
|
|
<pre>
|
|
<ol>
|
|
|
|
<li class="covered" data-hits="1" data-linenumber="1">
|
|
<span class="hits">1</span>
|
|
|
|
<code class="ruby">require 'travis/api/app'</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="2">
|
|
|
|
|
|
<code class="ruby"></code>
|
|
</li>
|
|
|
|
<li class="covered" data-hits="1" data-linenumber="3">
|
|
<span class="hits">1</span>
|
|
|
|
<code class="ruby">class Travis::Api::App</code>
|
|
</li>
|
|
|
|
<li class="covered" data-hits="1" data-linenumber="4">
|
|
<span class="hits">1</span>
|
|
|
|
<code class="ruby"> class Middleware</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="5">
|
|
|
|
|
|
<code class="ruby"> # Makes sure we use Travis.logger everywhere.</code>
|
|
</li>
|
|
|
|
<li class="covered" data-hits="1" data-linenumber="6">
|
|
<span class="hits">1</span>
|
|
|
|
<code class="ruby"> class Logging < Middleware</code>
|
|
</li>
|
|
|
|
<li class="covered" data-hits="2" data-linenumber="7">
|
|
<span class="hits">2</span>
|
|
|
|
<code class="ruby"> set(:setup) { ActiveRecord::Base.logger = Travis.logger }</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="8">
|
|
|
|
|
|
<code class="ruby"></code>
|
|
</li>
|
|
|
|
<li class="covered" data-hits="1" data-linenumber="9">
|
|
<span class="hits">1</span>
|
|
|
|
<code class="ruby"> before do</code>
|
|
</li>
|
|
|
|
<li class="covered" data-hits="23" data-linenumber="10">
|
|
<span class="hits">23</span>
|
|
|
|
<code class="ruby"> env['rack.logger'] = Travis.logger</code>
|
|
</li>
|
|
|
|
<li class="covered" data-hits="23" data-linenumber="11">
|
|
<span class="hits">23</span>
|
|
|
|
<code class="ruby"> env['rack.errors'] = Travis.logger.instance_variable_get(:@logdev).dev rescue nil</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="12">
|
|
|
|
|
|
<code class="ruby"> end</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="13">
|
|
|
|
|
|
<code class="ruby"> end</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="14">
|
|
|
|
|
|
<code class="ruby"> end</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="15">
|
|
|
|
|
|
<code class="ruby">end</code>
|
|
</li>
|
|
|
|
</ol>
|
|
</pre>
|
|
</div>
|
|
|
|
<div class="source_table" id="7670839fd3d16bec4a807509898851298c771968">
|
|
<div class="header">
|
|
<h3>lib/travis/api/app/middleware/metriks.rb</h3>
|
|
<h4><span class="red">77.42 %</span> covered</h4>
|
|
<div>
|
|
<b>31</b> relevant lines.
|
|
<span class="green"><b>24</b> lines covered</span> and
|
|
<span class="red"><b>7</b> lines missed.</span>
|
|
</div>
|
|
</div>
|
|
|
|
<pre>
|
|
<ol>
|
|
|
|
<li class="covered" data-hits="1" data-linenumber="1">
|
|
<span class="hits">1</span>
|
|
|
|
<code class="ruby">require 'travis/api/app'</code>
|
|
</li>
|
|
|
|
<li class="covered" data-hits="1" data-linenumber="2">
|
|
<span class="hits">1</span>
|
|
|
|
<code class="ruby">require 'metriks'</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="3">
|
|
|
|
|
|
<code class="ruby"></code>
|
|
</li>
|
|
|
|
<li class="covered" data-hits="1" data-linenumber="4">
|
|
<span class="hits">1</span>
|
|
|
|
<code class="ruby">class Travis::Api::App</code>
|
|
</li>
|
|
|
|
<li class="covered" data-hits="1" data-linenumber="5">
|
|
<span class="hits">1</span>
|
|
|
|
<code class="ruby"> class Middleware</code>
|
|
</li>
|
|
|
|
<li class="covered" data-hits="1" data-linenumber="6">
|
|
<span class="hits">1</span>
|
|
|
|
<code class="ruby"> class Metriks < Middleware</code>
|
|
</li>
|
|
|
|
<li class="covered" data-hits="1" data-linenumber="7">
|
|
<span class="hits">1</span>
|
|
|
|
<code class="ruby"> include Helpers::Accept</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="8">
|
|
|
|
|
|
<code class="ruby"></code>
|
|
</li>
|
|
|
|
<li class="covered" data-hits="1" data-linenumber="9">
|
|
<span class="hits">1</span>
|
|
|
|
<code class="ruby"> before do</code>
|
|
</li>
|
|
|
|
<li class="covered" data-hits="23" data-linenumber="10">
|
|
<span class="hits">23</span>
|
|
|
|
<code class="ruby"> env['metriks.request.start'] ||= Time.now.utc</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="11">
|
|
|
|
|
|
<code class="ruby"> end</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="12">
|
|
|
|
|
|
<code class="ruby"></code>
|
|
</li>
|
|
|
|
<li class="covered" data-hits="1" data-linenumber="13">
|
|
<span class="hits">1</span>
|
|
|
|
<code class="ruby"> after do</code>
|
|
</li>
|
|
|
|
<li class="covered" data-hits="23" data-linenumber="14">
|
|
<span class="hits">23</span>
|
|
|
|
<code class="ruby"> if queue_start = time(env['HTTP_X_QUEUE_START']) || time(env['HTTP_X_REQUEST_START'])</code>
|
|
</li>
|
|
|
|
<li class="missed" data-hits="0" data-linenumber="15">
|
|
|
|
|
|
<code class="ruby"> time = env['metriks.request.start'] - queue_start</code>
|
|
</li>
|
|
|
|
<li class="missed" data-hits="0" data-linenumber="16">
|
|
|
|
|
|
<code class="ruby"> ::Metriks.timer('api.request_queue').update(time)</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="17">
|
|
|
|
|
|
<code class="ruby"> end</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="18">
|
|
|
|
|
|
<code class="ruby"></code>
|
|
</li>
|
|
|
|
<li class="covered" data-hits="23" data-linenumber="19">
|
|
<span class="hits">23</span>
|
|
|
|
<code class="ruby"> if response.status < 400</code>
|
|
</li>
|
|
|
|
<li class="covered" data-hits="13" data-linenumber="20">
|
|
<span class="hits">13</span>
|
|
|
|
<code class="ruby"> time = Time.now.utc - env['metriks.request.start']</code>
|
|
</li>
|
|
|
|
<li class="covered" data-hits="13" data-linenumber="21">
|
|
<span class="hits">13</span>
|
|
|
|
<code class="ruby"> if headers['X-Pattern'].present? and headers['X-Endpoint'].present?</code>
|
|
</li>
|
|
|
|
<li class="missed" data-hits="0" data-linenumber="22">
|
|
|
|
|
|
<code class="ruby"> name = "#{(headers['X-Endpoint'].split("::", 5).last.gsub(/::/, ".")).downcase}#{headers['X-Pattern'].gsub(/[\/]/, '.').gsub(/[:\?\*]/, "_")}"</code>
|
|
</li>
|
|
|
|
<li class="missed" data-hits="0" data-linenumber="23">
|
|
|
|
|
|
<code class="ruby"> metric = "api.request.endpoint.#{name}"</code>
|
|
</li>
|
|
|
|
<li class="missed" data-hits="0" data-linenumber="24">
|
|
|
|
|
|
<code class="ruby"> ::Metriks.timer(metric).update(time)</code>
|
|
</li>
|
|
|
|
<li class="missed" data-hits="0" data-linenumber="25">
|
|
|
|
|
|
<code class="ruby"> ::Metriks.timer('api.requests').update(time)</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="26">
|
|
|
|
|
|
<code class="ruby"> end</code>
|
|
</li>
|
|
|
|
<li class="covered" data-hits="13" data-linenumber="27">
|
|
<span class="hits">13</span>
|
|
|
|
<code class="ruby"> if content_type.present?</code>
|
|
</li>
|
|
|
|
<li class="covered" data-hits="13" data-linenumber="28">
|
|
<span class="hits">13</span>
|
|
|
|
<code class="ruby"> type = content_type.split(';', 2).first.to_s.gsub(/\s/,'').gsub(/[^A-z\/]+/, '_').gsub('/', '.')</code>
|
|
</li>
|
|
|
|
<li class="covered" data-hits="13" data-linenumber="29">
|
|
<span class="hits">13</span>
|
|
|
|
<code class="ruby"> ::Metriks.timer("api.request.content_type.#{type}").update(time)</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="30">
|
|
|
|
|
|
<code class="ruby"> else</code>
|
|
</li>
|
|
|
|
<li class="missed" data-hits="0" data-linenumber="31">
|
|
|
|
|
|
<code class="ruby"> ::Metriks.timer("api.request.content_type.none").update(time)</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="32">
|
|
|
|
|
|
<code class="ruby"> end</code>
|
|
</li>
|
|
|
|
<li class="covered" data-hits="13" data-linenumber="33">
|
|
<span class="hits">13</span>
|
|
|
|
<code class="ruby"> ::Metriks.meter("api.request.#{request.request_method.downcase}").mark</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="34">
|
|
|
|
|
|
<code class="ruby"> end</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="35">
|
|
|
|
|
|
<code class="ruby"></code>
|
|
</li>
|
|
|
|
<li class="covered" data-hits="23" data-linenumber="36">
|
|
<span class="hits">23</span>
|
|
|
|
<code class="ruby"> ::Metriks.meter("api.request.status.#{response.status.to_s[0]}").mark</code>
|
|
</li>
|
|
|
|
<li class="covered" data-hits="23" data-linenumber="37">
|
|
<span class="hits">23</span>
|
|
|
|
<code class="ruby"> ::Metriks.meter("api.request.version.#{accept_version}").mark</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="38">
|
|
|
|
|
|
<code class="ruby"> end</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="39">
|
|
|
|
|
|
<code class="ruby"></code>
|
|
</li>
|
|
|
|
<li class="covered" data-hits="1" data-linenumber="40">
|
|
<span class="hits">1</span>
|
|
|
|
<code class="ruby"> def time(value)</code>
|
|
</li>
|
|
|
|
<li class="covered" data-hits="46" data-linenumber="41">
|
|
<span class="hits">46</span>
|
|
|
|
<code class="ruby"> value = value.to_f</code>
|
|
</li>
|
|
|
|
<li class="covered" data-hits="46" data-linenumber="42">
|
|
<span class="hits">46</span>
|
|
|
|
<code class="ruby"> start = env['metriks.request.start'].to_f</code>
|
|
</li>
|
|
|
|
<li class="covered" data-hits="46" data-linenumber="43">
|
|
<span class="hits">46</span>
|
|
|
|
<code class="ruby"> value /= 1000 while value > start</code>
|
|
</li>
|
|
|
|
<li class="covered" data-hits="46" data-linenumber="44">
|
|
<span class="hits">46</span>
|
|
|
|
<code class="ruby"> Time.at(value) if value > 946684800</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="45">
|
|
|
|
|
|
<code class="ruby"> end</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="46">
|
|
|
|
|
|
<code class="ruby"> end</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="47">
|
|
|
|
|
|
<code class="ruby"> end</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="48">
|
|
|
|
|
|
<code class="ruby">end</code>
|
|
</li>
|
|
|
|
</ol>
|
|
</pre>
|
|
</div>
|
|
|
|
<div class="source_table" id="fe2923d329420298ae0fb9e1101c22a8b601d151">
|
|
<div class="header">
|
|
<h3>lib/travis/api/app/middleware/rewrite.rb</h3>
|
|
<h4><span class="red">78.57 %</span> covered</h4>
|
|
<div>
|
|
<b>42</b> relevant lines.
|
|
<span class="green"><b>33</b> lines covered</span> and
|
|
<span class="red"><b>9</b> lines missed.</span>
|
|
</div>
|
|
</div>
|
|
|
|
<pre>
|
|
<ol>
|
|
|
|
<li class="covered" data-hits="1" data-linenumber="1">
|
|
<span class="hits">1</span>
|
|
|
|
<code class="ruby">require 'travis/api/app'</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="2">
|
|
|
|
|
|
<code class="ruby"></code>
|
|
</li>
|
|
|
|
<li class="covered" data-hits="1" data-linenumber="3">
|
|
<span class="hits">1</span>
|
|
|
|
<code class="ruby">class Travis::Api::App</code>
|
|
</li>
|
|
|
|
<li class="covered" data-hits="1" data-linenumber="4">
|
|
<span class="hits">1</span>
|
|
|
|
<code class="ruby"> class Middleware</code>
|
|
</li>
|
|
|
|
<li class="covered" data-hits="1" data-linenumber="5">
|
|
<span class="hits">1</span>
|
|
|
|
<code class="ruby"> class Rewrite < Middleware</code>
|
|
</li>
|
|
|
|
<li class="covered" data-hits="1" data-linenumber="6">
|
|
<span class="hits">1</span>
|
|
|
|
<code class="ruby"> FORMAT = %r(\.(json|xml|png|txt|atom|svg)$)</code>
|
|
</li>
|
|
|
|
<li class="covered" data-hits="1" data-linenumber="7">
|
|
<span class="hits">1</span>
|
|
|
|
<code class="ruby"> V1_REPO_URL = %r(^(/[^/]+/[^/]+(?:/builds(?:/[\d]+)?|/cc)?)$)</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="8">
|
|
|
|
|
|
<code class="ruby"></code>
|
|
</li>
|
|
|
|
<li class="covered" data-hits="1" data-linenumber="9">
|
|
<span class="hits">1</span>
|
|
|
|
<code class="ruby"> helpers :accept</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="10">
|
|
|
|
|
|
<code class="ruby"></code>
|
|
</li>
|
|
|
|
<li class="covered" data-hits="2" data-linenumber="11">
|
|
<span class="hits">2</span>
|
|
|
|
<code class="ruby"> set(:setup) { ActiveRecord::Base.logger = Travis.logger }</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="12">
|
|
|
|
|
|
<code class="ruby"></code>
|
|
</li>
|
|
|
|
<li class="covered" data-hits="1" data-linenumber="13">
|
|
<span class="hits">1</span>
|
|
|
|
<code class="ruby"> before do</code>
|
|
</li>
|
|
|
|
<li class="covered" data-hits="10" data-linenumber="14">
|
|
<span class="hits">10</span>
|
|
|
|
<code class="ruby"> extract_format</code>
|
|
</li>
|
|
|
|
<li class="covered" data-hits="10" data-linenumber="15">
|
|
<span class="hits">10</span>
|
|
|
|
<code class="ruby"> rewrite_v1_repo_segment if v1? || xml?</code>
|
|
</li>
|
|
|
|
<li class="covered" data-hits="10" data-linenumber="16">
|
|
<span class="hits">10</span>
|
|
|
|
<code class="ruby"> rewrite_v1_named_repo_image_path if png? || svg?</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="17">
|
|
|
|
|
|
<code class="ruby"> end</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="18">
|
|
|
|
|
|
<code class="ruby"></code>
|
|
</li>
|
|
|
|
<li class="covered" data-hits="1" data-linenumber="19">
|
|
<span class="hits">1</span>
|
|
|
|
<code class="ruby"> after do</code>
|
|
</li>
|
|
|
|
<li class="covered" data-hits="10" data-linenumber="20">
|
|
<span class="hits">10</span>
|
|
|
|
<code class="ruby"> redirect_v1_named_repo_path if (v1? || xml?) && not_found?</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="21">
|
|
|
|
|
|
<code class="ruby"> end</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="22">
|
|
|
|
|
|
<code class="ruby"></code>
|
|
</li>
|
|
|
|
<li class="covered" data-hits="1" data-linenumber="23">
|
|
<span class="hits">1</span>
|
|
|
|
<code class="ruby"> private</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="24">
|
|
|
|
|
|
<code class="ruby"></code>
|
|
</li>
|
|
|
|
<li class="covered" data-hits="1" data-linenumber="25">
|
|
<span class="hits">1</span>
|
|
|
|
<code class="ruby"> def extract_format</code>
|
|
</li>
|
|
|
|
<li class="covered" data-hits="10" data-linenumber="26">
|
|
<span class="hits">10</span>
|
|
|
|
<code class="ruby"> env['PATH_INFO'].sub!(FORMAT, '')</code>
|
|
</li>
|
|
|
|
<li class="covered" data-hits="10" data-linenumber="27">
|
|
<span class="hits">10</span>
|
|
|
|
<code class="ruby"> env['travis.format_from_path'] = $1</code>
|
|
</li>
|
|
|
|
<li class="covered" data-hits="10" data-linenumber="28">
|
|
<span class="hits">10</span>
|
|
|
|
<code class="ruby"> env['travis.format'] = $1 || accept_format</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="29">
|
|
|
|
|
|
<code class="ruby"> end</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="30">
|
|
|
|
|
|
<code class="ruby"></code>
|
|
</li>
|
|
|
|
<li class="covered" data-hits="1" data-linenumber="31">
|
|
<span class="hits">1</span>
|
|
|
|
<code class="ruby"> def rewrite_v1_repo_segment</code>
|
|
</li>
|
|
|
|
<li class="covered" data-hits="10" data-linenumber="32">
|
|
<span class="hits">10</span>
|
|
|
|
<code class="ruby"> env['PATH_INFO'].sub!(%r(^/repositories), '/repos')</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="33">
|
|
|
|
|
|
<code class="ruby"> end</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="34">
|
|
|
|
|
|
<code class="ruby"></code>
|
|
</li>
|
|
|
|
<li class="covered" data-hits="1" data-linenumber="35">
|
|
<span class="hits">1</span>
|
|
|
|
<code class="ruby"> def rewrite_v1_named_repo_image_path</code>
|
|
</li>
|
|
|
|
<li class="missed" data-hits="0" data-linenumber="36">
|
|
|
|
|
|
<code class="ruby"> env['PATH_INFO'].sub!(V1_REPO_URL) { "/repos#{$1}" }</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="37">
|
|
|
|
|
|
<code class="ruby"> end</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="38">
|
|
|
|
|
|
<code class="ruby"></code>
|
|
</li>
|
|
|
|
<li class="covered" data-hits="1" data-linenumber="39">
|
|
<span class="hits">1</span>
|
|
|
|
<code class="ruby"> def redirect_v1_named_repo_path</code>
|
|
</li>
|
|
|
|
<li class="covered" data-hits="10" data-linenumber="40">
|
|
<span class="hits">10</span>
|
|
|
|
<code class="ruby"> if request.path =~ V1_REPO_URL</code>
|
|
</li>
|
|
|
|
<li class="missed" data-hits="0" data-linenumber="41">
|
|
|
|
|
|
<code class="ruby"> force_redirect("/repositories#{$1}.#{env['travis.format']}")</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="42">
|
|
|
|
|
|
<code class="ruby"> end</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="43">
|
|
|
|
|
|
<code class="ruby"> end</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="44">
|
|
|
|
|
|
<code class="ruby"></code>
|
|
</li>
|
|
|
|
<li class="covered" data-hits="1" data-linenumber="45">
|
|
<span class="hits">1</span>
|
|
|
|
<code class="ruby"> def force_redirect(path)</code>
|
|
</li>
|
|
|
|
<li class="missed" data-hits="0" data-linenumber="46">
|
|
|
|
|
|
<code class="ruby"> path += "?#{request.query_string}" unless request.query_string.empty?</code>
|
|
</li>
|
|
|
|
<li class="missed" data-hits="0" data-linenumber="47">
|
|
|
|
|
|
<code class="ruby"> response.body = ''</code>
|
|
</li>
|
|
|
|
<li class="missed" data-hits="0" data-linenumber="48">
|
|
|
|
|
|
<code class="ruby"> response['Content-Length'] = '0'</code>
|
|
</li>
|
|
|
|
<li class="missed" data-hits="0" data-linenumber="49">
|
|
|
|
|
|
<code class="ruby"> response['Content-Type'] = ''</code>
|
|
</li>
|
|
|
|
<li class="missed" data-hits="0" data-linenumber="50">
|
|
|
|
|
|
<code class="ruby"> redirect(path)</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="51">
|
|
|
|
|
|
<code class="ruby"> end</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="52">
|
|
|
|
|
|
<code class="ruby"></code>
|
|
</li>
|
|
|
|
<li class="covered" data-hits="1" data-linenumber="53">
|
|
<span class="hits">1</span>
|
|
|
|
<code class="ruby"> def png?</code>
|
|
</li>
|
|
|
|
<li class="covered" data-hits="10" data-linenumber="54">
|
|
<span class="hits">10</span>
|
|
|
|
<code class="ruby"> env['travis.format'] == 'png'</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="55">
|
|
|
|
|
|
<code class="ruby"> end</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="56">
|
|
|
|
|
|
<code class="ruby"></code>
|
|
</li>
|
|
|
|
<li class="covered" data-hits="1" data-linenumber="57">
|
|
<span class="hits">1</span>
|
|
|
|
<code class="ruby"> def svg?</code>
|
|
</li>
|
|
|
|
<li class="covered" data-hits="10" data-linenumber="58">
|
|
<span class="hits">10</span>
|
|
|
|
<code class="ruby"> env['travis.format'] == 'svg'</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="59">
|
|
|
|
|
|
<code class="ruby"> end</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="60">
|
|
|
|
|
|
<code class="ruby"></code>
|
|
</li>
|
|
|
|
<li class="covered" data-hits="1" data-linenumber="61">
|
|
<span class="hits">1</span>
|
|
|
|
<code class="ruby"> def xml?</code>
|
|
</li>
|
|
|
|
<li class="missed" data-hits="0" data-linenumber="62">
|
|
|
|
|
|
<code class="ruby"> env['travis.format'] == 'xml'</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="63">
|
|
|
|
|
|
<code class="ruby"> end</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="64">
|
|
|
|
|
|
<code class="ruby"></code>
|
|
</li>
|
|
|
|
<li class="covered" data-hits="1" data-linenumber="65">
|
|
<span class="hits">1</span>
|
|
|
|
<code class="ruby"> def atom?</code>
|
|
</li>
|
|
|
|
<li class="missed" data-hits="0" data-linenumber="66">
|
|
|
|
|
|
<code class="ruby"> env['travis.format'] == 'atom'</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="67">
|
|
|
|
|
|
<code class="ruby"> end</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="68">
|
|
|
|
|
|
<code class="ruby"></code>
|
|
</li>
|
|
|
|
<li class="covered" data-hits="1" data-linenumber="69">
|
|
<span class="hits">1</span>
|
|
|
|
<code class="ruby"> def v1?</code>
|
|
</li>
|
|
|
|
<li class="covered" data-hits="20" data-linenumber="70">
|
|
<span class="hits">20</span>
|
|
|
|
<code class="ruby"> accept_version == 'v1'</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="71">
|
|
|
|
|
|
<code class="ruby"> end</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="72">
|
|
|
|
|
|
<code class="ruby"> end</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="73">
|
|
|
|
|
|
<code class="ruby"> end</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="74">
|
|
|
|
|
|
<code class="ruby">end</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="75">
|
|
|
|
|
|
<code class="ruby"></code>
|
|
</li>
|
|
|
|
</ol>
|
|
</pre>
|
|
</div>
|
|
|
|
<div class="source_table" id="26dd70a212f3b2cbf26d11a0b7f29ee3dec679c3">
|
|
<div class="header">
|
|
<h3>lib/travis/api/app/middleware/scope_check.rb</h3>
|
|
<h4><span class="green">92.59 %</span> covered</h4>
|
|
<div>
|
|
<b>27</b> relevant lines.
|
|
<span class="green"><b>25</b> lines covered</span> and
|
|
<span class="red"><b>2</b> lines missed.</span>
|
|
</div>
|
|
</div>
|
|
|
|
<pre>
|
|
<ol>
|
|
|
|
<li class="covered" data-hits="1" data-linenumber="1">
|
|
<span class="hits">1</span>
|
|
|
|
<code class="ruby">require 'travis/api/app'</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="2">
|
|
|
|
|
|
<code class="ruby"></code>
|
|
</li>
|
|
|
|
<li class="covered" data-hits="1" data-linenumber="3">
|
|
<span class="hits">1</span>
|
|
|
|
<code class="ruby">class Travis::Api::App</code>
|
|
</li>
|
|
|
|
<li class="covered" data-hits="1" data-linenumber="4">
|
|
<span class="hits">1</span>
|
|
|
|
<code class="ruby"> class Middleware</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="5">
|
|
|
|
|
|
<code class="ruby"> # Checks access tokens and sets appropriate scopes.</code>
|
|
</li>
|
|
|
|
<li class="covered" data-hits="1" data-linenumber="6">
|
|
<span class="hits">1</span>
|
|
|
|
<code class="ruby"> class ScopeCheck < Middleware</code>
|
|
</li>
|
|
|
|
<li class="covered" data-hits="1" data-linenumber="7">
|
|
<span class="hits">1</span>
|
|
|
|
<code class="ruby"> before do</code>
|
|
</li>
|
|
|
|
<li class="covered" data-hits="23" data-linenumber="8">
|
|
<span class="hits">23</span>
|
|
|
|
<code class="ruby"> next unless token</code>
|
|
</li>
|
|
|
|
<li class="covered" data-hits="4" data-linenumber="9">
|
|
<span class="hits">4</span>
|
|
|
|
<code class="ruby"> access_token = AccessToken.find_by_token(token)</code>
|
|
</li>
|
|
|
|
<li class="covered" data-hits="4" data-linenumber="10">
|
|
<span class="hits">4</span>
|
|
|
|
<code class="ruby"> halt 403, 'access denied' unless access_token</code>
|
|
</li>
|
|
|
|
<li class="covered" data-hits="4" data-linenumber="11">
|
|
<span class="hits">4</span>
|
|
|
|
<code class="ruby"> env['travis.access_token'] = access_token</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="12">
|
|
|
|
|
|
<code class="ruby"> end</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="13">
|
|
|
|
|
|
<code class="ruby"></code>
|
|
</li>
|
|
|
|
<li class="covered" data-hits="1" data-linenumber="14">
|
|
<span class="hits">1</span>
|
|
|
|
<code class="ruby"> after do</code>
|
|
</li>
|
|
|
|
<li class="covered" data-hits="23" data-linenumber="15">
|
|
<span class="hits">23</span>
|
|
|
|
<code class="ruby"> headers['X-OAuth-Scopes'] ||= begin</code>
|
|
</li>
|
|
|
|
<li class="covered" data-hits="23" data-linenumber="16">
|
|
<span class="hits">23</span>
|
|
|
|
<code class="ruby"> scopes = Array(env['travis.access_token'].try(:scopes))</code>
|
|
</li>
|
|
|
|
<li class="covered" data-hits="23" data-linenumber="17">
|
|
<span class="hits">23</span>
|
|
|
|
<code class="ruby"> scopes.map(&:to_s).join(',')</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="18">
|
|
|
|
|
|
<code class="ruby"> end</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="19">
|
|
|
|
|
|
<code class="ruby"> end</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="20">
|
|
|
|
|
|
<code class="ruby"></code>
|
|
</li>
|
|
|
|
<li class="covered" data-hits="1" data-linenumber="21">
|
|
<span class="hits">1</span>
|
|
|
|
<code class="ruby"> def token</code>
|
|
</li>
|
|
|
|
<li class="covered" data-hits="27" data-linenumber="22">
|
|
<span class="hits">27</span>
|
|
|
|
<code class="ruby"> @token ||= header_token || query_token || travis_token</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="23">
|
|
|
|
|
|
<code class="ruby"> end</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="24">
|
|
|
|
|
|
<code class="ruby"></code>
|
|
</li>
|
|
|
|
<li class="covered" data-hits="1" data-linenumber="25">
|
|
<span class="hits">1</span>
|
|
|
|
<code class="ruby"> private</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="26">
|
|
|
|
|
|
<code class="ruby"></code>
|
|
</li>
|
|
|
|
<li class="covered" data-hits="1" data-linenumber="27">
|
|
<span class="hits">1</span>
|
|
|
|
<code class="ruby"> def travis_token</code>
|
|
</li>
|
|
|
|
<li class="covered" data-hits="19" data-linenumber="28">
|
|
<span class="hits">19</span>
|
|
|
|
<code class="ruby"> return unless token = params[:token]</code>
|
|
</li>
|
|
|
|
<li class="missed" data-hits="0" data-linenumber="29">
|
|
|
|
|
|
<code class="ruby"> AccessToken.for_travis_token(token) || ""</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="30">
|
|
|
|
|
|
<code class="ruby"> end</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="31">
|
|
|
|
|
|
<code class="ruby"></code>
|
|
</li>
|
|
|
|
<li class="covered" data-hits="1" data-linenumber="32">
|
|
<span class="hits">1</span>
|
|
|
|
<code class="ruby"> def query_token</code>
|
|
</li>
|
|
|
|
<li class="covered" data-hits="19" data-linenumber="33">
|
|
<span class="hits">19</span>
|
|
|
|
<code class="ruby"> params[:access_token] if params[:access_token] and not params[:access_token].empty?</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="34">
|
|
|
|
|
|
<code class="ruby"> end</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="35">
|
|
|
|
|
|
<code class="ruby"></code>
|
|
</li>
|
|
|
|
<li class="covered" data-hits="1" data-linenumber="36">
|
|
<span class="hits">1</span>
|
|
|
|
<code class="ruby"> def header_token</code>
|
|
</li>
|
|
|
|
<li class="covered" data-hits="23" data-linenumber="37">
|
|
<span class="hits">23</span>
|
|
|
|
<code class="ruby"> type, payload = env['HTTP_AUTHORIZATION'].to_s.split(" ", 2)</code>
|
|
</li>
|
|
|
|
<li class="covered" data-hits="23" data-linenumber="38">
|
|
<span class="hits">23</span>
|
|
|
|
<code class="ruby"> return if payload.nil? or payload.empty?</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="39">
|
|
|
|
|
|
<code class="ruby"></code>
|
|
</li>
|
|
|
|
<li class="covered" data-hits="10" data-linenumber="40">
|
|
<span class="hits">10</span>
|
|
|
|
<code class="ruby"> case type.downcase</code>
|
|
</li>
|
|
|
|
<li class="missed" data-hits="0" data-linenumber="41">
|
|
|
|
|
|
<code class="ruby"> when 'basic' then payload.unpack("m").first.split(':', 2).first</code>
|
|
</li>
|
|
|
|
<li class="covered" data-hits="4" data-linenumber="42">
|
|
<span class="hits">4</span>
|
|
|
|
<code class="ruby"> when 'token' then payload.gsub(/^"(.+)"$/, '\1')</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="43">
|
|
|
|
|
|
<code class="ruby"> end</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="44">
|
|
|
|
|
|
<code class="ruby"> end</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="45">
|
|
|
|
|
|
<code class="ruby"> end</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="46">
|
|
|
|
|
|
<code class="ruby"> end</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="47">
|
|
|
|
|
|
<code class="ruby">end</code>
|
|
</li>
|
|
|
|
</ol>
|
|
</pre>
|
|
</div>
|
|
|
|
<div class="source_table" id="57848e06570d6ebc2e75aad01bea70082a1c55f4">
|
|
<div class="header">
|
|
<h3>lib/travis/api/app/middleware/user_agent_tracker.rb</h3>
|
|
<h4><span class="red">40.0 %</span> covered</h4>
|
|
<div>
|
|
<b>35</b> relevant lines.
|
|
<span class="green"><b>14</b> lines covered</span> and
|
|
<span class="red"><b>21</b> lines missed.</span>
|
|
</div>
|
|
</div>
|
|
|
|
<pre>
|
|
<ol>
|
|
|
|
<li class="covered" data-hits="1" data-linenumber="1">
|
|
<span class="hits">1</span>
|
|
|
|
<code class="ruby">require 'travis/api/app'</code>
|
|
</li>
|
|
|
|
<li class="covered" data-hits="1" data-linenumber="2">
|
|
<span class="hits">1</span>
|
|
|
|
<code class="ruby">require 'useragent'</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="3">
|
|
|
|
|
|
<code class="ruby"></code>
|
|
</li>
|
|
|
|
<li class="covered" data-hits="1" data-linenumber="4">
|
|
<span class="hits">1</span>
|
|
|
|
<code class="ruby">class Travis::Api::App</code>
|
|
</li>
|
|
|
|
<li class="covered" data-hits="1" data-linenumber="5">
|
|
<span class="hits">1</span>
|
|
|
|
<code class="ruby"> class Middleware</code>
|
|
</li>
|
|
|
|
<li class="covered" data-hits="1" data-linenumber="6">
|
|
<span class="hits">1</span>
|
|
|
|
<code class="ruby"> class UserAgentTracker < Middleware</code>
|
|
</li>
|
|
|
|
<li class="covered" data-hits="1" data-linenumber="7">
|
|
<span class="hits">1</span>
|
|
|
|
<code class="ruby"> WEB_BROWSERS = [</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="8">
|
|
|
|
|
|
<code class="ruby"> "Internet Explorer",</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="9">
|
|
|
|
|
|
<code class="ruby"> "Webkit", "Chrome", "Safari", "Android",</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="10">
|
|
|
|
|
|
<code class="ruby"> "Firefox", "Camino", "Iceweasel", "Seamonkey", "Android",</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="11">
|
|
|
|
|
|
<code class="ruby"> "Opera", "Mozilla"</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="12">
|
|
|
|
|
|
<code class="ruby"> ]</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="13">
|
|
|
|
|
|
<code class="ruby"></code>
|
|
</li>
|
|
|
|
<li class="covered" data-hits="1" data-linenumber="14">
|
|
<span class="hits">1</span>
|
|
|
|
<code class="ruby"> before(agent: /^$/) do</code>
|
|
</li>
|
|
|
|
<li class="covered" data-hits="23" data-linenumber="15">
|
|
<span class="hits">23</span>
|
|
|
|
<code class="ruby"> ::Metriks.meter("api.user_agent.missing").mark</code>
|
|
</li>
|
|
|
|
<li class="covered" data-hits="23" data-linenumber="16">
|
|
<span class="hits">23</span>
|
|
|
|
<code class="ruby"> halt(400, "error" => "missing User-Agent header") if Travis::Features.feature_active?(:require_user_agent)</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="17">
|
|
|
|
|
|
<code class="ruby"> end</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="18">
|
|
|
|
|
|
<code class="ruby"></code>
|
|
</li>
|
|
|
|
<li class="covered" data-hits="1" data-linenumber="19">
|
|
<span class="hits">1</span>
|
|
|
|
<code class="ruby"> before(agent: /^.+$/) do</code>
|
|
</li>
|
|
|
|
<li class="missed" data-hits="0" data-linenumber="20">
|
|
|
|
|
|
<code class="ruby"> agent = UserAgent.parse(request.user_agent)</code>
|
|
</li>
|
|
|
|
<li class="missed" data-hits="0" data-linenumber="21">
|
|
|
|
|
|
<code class="ruby"> case agent.browser</code>
|
|
</li>
|
|
|
|
<li class="missed" data-hits="0" data-linenumber="22">
|
|
|
|
|
|
<code class="ruby"> when *WEB_BROWSERS then mark_browser</code>
|
|
</li>
|
|
|
|
<li class="missed" data-hits="0" data-linenumber="23">
|
|
|
|
|
|
<code class="ruby"> when "curl", "Wget" then mark(:console, agent.browser)</code>
|
|
</li>
|
|
|
|
<li class="missed" data-hits="0" data-linenumber="24">
|
|
|
|
|
|
<code class="ruby"> when "travis-api-wrapper" then mark(:script, :node_js, agent.browser)</code>
|
|
</li>
|
|
|
|
<li class="missed" data-hits="0" data-linenumber="25">
|
|
|
|
|
|
<code class="ruby"> when "TravisPy" then mark(:script, :python, agent.browser)</code>
|
|
</li>
|
|
|
|
<li class="missed" data-hits="0" data-linenumber="26">
|
|
|
|
|
|
<code class="ruby"> when "Ruby", "PHP", "Perl", "Python" then mark(:script, agent.browser, :vanilla)</code>
|
|
</li>
|
|
|
|
<li class="missed" data-hits="0" data-linenumber="27">
|
|
|
|
|
|
<code class="ruby"> when "Faraday" then mark(:script, :ruby, :vanilla)</code>
|
|
</li>
|
|
|
|
<li class="missed" data-hits="0" data-linenumber="28">
|
|
|
|
|
|
<code class="ruby"> when "Travis" then mark_travis(agent)</code>
|
|
</li>
|
|
|
|
<li class="missed" data-hits="0" data-linenumber="29">
|
|
|
|
|
|
<code class="ruby"> else mark_unknown</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="30">
|
|
|
|
|
|
<code class="ruby"> end</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="31">
|
|
|
|
|
|
<code class="ruby"> end</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="32">
|
|
|
|
|
|
<code class="ruby"></code>
|
|
</li>
|
|
|
|
<li class="covered" data-hits="1" data-linenumber="33">
|
|
<span class="hits">1</span>
|
|
|
|
<code class="ruby"> def mark_browser</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="34">
|
|
|
|
|
|
<code class="ruby"> # allows a JavaScript Client to set X-User-Agent, for instance to "travis-web" in travis-web</code>
|
|
</li>
|
|
|
|
<li class="missed" data-hits="0" data-linenumber="35">
|
|
|
|
|
|
<code class="ruby"> x_agent = UserAgent.parse(env['HTTP_X_USER_AGENT'] || 'unknown').browser</code>
|
|
</li>
|
|
|
|
<li class="missed" data-hits="0" data-linenumber="36">
|
|
|
|
|
|
<code class="ruby"> mark(:browser, x_agent)</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="37">
|
|
|
|
|
|
<code class="ruby"> end</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="38">
|
|
|
|
|
|
<code class="ruby"></code>
|
|
</li>
|
|
|
|
<li class="covered" data-hits="1" data-linenumber="39">
|
|
<span class="hits">1</span>
|
|
|
|
<code class="ruby"> def mark_travis(agent)</code>
|
|
</li>
|
|
|
|
<li class="missed" data-hits="0" data-linenumber="40">
|
|
|
|
|
|
<code class="ruby"> command = agent.application.comment.detect { |c| c.start_with? "command " }</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="41">
|
|
|
|
|
|
<code class="ruby"></code>
|
|
</li>
|
|
|
|
<li class="missed" data-hits="0" data-linenumber="42">
|
|
|
|
|
|
<code class="ruby"> if command</code>
|
|
</li>
|
|
|
|
<li class="missed" data-hits="0" data-linenumber="43">
|
|
|
|
|
|
<code class="ruby"> mark(:cli, :version, agent.version)</code>
|
|
</li>
|
|
|
|
<li class="missed" data-hits="0" data-linenumber="44">
|
|
|
|
|
|
<code class="ruby"> mark(:cli, command.sub(' ', '.'))</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="45">
|
|
|
|
|
|
<code class="ruby"> else</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="46">
|
|
|
|
|
|
<code class="ruby"> # only track ruby version and library version for non-cli usage</code>
|
|
</li>
|
|
|
|
<li class="missed" data-hits="0" data-linenumber="47">
|
|
|
|
|
|
<code class="ruby"> mark(:script, :ruby, :travis, :version, agent.version)</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="48">
|
|
|
|
|
|
<code class="ruby"> end</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="49">
|
|
|
|
|
|
<code class="ruby"> end</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="50">
|
|
|
|
|
|
<code class="ruby"></code>
|
|
</li>
|
|
|
|
<li class="covered" data-hits="1" data-linenumber="51">
|
|
<span class="hits">1</span>
|
|
|
|
<code class="ruby"> def mark_unknown</code>
|
|
</li>
|
|
|
|
<li class="missed" data-hits="0" data-linenumber="52">
|
|
|
|
|
|
<code class="ruby"> logger.warn "[user-agent-tracker] Unknown User-Agent: %p" % request.user_agent</code>
|
|
</li>
|
|
|
|
<li class="missed" data-hits="0" data-linenumber="53">
|
|
|
|
|
|
<code class="ruby"> mark(:unknown)</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="54">
|
|
|
|
|
|
<code class="ruby"> end</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="55">
|
|
|
|
|
|
<code class="ruby"></code>
|
|
</li>
|
|
|
|
<li class="covered" data-hits="1" data-linenumber="56">
|
|
<span class="hits">1</span>
|
|
|
|
<code class="ruby"> def mark(*keys)</code>
|
|
</li>
|
|
|
|
<li class="missed" data-hits="0" data-linenumber="57">
|
|
|
|
|
|
<code class="ruby"> key = "api.user_agent." << keys.map { |k| k.to_s.downcase.gsub(/[^a-z0-9\-\.]+/, '_') }.join('.')</code>
|
|
</li>
|
|
|
|
<li class="missed" data-hits="0" data-linenumber="58">
|
|
|
|
|
|
<code class="ruby"> ::Metriks.meter(key).mark</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="59">
|
|
|
|
|
|
<code class="ruby"> end</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="60">
|
|
|
|
|
|
<code class="ruby"> end</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="61">
|
|
|
|
|
|
<code class="ruby"> end</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="62">
|
|
|
|
|
|
<code class="ruby">end</code>
|
|
</li>
|
|
|
|
</ol>
|
|
</pre>
|
|
</div>
|
|
|
|
<div class="source_table" id="866d316bcfc64963406986d03c50d1280b8fe34d">
|
|
<div class="header">
|
|
<h3>lib/travis/api/app/services/schedule_request.rb</h3>
|
|
<h4><span class="red">51.61 %</span> covered</h4>
|
|
<div>
|
|
<b>31</b> relevant lines.
|
|
<span class="green"><b>16</b> lines covered</span> and
|
|
<span class="red"><b>15</b> lines missed.</span>
|
|
</div>
|
|
</div>
|
|
|
|
<pre>
|
|
<ol>
|
|
|
|
<li class="covered" data-hits="1" data-linenumber="1">
|
|
<span class="hits">1</span>
|
|
|
|
<code class="ruby">require 'multi_json'</code>
|
|
</li>
|
|
|
|
<li class="covered" data-hits="1" data-linenumber="2">
|
|
<span class="hits">1</span>
|
|
|
|
<code class="ruby">require 'travis/sidekiq/build_request'</code>
|
|
</li>
|
|
|
|
<li class="covered" data-hits="1" data-linenumber="3">
|
|
<span class="hits">1</span>
|
|
|
|
<code class="ruby">require 'travis/services/base'</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="4">
|
|
|
|
|
|
<code class="ruby"></code>
|
|
</li>
|
|
|
|
<li class="covered" data-hits="1" data-linenumber="5">
|
|
<span class="hits">1</span>
|
|
|
|
<code class="ruby">class Travis::Api::App</code>
|
|
</li>
|
|
|
|
<li class="covered" data-hits="1" data-linenumber="6">
|
|
<span class="hits">1</span>
|
|
|
|
<code class="ruby"> module Services</code>
|
|
</li>
|
|
|
|
<li class="covered" data-hits="1" data-linenumber="7">
|
|
<span class="hits">1</span>
|
|
|
|
<code class="ruby"> class ScheduleRequest < Travis::Services::Base</code>
|
|
</li>
|
|
|
|
<li class="covered" data-hits="1" data-linenumber="8">
|
|
<span class="hits">1</span>
|
|
|
|
<code class="ruby"> register :schedule_request</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="9">
|
|
|
|
|
|
<code class="ruby"></code>
|
|
</li>
|
|
|
|
<li class="covered" data-hits="1" data-linenumber="10">
|
|
<span class="hits">1</span>
|
|
|
|
<code class="ruby"> def run</code>
|
|
</li>
|
|
|
|
<li class="missed" data-hits="0" data-linenumber="11">
|
|
|
|
|
|
<code class="ruby"> repo && active? ? schedule_request : not_found</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="12">
|
|
|
|
|
|
<code class="ruby"> end</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="13">
|
|
|
|
|
|
<code class="ruby"></code>
|
|
</li>
|
|
|
|
<li class="covered" data-hits="1" data-linenumber="14">
|
|
<span class="hits">1</span>
|
|
|
|
<code class="ruby"> def messages</code>
|
|
</li>
|
|
|
|
<li class="missed" data-hits="0" data-linenumber="15">
|
|
|
|
|
|
<code class="ruby"> @messages ||= []</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="16">
|
|
|
|
|
|
<code class="ruby"> end</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="17">
|
|
|
|
|
|
<code class="ruby"></code>
|
|
</li>
|
|
|
|
<li class="covered" data-hits="1" data-linenumber="18">
|
|
<span class="hits">1</span>
|
|
|
|
<code class="ruby"> private</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="19">
|
|
|
|
|
|
<code class="ruby"></code>
|
|
</li>
|
|
|
|
<li class="covered" data-hits="1" data-linenumber="20">
|
|
<span class="hits">1</span>
|
|
|
|
<code class="ruby"> def schedule_request</code>
|
|
</li>
|
|
|
|
<li class="missed" data-hits="0" data-linenumber="21">
|
|
|
|
|
|
<code class="ruby"> Metriks.meter('api.request.create').mark</code>
|
|
</li>
|
|
|
|
<li class="missed" data-hits="0" data-linenumber="22">
|
|
|
|
|
|
<code class="ruby"> Travis::Sidekiq::BuildRequest.perform_async(type: 'api', payload: payload, credentials: {})</code>
|
|
</li>
|
|
|
|
<li class="missed" data-hits="0" data-linenumber="23">
|
|
|
|
|
|
<code class="ruby"> messages << { notice: 'Build request scheduled.' }</code>
|
|
</li>
|
|
|
|
<li class="missed" data-hits="0" data-linenumber="24">
|
|
|
|
|
|
<code class="ruby"> :success</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="25">
|
|
|
|
|
|
<code class="ruby"> end</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="26">
|
|
|
|
|
|
<code class="ruby"></code>
|
|
</li>
|
|
|
|
<li class="covered" data-hits="1" data-linenumber="27">
|
|
<span class="hits">1</span>
|
|
|
|
<code class="ruby"> def not_found</code>
|
|
</li>
|
|
|
|
<li class="missed" data-hits="0" data-linenumber="28">
|
|
|
|
|
|
<code class="ruby"> messages << { error: "Repository #{slug} not found." }</code>
|
|
</li>
|
|
|
|
<li class="missed" data-hits="0" data-linenumber="29">
|
|
|
|
|
|
<code class="ruby"> :not_found</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="30">
|
|
|
|
|
|
<code class="ruby"> end</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="31">
|
|
|
|
|
|
<code class="ruby"></code>
|
|
</li>
|
|
|
|
<li class="covered" data-hits="1" data-linenumber="32">
|
|
<span class="hits">1</span>
|
|
|
|
<code class="ruby"> def active?</code>
|
|
</li>
|
|
|
|
<li class="missed" data-hits="0" data-linenumber="33">
|
|
|
|
|
|
<code class="ruby"> Travis::Features.owner_active?(:request_create, repo.owner)</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="34">
|
|
|
|
|
|
<code class="ruby"> end</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="35">
|
|
|
|
|
|
<code class="ruby"></code>
|
|
</li>
|
|
|
|
<li class="covered" data-hits="1" data-linenumber="36">
|
|
<span class="hits">1</span>
|
|
|
|
<code class="ruby"> def payload</code>
|
|
</li>
|
|
|
|
<li class="missed" data-hits="0" data-linenumber="37">
|
|
|
|
|
|
<code class="ruby"> data = params.merge(user: { id: current_user.id })</code>
|
|
</li>
|
|
|
|
<li class="missed" data-hits="0" data-linenumber="38">
|
|
|
|
|
|
<code class="ruby"> data[:repository][:id] = repo.github_id</code>
|
|
</li>
|
|
|
|
<li class="missed" data-hits="0" data-linenumber="39">
|
|
|
|
|
|
<code class="ruby"> MultiJson.encode(data)</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="40">
|
|
|
|
|
|
<code class="ruby"> end</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="41">
|
|
|
|
|
|
<code class="ruby"></code>
|
|
</li>
|
|
|
|
<li class="covered" data-hits="1" data-linenumber="42">
|
|
<span class="hits">1</span>
|
|
|
|
<code class="ruby"> def repo</code>
|
|
</li>
|
|
|
|
<li class="missed" data-hits="0" data-linenumber="43">
|
|
|
|
|
|
<code class="ruby"> @repo ||= Repository.by_slug(slug).first</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="44">
|
|
|
|
|
|
<code class="ruby"> end</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="45">
|
|
|
|
|
|
<code class="ruby"></code>
|
|
</li>
|
|
|
|
<li class="covered" data-hits="1" data-linenumber="46">
|
|
<span class="hits">1</span>
|
|
|
|
<code class="ruby"> def slug</code>
|
|
</li>
|
|
|
|
<li class="missed" data-hits="0" data-linenumber="47">
|
|
|
|
|
|
<code class="ruby"> repo = params[:repository] || {}</code>
|
|
</li>
|
|
|
|
<li class="missed" data-hits="0" data-linenumber="48">
|
|
|
|
|
|
<code class="ruby"> repo.values_at(:owner_name, :name).join('/')</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="49">
|
|
|
|
|
|
<code class="ruby"> end</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="50">
|
|
|
|
|
|
<code class="ruby"> end</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="51">
|
|
|
|
|
|
<code class="ruby"> end</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="52">
|
|
|
|
|
|
<code class="ruby">end</code>
|
|
</li>
|
|
|
|
</ol>
|
|
</pre>
|
|
</div>
|
|
|
|
<div class="source_table" id="d04c5eced516ab14b9065b4d34d0af855835a730">
|
|
<div class="header">
|
|
<h3>lib/travis/api/serializer.rb</h3>
|
|
<h4><span class="red">66.67 %</span> covered</h4>
|
|
<div>
|
|
<b>12</b> relevant lines.
|
|
<span class="green"><b>8</b> lines covered</span> and
|
|
<span class="red"><b>4</b> lines missed.</span>
|
|
</div>
|
|
</div>
|
|
|
|
<pre>
|
|
<ol>
|
|
|
|
<li class="covered" data-hits="1" data-linenumber="1">
|
|
<span class="hits">1</span>
|
|
|
|
<code class="ruby">require 'active_model_serializers'</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="2">
|
|
|
|
|
|
<code class="ruby"></code>
|
|
</li>
|
|
|
|
<li class="covered" data-hits="1" data-linenumber="3">
|
|
<span class="hits">1</span>
|
|
|
|
<code class="ruby">module Travis</code>
|
|
</li>
|
|
|
|
<li class="covered" data-hits="1" data-linenumber="4">
|
|
<span class="hits">1</span>
|
|
|
|
<code class="ruby"> module Api</code>
|
|
</li>
|
|
|
|
<li class="covered" data-hits="1" data-linenumber="5">
|
|
<span class="hits">1</span>
|
|
|
|
<code class="ruby"> class Serializer < ActiveModel::Serializer</code>
|
|
</li>
|
|
|
|
<li class="covered" data-hits="1" data-linenumber="6">
|
|
<span class="hits">1</span>
|
|
|
|
<code class="ruby"> def data</code>
|
|
</li>
|
|
|
|
<li class="missed" data-hits="0" data-linenumber="7">
|
|
|
|
|
|
<code class="ruby"> as_json</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="8">
|
|
|
|
|
|
<code class="ruby"> end</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="9">
|
|
|
|
|
|
<code class="ruby"> end</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="10">
|
|
|
|
|
|
<code class="ruby"></code>
|
|
</li>
|
|
|
|
<li class="covered" data-hits="1" data-linenumber="11">
|
|
<span class="hits">1</span>
|
|
|
|
<code class="ruby"> class ArraySerializer < ActiveModel::ArraySerializer</code>
|
|
</li>
|
|
|
|
<li class="covered" data-hits="1" data-linenumber="12">
|
|
<span class="hits">1</span>
|
|
|
|
<code class="ruby"> def data</code>
|
|
</li>
|
|
|
|
<li class="missed" data-hits="0" data-linenumber="13">
|
|
|
|
|
|
<code class="ruby"> as_json</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="14">
|
|
|
|
|
|
<code class="ruby"> end</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="15">
|
|
|
|
|
|
<code class="ruby"></code>
|
|
</li>
|
|
|
|
<li class="covered" data-hits="1" data-linenumber="16">
|
|
<span class="hits">1</span>
|
|
|
|
<code class="ruby"> def initialize(resource, options)</code>
|
|
</li>
|
|
|
|
<li class="missed" data-hits="0" data-linenumber="17">
|
|
|
|
|
|
<code class="ruby"> options[:each_serializer] ||= Travis::Api::V2::Http.const_get(options[:root].to_s.singularize.camelize)</code>
|
|
</li>
|
|
|
|
<li class="missed" data-hits="0" data-linenumber="18">
|
|
|
|
|
|
<code class="ruby"> super(resource, options)</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="19">
|
|
|
|
|
|
<code class="ruby"> end</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="20">
|
|
|
|
|
|
<code class="ruby"> end</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="21">
|
|
|
|
|
|
<code class="ruby"> end</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="22">
|
|
|
|
|
|
<code class="ruby">end</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="23">
|
|
|
|
|
|
<code class="ruby"></code>
|
|
</li>
|
|
|
|
</ol>
|
|
</pre>
|
|
</div>
|
|
|
|
<div class="source_table" id="babe3ce05ce1d657f847b2e01c64437b8e58b014">
|
|
<div class="header">
|
|
<h3>lib/travis/api/v2.rb</h3>
|
|
<h4><span class="green">100.0 %</span> covered</h4>
|
|
<div>
|
|
<b>4</b> relevant lines.
|
|
<span class="green"><b>4</b> lines covered</span> and
|
|
<span class="red"><b>0</b> lines missed.</span>
|
|
</div>
|
|
</div>
|
|
|
|
<pre>
|
|
<ol>
|
|
|
|
<li class="covered" data-hits="1" data-linenumber="1">
|
|
<span class="hits">1</span>
|
|
|
|
<code class="ruby">module Travis</code>
|
|
</li>
|
|
|
|
<li class="covered" data-hits="1" data-linenumber="2">
|
|
<span class="hits">1</span>
|
|
|
|
<code class="ruby"> module Api</code>
|
|
</li>
|
|
|
|
<li class="covered" data-hits="1" data-linenumber="3">
|
|
<span class="hits">1</span>
|
|
|
|
<code class="ruby"> module V2</code>
|
|
</li>
|
|
|
|
<li class="covered" data-hits="1" data-linenumber="4">
|
|
<span class="hits">1</span>
|
|
|
|
<code class="ruby"> require 'travis/api/v2/http'</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="5">
|
|
|
|
|
|
<code class="ruby"> end</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="6">
|
|
|
|
|
|
<code class="ruby"> end</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="7">
|
|
|
|
|
|
<code class="ruby">end</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="8">
|
|
|
|
|
|
<code class="ruby"></code>
|
|
</li>
|
|
|
|
</ol>
|
|
</pre>
|
|
</div>
|
|
|
|
<div class="source_table" id="1c817b9839dda1170aec2560bad5a09065552de6">
|
|
<div class="header">
|
|
<h3>lib/travis/api/v2/http.rb</h3>
|
|
<h4><span class="green">100.0 %</span> covered</h4>
|
|
<div>
|
|
<b>28</b> relevant lines.
|
|
<span class="green"><b>28</b> lines covered</span> and
|
|
<span class="red"><b>0</b> lines missed.</span>
|
|
</div>
|
|
</div>
|
|
|
|
<pre>
|
|
<ol>
|
|
|
|
<li class="covered" data-hits="1" data-linenumber="1">
|
|
<span class="hits">1</span>
|
|
|
|
<code class="ruby">require 'travis/api/serializer'</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="2">
|
|
|
|
|
|
<code class="ruby"></code>
|
|
</li>
|
|
|
|
<li class="covered" data-hits="1" data-linenumber="3">
|
|
<span class="hits">1</span>
|
|
|
|
<code class="ruby">module Travis</code>
|
|
</li>
|
|
|
|
<li class="covered" data-hits="1" data-linenumber="4">
|
|
<span class="hits">1</span>
|
|
|
|
<code class="ruby"> module Api</code>
|
|
</li>
|
|
|
|
<li class="covered" data-hits="1" data-linenumber="5">
|
|
<span class="hits">1</span>
|
|
|
|
<code class="ruby"> module V2</code>
|
|
</li>
|
|
|
|
<li class="covered" data-hits="1" data-linenumber="6">
|
|
<span class="hits">1</span>
|
|
|
|
<code class="ruby"> module Http</code>
|
|
</li>
|
|
|
|
<li class="covered" data-hits="1" data-linenumber="7">
|
|
<span class="hits">1</span>
|
|
|
|
<code class="ruby"> require 'travis/api/v2/http/accounts'</code>
|
|
</li>
|
|
|
|
<li class="covered" data-hits="1" data-linenumber="8">
|
|
<span class="hits">1</span>
|
|
|
|
<code class="ruby"> require 'travis/api/v2/http/annotations'</code>
|
|
</li>
|
|
|
|
<li class="covered" data-hits="1" data-linenumber="9">
|
|
<span class="hits">1</span>
|
|
|
|
<code class="ruby"> require 'travis/api/v2/http/broadcasts'</code>
|
|
</li>
|
|
|
|
<li class="covered" data-hits="1" data-linenumber="10">
|
|
<span class="hits">1</span>
|
|
|
|
<code class="ruby"> require 'travis/api/v2/http/branch'</code>
|
|
</li>
|
|
|
|
<li class="covered" data-hits="1" data-linenumber="11">
|
|
<span class="hits">1</span>
|
|
|
|
<code class="ruby"> require 'travis/api/v2/http/branches'</code>
|
|
</li>
|
|
|
|
<li class="covered" data-hits="1" data-linenumber="12">
|
|
<span class="hits">1</span>
|
|
|
|
<code class="ruby"> require 'travis/api/v2/http/build'</code>
|
|
</li>
|
|
|
|
<li class="covered" data-hits="1" data-linenumber="13">
|
|
<span class="hits">1</span>
|
|
|
|
<code class="ruby"> require 'travis/api/v2/http/builds'</code>
|
|
</li>
|
|
|
|
<li class="covered" data-hits="1" data-linenumber="14">
|
|
<span class="hits">1</span>
|
|
|
|
<code class="ruby"> require 'travis/api/v2/http/caches'</code>
|
|
</li>
|
|
|
|
<li class="covered" data-hits="1" data-linenumber="15">
|
|
<span class="hits">1</span>
|
|
|
|
<code class="ruby"> require 'travis/api/v2/http/hooks'</code>
|
|
</li>
|
|
|
|
<li class="covered" data-hits="1" data-linenumber="16">
|
|
<span class="hits">1</span>
|
|
|
|
<code class="ruby"> require 'travis/api/v2/http/job'</code>
|
|
</li>
|
|
|
|
<li class="covered" data-hits="1" data-linenumber="17">
|
|
<span class="hits">1</span>
|
|
|
|
<code class="ruby"> require 'travis/api/v2/http/jobs'</code>
|
|
</li>
|
|
|
|
<li class="covered" data-hits="1" data-linenumber="18">
|
|
<span class="hits">1</span>
|
|
|
|
<code class="ruby"> require 'travis/api/v2/http/log'</code>
|
|
</li>
|
|
|
|
<li class="covered" data-hits="1" data-linenumber="19">
|
|
<span class="hits">1</span>
|
|
|
|
<code class="ruby"> require 'travis/api/v2/http/permissions'</code>
|
|
</li>
|
|
|
|
<li class="covered" data-hits="1" data-linenumber="20">
|
|
<span class="hits">1</span>
|
|
|
|
<code class="ruby"> require 'travis/api/v2/http/repositories'</code>
|
|
</li>
|
|
|
|
<li class="covered" data-hits="1" data-linenumber="21">
|
|
<span class="hits">1</span>
|
|
|
|
<code class="ruby"> require 'travis/api/v2/http/repository'</code>
|
|
</li>
|
|
|
|
<li class="covered" data-hits="1" data-linenumber="22">
|
|
<span class="hits">1</span>
|
|
|
|
<code class="ruby"> require 'travis/api/v2/http/requests'</code>
|
|
</li>
|
|
|
|
<li class="covered" data-hits="1" data-linenumber="23">
|
|
<span class="hits">1</span>
|
|
|
|
<code class="ruby"> require 'travis/api/v2/http/request'</code>
|
|
</li>
|
|
|
|
<li class="covered" data-hits="1" data-linenumber="24">
|
|
<span class="hits">1</span>
|
|
|
|
<code class="ruby"> require 'travis/api/v2/http/ssl_key'</code>
|
|
</li>
|
|
|
|
<li class="covered" data-hits="1" data-linenumber="25">
|
|
<span class="hits">1</span>
|
|
|
|
<code class="ruby"> require 'travis/api/v2/http/env_var'</code>
|
|
</li>
|
|
|
|
<li class="covered" data-hits="1" data-linenumber="26">
|
|
<span class="hits">1</span>
|
|
|
|
<code class="ruby"> require 'travis/api/v2/http/env_vars'</code>
|
|
</li>
|
|
|
|
<li class="covered" data-hits="1" data-linenumber="27">
|
|
<span class="hits">1</span>
|
|
|
|
<code class="ruby"> require 'travis/api/v2/http/user'</code>
|
|
</li>
|
|
|
|
<li class="covered" data-hits="1" data-linenumber="28">
|
|
<span class="hits">1</span>
|
|
|
|
<code class="ruby"> require 'travis/api/v2/http/validation_error'</code>
|
|
</li>
|
|
|
|
<li class="covered" data-hits="1" data-linenumber="29">
|
|
<span class="hits">1</span>
|
|
|
|
<code class="ruby"> require 'travis/api/v2/http/ssh_key'</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="30">
|
|
|
|
|
|
<code class="ruby"> end</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="31">
|
|
|
|
|
|
<code class="ruby"> end</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="32">
|
|
|
|
|
|
<code class="ruby"> end</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="33">
|
|
|
|
|
|
<code class="ruby">end</code>
|
|
</li>
|
|
|
|
</ol>
|
|
</pre>
|
|
</div>
|
|
|
|
<div class="source_table" id="c48990e0accf6ba7189617a1b67f9c86eecfc562">
|
|
<div class="header">
|
|
<h3>lib/travis/api/v2/http/accounts.rb</h3>
|
|
<h4><span class="red">68.75 %</span> covered</h4>
|
|
<div>
|
|
<b>16</b> relevant lines.
|
|
<span class="green"><b>11</b> lines covered</span> and
|
|
<span class="red"><b>5</b> lines missed.</span>
|
|
</div>
|
|
</div>
|
|
|
|
<pre>
|
|
<ol>
|
|
|
|
<li class="covered" data-hits="1" data-linenumber="1">
|
|
<span class="hits">1</span>
|
|
|
|
<code class="ruby">module Travis</code>
|
|
</li>
|
|
|
|
<li class="covered" data-hits="1" data-linenumber="2">
|
|
<span class="hits">1</span>
|
|
|
|
<code class="ruby"> module Api</code>
|
|
</li>
|
|
|
|
<li class="covered" data-hits="1" data-linenumber="3">
|
|
<span class="hits">1</span>
|
|
|
|
<code class="ruby"> module V2</code>
|
|
</li>
|
|
|
|
<li class="covered" data-hits="1" data-linenumber="4">
|
|
<span class="hits">1</span>
|
|
|
|
<code class="ruby"> module Http</code>
|
|
</li>
|
|
|
|
<li class="covered" data-hits="1" data-linenumber="5">
|
|
<span class="hits">1</span>
|
|
|
|
<code class="ruby"> class Accounts</code>
|
|
</li>
|
|
|
|
<li class="covered" data-hits="1" data-linenumber="6">
|
|
<span class="hits">1</span>
|
|
|
|
<code class="ruby"> include Formats</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="7">
|
|
|
|
|
|
<code class="ruby"></code>
|
|
</li>
|
|
|
|
<li class="covered" data-hits="1" data-linenumber="8">
|
|
<span class="hits">1</span>
|
|
|
|
<code class="ruby"> attr_reader :accounts, :options</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="9">
|
|
|
|
|
|
<code class="ruby"></code>
|
|
</li>
|
|
|
|
<li class="covered" data-hits="1" data-linenumber="10">
|
|
<span class="hits">1</span>
|
|
|
|
<code class="ruby"> def initialize(accounts, options = {})</code>
|
|
</li>
|
|
|
|
<li class="missed" data-hits="0" data-linenumber="11">
|
|
|
|
|
|
<code class="ruby"> @accounts = accounts</code>
|
|
</li>
|
|
|
|
<li class="missed" data-hits="0" data-linenumber="12">
|
|
|
|
|
|
<code class="ruby"> @options = options</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="13">
|
|
|
|
|
|
<code class="ruby"> end</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="14">
|
|
|
|
|
|
<code class="ruby"></code>
|
|
</li>
|
|
|
|
<li class="covered" data-hits="1" data-linenumber="15">
|
|
<span class="hits">1</span>
|
|
|
|
<code class="ruby"> def data</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="16">
|
|
|
|
|
|
<code class="ruby"> {</code>
|
|
</li>
|
|
|
|
<li class="missed" data-hits="0" data-linenumber="17">
|
|
|
|
|
|
<code class="ruby"> :accounts => accounts.map { |account| account_data(account) }</code>
|
|
</li>
|
|
|
|
<li class="missed" data-hits="0" data-linenumber="18">
|
|
|
|
|
|
<code class="ruby"> }</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="19">
|
|
|
|
|
|
<code class="ruby"> end</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="20">
|
|
|
|
|
|
<code class="ruby"></code>
|
|
</li>
|
|
|
|
<li class="covered" data-hits="1" data-linenumber="21">
|
|
<span class="hits">1</span>
|
|
|
|
<code class="ruby"> private</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="22">
|
|
|
|
|
|
<code class="ruby"></code>
|
|
</li>
|
|
|
|
<li class="covered" data-hits="1" data-linenumber="23">
|
|
<span class="hits">1</span>
|
|
|
|
<code class="ruby"> def account_data(account)</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="24">
|
|
|
|
|
|
<code class="ruby"> {</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="25">
|
|
|
|
|
|
<code class="ruby"> 'id' => account.id,</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="26">
|
|
|
|
|
|
<code class="ruby"> 'name' => account.name,</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="27">
|
|
|
|
|
|
<code class="ruby"> 'login' => account.login,</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="28">
|
|
|
|
|
|
<code class="ruby"> 'type' => account.type.underscore,</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="29">
|
|
|
|
|
|
<code class="ruby"> 'repos_count' => account.repos_count</code>
|
|
</li>
|
|
|
|
<li class="missed" data-hits="0" data-linenumber="30">
|
|
|
|
|
|
<code class="ruby"> }</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="31">
|
|
|
|
|
|
<code class="ruby"> end</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="32">
|
|
|
|
|
|
<code class="ruby"> end</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="33">
|
|
|
|
|
|
<code class="ruby"> end</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="34">
|
|
|
|
|
|
<code class="ruby"> end</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="35">
|
|
|
|
|
|
<code class="ruby"> end</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="36">
|
|
|
|
|
|
<code class="ruby">end</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="37">
|
|
|
|
|
|
<code class="ruby"></code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="38">
|
|
|
|
|
|
<code class="ruby"></code>
|
|
</li>
|
|
|
|
</ol>
|
|
</pre>
|
|
</div>
|
|
|
|
<div class="source_table" id="65342af497e7edc515415235ed81e3bbaccc6979">
|
|
<div class="header">
|
|
<h3>lib/travis/api/v2/http/annotations.rb</h3>
|
|
<h4><span class="red">71.43 %</span> covered</h4>
|
|
<div>
|
|
<b>14</b> relevant lines.
|
|
<span class="green"><b>10</b> lines covered</span> and
|
|
<span class="red"><b>4</b> lines missed.</span>
|
|
</div>
|
|
</div>
|
|
|
|
<pre>
|
|
<ol>
|
|
|
|
<li class="covered" data-hits="1" data-linenumber="1">
|
|
<span class="hits">1</span>
|
|
|
|
<code class="ruby">module Travis</code>
|
|
</li>
|
|
|
|
<li class="covered" data-hits="1" data-linenumber="2">
|
|
<span class="hits">1</span>
|
|
|
|
<code class="ruby"> module Api</code>
|
|
</li>
|
|
|
|
<li class="covered" data-hits="1" data-linenumber="3">
|
|
<span class="hits">1</span>
|
|
|
|
<code class="ruby"> module V2</code>
|
|
</li>
|
|
|
|
<li class="covered" data-hits="1" data-linenumber="4">
|
|
<span class="hits">1</span>
|
|
|
|
<code class="ruby"> module Http</code>
|
|
</li>
|
|
|
|
<li class="covered" data-hits="1" data-linenumber="5">
|
|
<span class="hits">1</span>
|
|
|
|
<code class="ruby"> class Annotations</code>
|
|
</li>
|
|
|
|
<li class="covered" data-hits="1" data-linenumber="6">
|
|
<span class="hits">1</span>
|
|
|
|
<code class="ruby"> include Formats</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="7">
|
|
|
|
|
|
<code class="ruby"></code>
|
|
</li>
|
|
|
|
<li class="covered" data-hits="1" data-linenumber="8">
|
|
<span class="hits">1</span>
|
|
|
|
<code class="ruby"> def initialize(annotations, options = {})</code>
|
|
</li>
|
|
|
|
<li class="missed" data-hits="0" data-linenumber="9">
|
|
|
|
|
|
<code class="ruby"> @annotations = annotations</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="10">
|
|
|
|
|
|
<code class="ruby"> end</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="11">
|
|
|
|
|
|
<code class="ruby"></code>
|
|
</li>
|
|
|
|
<li class="covered" data-hits="1" data-linenumber="12">
|
|
<span class="hits">1</span>
|
|
|
|
<code class="ruby"> def data</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="13">
|
|
|
|
|
|
<code class="ruby"> {</code>
|
|
</li>
|
|
|
|
<li class="missed" data-hits="0" data-linenumber="14">
|
|
|
|
|
|
<code class="ruby"> "annotations" => @annotations.map { |annotation| build_annotation(annotation) },</code>
|
|
</li>
|
|
|
|
<li class="missed" data-hits="0" data-linenumber="15">
|
|
|
|
|
|
<code class="ruby"> }</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="16">
|
|
|
|
|
|
<code class="ruby"> end</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="17">
|
|
|
|
|
|
<code class="ruby"></code>
|
|
</li>
|
|
|
|
<li class="covered" data-hits="1" data-linenumber="18">
|
|
<span class="hits">1</span>
|
|
|
|
<code class="ruby"> private</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="19">
|
|
|
|
|
|
<code class="ruby"></code>
|
|
</li>
|
|
|
|
<li class="covered" data-hits="1" data-linenumber="20">
|
|
<span class="hits">1</span>
|
|
|
|
<code class="ruby"> def build_annotation(annotation)</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="21">
|
|
|
|
|
|
<code class="ruby"> {</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="22">
|
|
|
|
|
|
<code class="ruby"> "id" => annotation.id,</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="23">
|
|
|
|
|
|
<code class="ruby"> "job_id" => annotation.job_id,</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="24">
|
|
|
|
|
|
<code class="ruby"> "description" => annotation.description,</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="25">
|
|
|
|
|
|
<code class="ruby"> "url" => annotation.url,</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="26">
|
|
|
|
|
|
<code class="ruby"> "status" => annotation.status,</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="27">
|
|
|
|
|
|
<code class="ruby"> "provider_name" => annotation.annotation_provider.name,</code>
|
|
</li>
|
|
|
|
<li class="missed" data-hits="0" data-linenumber="28">
|
|
|
|
|
|
<code class="ruby"> }</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="29">
|
|
|
|
|
|
<code class="ruby"> end</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="30">
|
|
|
|
|
|
<code class="ruby"> end</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="31">
|
|
|
|
|
|
<code class="ruby"> end</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="32">
|
|
|
|
|
|
<code class="ruby"> end</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="33">
|
|
|
|
|
|
<code class="ruby"> end</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="34">
|
|
|
|
|
|
<code class="ruby">end</code>
|
|
</li>
|
|
|
|
</ol>
|
|
</pre>
|
|
</div>
|
|
|
|
<div class="source_table" id="e48076813d88d2c6e10c03686156a6f19429e60e">
|
|
<div class="header">
|
|
<h3>lib/travis/api/v2/http/branch.rb</h3>
|
|
<h4><span class="red">71.43 %</span> covered</h4>
|
|
<div>
|
|
<b>14</b> relevant lines.
|
|
<span class="green"><b>10</b> lines covered</span> and
|
|
<span class="red"><b>4</b> lines missed.</span>
|
|
</div>
|
|
</div>
|
|
|
|
<pre>
|
|
<ol>
|
|
|
|
<li class="covered" data-hits="1" data-linenumber="1">
|
|
<span class="hits">1</span>
|
|
|
|
<code class="ruby">require 'travis/api/v2/http/branches'</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="2">
|
|
|
|
|
|
<code class="ruby"></code>
|
|
</li>
|
|
|
|
<li class="covered" data-hits="1" data-linenumber="3">
|
|
<span class="hits">1</span>
|
|
|
|
<code class="ruby">module Travis</code>
|
|
</li>
|
|
|
|
<li class="covered" data-hits="1" data-linenumber="4">
|
|
<span class="hits">1</span>
|
|
|
|
<code class="ruby"> module Api</code>
|
|
</li>
|
|
|
|
<li class="covered" data-hits="1" data-linenumber="5">
|
|
<span class="hits">1</span>
|
|
|
|
<code class="ruby"> module V2</code>
|
|
</li>
|
|
|
|
<li class="covered" data-hits="1" data-linenumber="6">
|
|
<span class="hits">1</span>
|
|
|
|
<code class="ruby"> module Http</code>
|
|
</li>
|
|
|
|
<li class="covered" data-hits="1" data-linenumber="7">
|
|
<span class="hits">1</span>
|
|
|
|
<code class="ruby"> class Branch < Branches</code>
|
|
</li>
|
|
|
|
<li class="covered" data-hits="1" data-linenumber="8">
|
|
<span class="hits">1</span>
|
|
|
|
<code class="ruby"> include Formats</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="9">
|
|
|
|
|
|
<code class="ruby"></code>
|
|
</li>
|
|
|
|
<li class="covered" data-hits="1" data-linenumber="10">
|
|
<span class="hits">1</span>
|
|
|
|
<code class="ruby"> attr_reader :build, :commit, :options</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="11">
|
|
|
|
|
|
<code class="ruby"></code>
|
|
</li>
|
|
|
|
<li class="covered" data-hits="1" data-linenumber="12">
|
|
<span class="hits">1</span>
|
|
|
|
<code class="ruby"> def initialize(build, options = {})</code>
|
|
</li>
|
|
|
|
<li class="missed" data-hits="0" data-linenumber="13">
|
|
|
|
|
|
<code class="ruby"> @build = build</code>
|
|
</li>
|
|
|
|
<li class="missed" data-hits="0" data-linenumber="14">
|
|
|
|
|
|
<code class="ruby"> @commit = build.commit</code>
|
|
</li>
|
|
|
|
<li class="missed" data-hits="0" data-linenumber="15">
|
|
|
|
|
|
<code class="ruby"> @options = options</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="16">
|
|
|
|
|
|
<code class="ruby"> end</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="17">
|
|
|
|
|
|
<code class="ruby"></code>
|
|
</li>
|
|
|
|
<li class="covered" data-hits="1" data-linenumber="18">
|
|
<span class="hits">1</span>
|
|
|
|
<code class="ruby"> def data</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="19">
|
|
|
|
|
|
<code class="ruby"> {</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="20">
|
|
|
|
|
|
<code class="ruby"> 'branch' => build_data(build),</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="21">
|
|
|
|
|
|
<code class="ruby"> 'commit' => commit_data(commit)</code>
|
|
</li>
|
|
|
|
<li class="missed" data-hits="0" data-linenumber="22">
|
|
|
|
|
|
<code class="ruby"> }</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="23">
|
|
|
|
|
|
<code class="ruby"> end</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="24">
|
|
|
|
|
|
<code class="ruby"> end</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="25">
|
|
|
|
|
|
<code class="ruby"> end</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="26">
|
|
|
|
|
|
<code class="ruby"> end</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="27">
|
|
|
|
|
|
<code class="ruby"> end</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="28">
|
|
|
|
|
|
<code class="ruby">end</code>
|
|
</li>
|
|
|
|
</ol>
|
|
</pre>
|
|
</div>
|
|
|
|
<div class="source_table" id="58933f40c3a13ad2f3470bedf8880494dabc2b2d">
|
|
<div class="header">
|
|
<h3>lib/travis/api/v2/http/branches.rb</h3>
|
|
<h4><span class="red">54.55 %</span> covered</h4>
|
|
<div>
|
|
<b>22</b> relevant lines.
|
|
<span class="green"><b>12</b> lines covered</span> and
|
|
<span class="red"><b>10</b> lines missed.</span>
|
|
</div>
|
|
</div>
|
|
|
|
<pre>
|
|
<ol>
|
|
|
|
<li class="covered" data-hits="1" data-linenumber="1">
|
|
<span class="hits">1</span>
|
|
|
|
<code class="ruby">module Travis</code>
|
|
</li>
|
|
|
|
<li class="covered" data-hits="1" data-linenumber="2">
|
|
<span class="hits">1</span>
|
|
|
|
<code class="ruby"> module Api</code>
|
|
</li>
|
|
|
|
<li class="covered" data-hits="1" data-linenumber="3">
|
|
<span class="hits">1</span>
|
|
|
|
<code class="ruby"> module V2</code>
|
|
</li>
|
|
|
|
<li class="covered" data-hits="1" data-linenumber="4">
|
|
<span class="hits">1</span>
|
|
|
|
<code class="ruby"> module Http</code>
|
|
</li>
|
|
|
|
<li class="covered" data-hits="1" data-linenumber="5">
|
|
<span class="hits">1</span>
|
|
|
|
<code class="ruby"> class Branches</code>
|
|
</li>
|
|
|
|
<li class="covered" data-hits="1" data-linenumber="6">
|
|
<span class="hits">1</span>
|
|
|
|
<code class="ruby"> include Formats</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="7">
|
|
|
|
|
|
<code class="ruby"></code>
|
|
</li>
|
|
|
|
<li class="covered" data-hits="1" data-linenumber="8">
|
|
<span class="hits">1</span>
|
|
|
|
<code class="ruby"> attr_reader :builds, :commits, :options</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="9">
|
|
|
|
|
|
<code class="ruby"></code>
|
|
</li>
|
|
|
|
<li class="covered" data-hits="1" data-linenumber="10">
|
|
<span class="hits">1</span>
|
|
|
|
<code class="ruby"> def initialize(builds, options = {})</code>
|
|
</li>
|
|
|
|
<li class="missed" data-hits="0" data-linenumber="11">
|
|
|
|
|
|
<code class="ruby"> builds = builds.last_finished_builds_by_branches if builds.is_a?(Repository) # TODO remove, bc</code>
|
|
</li>
|
|
|
|
<li class="missed" data-hits="0" data-linenumber="12">
|
|
|
|
|
|
<code class="ruby"> @builds = builds</code>
|
|
</li>
|
|
|
|
<li class="missed" data-hits="0" data-linenumber="13">
|
|
|
|
|
|
<code class="ruby"> @commits = builds.map(&:commit)</code>
|
|
</li>
|
|
|
|
<li class="missed" data-hits="0" data-linenumber="14">
|
|
|
|
|
|
<code class="ruby"> @options = options</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="15">
|
|
|
|
|
|
<code class="ruby"> end</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="16">
|
|
|
|
|
|
<code class="ruby"></code>
|
|
</li>
|
|
|
|
<li class="covered" data-hits="1" data-linenumber="17">
|
|
<span class="hits">1</span>
|
|
|
|
<code class="ruby"> def data</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="18">
|
|
|
|
|
|
<code class="ruby"> {</code>
|
|
</li>
|
|
|
|
<li class="missed" data-hits="0" data-linenumber="19">
|
|
|
|
|
|
<code class="ruby"> 'branches' => builds.map { |build| build_data(build) },</code>
|
|
</li>
|
|
|
|
<li class="missed" data-hits="0" data-linenumber="20">
|
|
|
|
|
|
<code class="ruby"> 'commits' => commits.map { |commit| commit_data(commit) }</code>
|
|
</li>
|
|
|
|
<li class="missed" data-hits="0" data-linenumber="21">
|
|
|
|
|
|
<code class="ruby"> }</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="22">
|
|
|
|
|
|
<code class="ruby"> end</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="23">
|
|
|
|
|
|
<code class="ruby"></code>
|
|
</li>
|
|
|
|
<li class="covered" data-hits="1" data-linenumber="24">
|
|
<span class="hits">1</span>
|
|
|
|
<code class="ruby"> private</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="25">
|
|
|
|
|
|
<code class="ruby"></code>
|
|
</li>
|
|
|
|
<li class="covered" data-hits="1" data-linenumber="26">
|
|
<span class="hits">1</span>
|
|
|
|
<code class="ruby"> def build_data(build)</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="27">
|
|
|
|
|
|
<code class="ruby"> {</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="28">
|
|
|
|
|
|
<code class="ruby"> 'id' => build.id,</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="29">
|
|
|
|
|
|
<code class="ruby"> 'repository_id' => build.repository_id,</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="30">
|
|
|
|
|
|
<code class="ruby"> 'commit_id' => build.commit_id,</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="31">
|
|
|
|
|
|
<code class="ruby"> 'number' => build.number,</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="32">
|
|
|
|
|
|
<code class="ruby"> 'config' => build.obfuscated_config.stringify_keys,</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="33">
|
|
|
|
|
|
<code class="ruby"> 'state' => build.state.to_s,</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="34">
|
|
|
|
|
|
<code class="ruby"> 'started_at' => format_date(build.started_at),</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="35">
|
|
|
|
|
|
<code class="ruby"> 'finished_at' => format_date(build.finished_at),</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="36">
|
|
|
|
|
|
<code class="ruby"> 'duration' => build.duration,</code>
|
|
</li>
|
|
|
|
<li class="missed" data-hits="0" data-linenumber="37">
|
|
|
|
|
|
<code class="ruby"> 'job_ids' => build.matrix.map { |job| job.id },</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="38">
|
|
|
|
|
|
<code class="ruby"> 'pull_request' => build.pull_request?</code>
|
|
</li>
|
|
|
|
<li class="missed" data-hits="0" data-linenumber="39">
|
|
|
|
|
|
<code class="ruby"> }</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="40">
|
|
|
|
|
|
<code class="ruby"> end</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="41">
|
|
|
|
|
|
<code class="ruby"></code>
|
|
</li>
|
|
|
|
<li class="covered" data-hits="1" data-linenumber="42">
|
|
<span class="hits">1</span>
|
|
|
|
<code class="ruby"> def commit_data(commit)</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="43">
|
|
|
|
|
|
<code class="ruby"> {</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="44">
|
|
|
|
|
|
<code class="ruby"> 'id' => commit.id,</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="45">
|
|
|
|
|
|
<code class="ruby"> 'sha' => commit.commit,</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="46">
|
|
|
|
|
|
<code class="ruby"> 'branch' => commit.branch,</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="47">
|
|
|
|
|
|
<code class="ruby"> 'message' => commit.message,</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="48">
|
|
|
|
|
|
<code class="ruby"> 'committed_at' => format_date(commit.committed_at),</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="49">
|
|
|
|
|
|
<code class="ruby"> 'author_name' => commit.author_name,</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="50">
|
|
|
|
|
|
<code class="ruby"> 'author_email' => commit.author_email,</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="51">
|
|
|
|
|
|
<code class="ruby"> 'committer_name' => commit.committer_name,</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="52">
|
|
|
|
|
|
<code class="ruby"> 'committer_email' => commit.committer_email,</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="53">
|
|
|
|
|
|
<code class="ruby"> 'compare_url' => commit.compare_url,</code>
|
|
</li>
|
|
|
|
<li class="missed" data-hits="0" data-linenumber="54">
|
|
|
|
|
|
<code class="ruby"> }</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="55">
|
|
|
|
|
|
<code class="ruby"> end</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="56">
|
|
|
|
|
|
<code class="ruby"> end</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="57">
|
|
|
|
|
|
<code class="ruby"> end</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="58">
|
|
|
|
|
|
<code class="ruby"> end</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="59">
|
|
|
|
|
|
<code class="ruby"> end</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="60">
|
|
|
|
|
|
<code class="ruby">end</code>
|
|
</li>
|
|
|
|
</ol>
|
|
</pre>
|
|
</div>
|
|
|
|
<div class="source_table" id="c46347e1a0d259fc446170187bf8517d99d49177">
|
|
<div class="header">
|
|
<h3>lib/travis/api/v2/http/broadcasts.rb</h3>
|
|
<h4><span class="red">66.67 %</span> covered</h4>
|
|
<div>
|
|
<b>15</b> relevant lines.
|
|
<span class="green"><b>10</b> lines covered</span> and
|
|
<span class="red"><b>5</b> lines missed.</span>
|
|
</div>
|
|
</div>
|
|
|
|
<pre>
|
|
<ol>
|
|
|
|
<li class="covered" data-hits="1" data-linenumber="1">
|
|
<span class="hits">1</span>
|
|
|
|
<code class="ruby">module Travis</code>
|
|
</li>
|
|
|
|
<li class="covered" data-hits="1" data-linenumber="2">
|
|
<span class="hits">1</span>
|
|
|
|
<code class="ruby"> module Api</code>
|
|
</li>
|
|
|
|
<li class="covered" data-hits="1" data-linenumber="3">
|
|
<span class="hits">1</span>
|
|
|
|
<code class="ruby"> module V2</code>
|
|
</li>
|
|
|
|
<li class="covered" data-hits="1" data-linenumber="4">
|
|
<span class="hits">1</span>
|
|
|
|
<code class="ruby"> module Http</code>
|
|
</li>
|
|
|
|
<li class="covered" data-hits="1" data-linenumber="5">
|
|
<span class="hits">1</span>
|
|
|
|
<code class="ruby"> class Broadcasts</code>
|
|
</li>
|
|
|
|
<li class="covered" data-hits="1" data-linenumber="6">
|
|
<span class="hits">1</span>
|
|
|
|
<code class="ruby"> attr_reader :broadcasts, :options</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="7">
|
|
|
|
|
|
<code class="ruby"></code>
|
|
</li>
|
|
|
|
<li class="covered" data-hits="1" data-linenumber="8">
|
|
<span class="hits">1</span>
|
|
|
|
<code class="ruby"> def initialize(broadcasts, options = {})</code>
|
|
</li>
|
|
|
|
<li class="missed" data-hits="0" data-linenumber="9">
|
|
|
|
|
|
<code class="ruby"> @broadcasts = broadcasts</code>
|
|
</li>
|
|
|
|
<li class="missed" data-hits="0" data-linenumber="10">
|
|
|
|
|
|
<code class="ruby"> @options = options</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="11">
|
|
|
|
|
|
<code class="ruby"> end</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="12">
|
|
|
|
|
|
<code class="ruby"></code>
|
|
</li>
|
|
|
|
<li class="covered" data-hits="1" data-linenumber="13">
|
|
<span class="hits">1</span>
|
|
|
|
<code class="ruby"> def data</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="14">
|
|
|
|
|
|
<code class="ruby"> {</code>
|
|
</li>
|
|
|
|
<li class="missed" data-hits="0" data-linenumber="15">
|
|
|
|
|
|
<code class="ruby"> 'broadcasts' => broadcasts.map { |broadcast| broadcast_data(broadcast) }</code>
|
|
</li>
|
|
|
|
<li class="missed" data-hits="0" data-linenumber="16">
|
|
|
|
|
|
<code class="ruby"> }</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="17">
|
|
|
|
|
|
<code class="ruby"> end</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="18">
|
|
|
|
|
|
<code class="ruby"></code>
|
|
</li>
|
|
|
|
<li class="covered" data-hits="1" data-linenumber="19">
|
|
<span class="hits">1</span>
|
|
|
|
<code class="ruby"> private</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="20">
|
|
|
|
|
|
<code class="ruby"></code>
|
|
</li>
|
|
|
|
<li class="covered" data-hits="1" data-linenumber="21">
|
|
<span class="hits">1</span>
|
|
|
|
<code class="ruby"> def broadcast_data(broadcast)</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="22">
|
|
|
|
|
|
<code class="ruby"> {</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="23">
|
|
|
|
|
|
<code class="ruby"> 'id' => broadcast.id,</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="24">
|
|
|
|
|
|
<code class="ruby"> 'message' => broadcast.message</code>
|
|
</li>
|
|
|
|
<li class="missed" data-hits="0" data-linenumber="25">
|
|
|
|
|
|
<code class="ruby"> }</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="26">
|
|
|
|
|
|
<code class="ruby"> end</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="27">
|
|
|
|
|
|
<code class="ruby"> end</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="28">
|
|
|
|
|
|
<code class="ruby"> end</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="29">
|
|
|
|
|
|
<code class="ruby"> end</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="30">
|
|
|
|
|
|
<code class="ruby"> end</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="31">
|
|
|
|
|
|
<code class="ruby">end</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="32">
|
|
|
|
|
|
<code class="ruby"></code>
|
|
</li>
|
|
|
|
</ol>
|
|
</pre>
|
|
</div>
|
|
|
|
<div class="source_table" id="8c4ac5c4e74342720580a492f7c3aa9d4d384e43">
|
|
<div class="header">
|
|
<h3>lib/travis/api/v2/http/build.rb</h3>
|
|
<h4><span class="red">60.87 %</span> covered</h4>
|
|
<div>
|
|
<b>23</b> relevant lines.
|
|
<span class="green"><b>14</b> lines covered</span> and
|
|
<span class="red"><b>9</b> lines missed.</span>
|
|
</div>
|
|
</div>
|
|
|
|
<pre>
|
|
<ol>
|
|
|
|
<li class="covered" data-hits="1" data-linenumber="1">
|
|
<span class="hits">1</span>
|
|
|
|
<code class="ruby">module Travis</code>
|
|
</li>
|
|
|
|
<li class="covered" data-hits="1" data-linenumber="2">
|
|
<span class="hits">1</span>
|
|
|
|
<code class="ruby"> module Api</code>
|
|
</li>
|
|
|
|
<li class="covered" data-hits="1" data-linenumber="3">
|
|
<span class="hits">1</span>
|
|
|
|
<code class="ruby"> module V2</code>
|
|
</li>
|
|
|
|
<li class="covered" data-hits="1" data-linenumber="4">
|
|
<span class="hits">1</span>
|
|
|
|
<code class="ruby"> module Http</code>
|
|
</li>
|
|
|
|
<li class="covered" data-hits="1" data-linenumber="5">
|
|
<span class="hits">1</span>
|
|
|
|
<code class="ruby"> class Build</code>
|
|
</li>
|
|
|
|
<li class="covered" data-hits="1" data-linenumber="6">
|
|
<span class="hits">1</span>
|
|
|
|
<code class="ruby"> include Formats</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="7">
|
|
|
|
|
|
<code class="ruby"></code>
|
|
</li>
|
|
|
|
<li class="covered" data-hits="1" data-linenumber="8">
|
|
<span class="hits">1</span>
|
|
|
|
<code class="ruby"> attr_reader :build, :options</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="9">
|
|
|
|
|
|
<code class="ruby"></code>
|
|
</li>
|
|
|
|
<li class="covered" data-hits="1" data-linenumber="10">
|
|
<span class="hits">1</span>
|
|
|
|
<code class="ruby"> def initialize(build, options = {})</code>
|
|
</li>
|
|
|
|
<li class="missed" data-hits="0" data-linenumber="11">
|
|
|
|
|
|
<code class="ruby"> options[:include_jobs] = true unless options.key?(:include_jobs)</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="12">
|
|
|
|
|
|
<code class="ruby"></code>
|
|
</li>
|
|
|
|
<li class="missed" data-hits="0" data-linenumber="13">
|
|
|
|
|
|
<code class="ruby"> @build = build</code>
|
|
</li>
|
|
|
|
<li class="missed" data-hits="0" data-linenumber="14">
|
|
|
|
|
|
<code class="ruby"> @options = options</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="15">
|
|
|
|
|
|
<code class="ruby"> end</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="16">
|
|
|
|
|
|
<code class="ruby"></code>
|
|
</li>
|
|
|
|
<li class="covered" data-hits="1" data-linenumber="17">
|
|
<span class="hits">1</span>
|
|
|
|
<code class="ruby"> def data</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="18">
|
|
|
|
|
|
<code class="ruby"> {</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="19">
|
|
|
|
|
|
<code class="ruby"> 'build' => build_data(build),</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="20">
|
|
|
|
|
|
<code class="ruby"> 'commit' => commit_data(build.commit),</code>
|
|
</li>
|
|
|
|
<li class="missed" data-hits="0" data-linenumber="21">
|
|
|
|
|
|
<code class="ruby"> 'jobs' => options[:include_jobs] ? build.matrix.map { |job| job_data(job) } : [],</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="22">
|
|
|
|
|
|
<code class="ruby"> 'annotations' => options[:include_jobs] ? Annotations.new(annotations(build), @options).data["annotations"] : [],</code>
|
|
</li>
|
|
|
|
<li class="missed" data-hits="0" data-linenumber="23">
|
|
|
|
|
|
<code class="ruby"> }</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="24">
|
|
|
|
|
|
<code class="ruby"> end</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="25">
|
|
|
|
|
|
<code class="ruby"></code>
|
|
</li>
|
|
|
|
<li class="covered" data-hits="1" data-linenumber="26">
|
|
<span class="hits">1</span>
|
|
|
|
<code class="ruby"> private</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="27">
|
|
|
|
|
|
<code class="ruby"></code>
|
|
</li>
|
|
|
|
<li class="covered" data-hits="1" data-linenumber="28">
|
|
<span class="hits">1</span>
|
|
|
|
<code class="ruby"> def build_data(build)</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="29">
|
|
|
|
|
|
<code class="ruby"> {</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="30">
|
|
|
|
|
|
<code class="ruby"> 'id' => build.id,</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="31">
|
|
|
|
|
|
<code class="ruby"> 'repository_id' => build.repository_id,</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="32">
|
|
|
|
|
|
<code class="ruby"> 'commit_id' => build.commit_id,</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="33">
|
|
|
|
|
|
<code class="ruby"> 'number' => build.number,</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="34">
|
|
|
|
|
|
<code class="ruby"> 'pull_request' => build.pull_request?,</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="35">
|
|
|
|
|
|
<code class="ruby"> 'pull_request_title' => build.pull_request_title,</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="36">
|
|
|
|
|
|
<code class="ruby"> 'pull_request_number' => build.pull_request_number,</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="37">
|
|
|
|
|
|
<code class="ruby"> 'config' => build.obfuscated_config.stringify_keys,</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="38">
|
|
|
|
|
|
<code class="ruby"> 'state' => build.state.to_s,</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="39">
|
|
|
|
|
|
<code class="ruby"> 'started_at' => format_date(build.started_at),</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="40">
|
|
|
|
|
|
<code class="ruby"> 'finished_at' => format_date(build.finished_at),</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="41">
|
|
|
|
|
|
<code class="ruby"> 'duration' => build.duration,</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="42">
|
|
|
|
|
|
<code class="ruby"> 'job_ids' => build.matrix_ids</code>
|
|
</li>
|
|
|
|
<li class="missed" data-hits="0" data-linenumber="43">
|
|
|
|
|
|
<code class="ruby"> }</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="44">
|
|
|
|
|
|
<code class="ruby"> end</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="45">
|
|
|
|
|
|
<code class="ruby"></code>
|
|
</li>
|
|
|
|
<li class="covered" data-hits="1" data-linenumber="46">
|
|
<span class="hits">1</span>
|
|
|
|
<code class="ruby"> def commit_data(commit)</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="47">
|
|
|
|
|
|
<code class="ruby"> {</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="48">
|
|
|
|
|
|
<code class="ruby"> 'id' => commit.id,</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="49">
|
|
|
|
|
|
<code class="ruby"> 'sha' => commit.commit,</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="50">
|
|
|
|
|
|
<code class="ruby"> 'branch' => commit.branch,</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="51">
|
|
|
|
|
|
<code class="ruby"> 'message' => commit.message,</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="52">
|
|
|
|
|
|
<code class="ruby"> 'committed_at' => format_date(commit.committed_at),</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="53">
|
|
|
|
|
|
<code class="ruby"> 'author_name' => commit.author_name,</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="54">
|
|
|
|
|
|
<code class="ruby"> 'author_email' => commit.author_email,</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="55">
|
|
|
|
|
|
<code class="ruby"> 'committer_name' => commit.committer_name,</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="56">
|
|
|
|
|
|
<code class="ruby"> 'committer_email' => commit.committer_email,</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="57">
|
|
|
|
|
|
<code class="ruby"> 'compare_url' => commit.compare_url,</code>
|
|
</li>
|
|
|
|
<li class="missed" data-hits="0" data-linenumber="58">
|
|
|
|
|
|
<code class="ruby"> }</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="59">
|
|
|
|
|
|
<code class="ruby"> end</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="60">
|
|
|
|
|
|
<code class="ruby"></code>
|
|
</li>
|
|
|
|
<li class="covered" data-hits="1" data-linenumber="61">
|
|
<span class="hits">1</span>
|
|
|
|
<code class="ruby"> def job_data(job)</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="62">
|
|
|
|
|
|
<code class="ruby"> {</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="63">
|
|
|
|
|
|
<code class="ruby"> 'id' => job.id,</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="64">
|
|
|
|
|
|
<code class="ruby"> 'repository_id' => job.repository_id,</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="65">
|
|
|
|
|
|
<code class="ruby"> 'build_id' => job.source_id,</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="66">
|
|
|
|
|
|
<code class="ruby"> 'commit_id' => job.commit_id,</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="67">
|
|
|
|
|
|
<code class="ruby"> 'log_id' => job.log_id,</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="68">
|
|
|
|
|
|
<code class="ruby"> 'state' => job.state.to_s,</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="69">
|
|
|
|
|
|
<code class="ruby"> 'number' => job.number,</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="70">
|
|
|
|
|
|
<code class="ruby"> 'config' => job.obfuscated_config.stringify_keys,</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="71">
|
|
|
|
|
|
<code class="ruby"> 'started_at' => format_date(job.started_at),</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="72">
|
|
|
|
|
|
<code class="ruby"> 'finished_at' => format_date(job.finished_at),</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="73">
|
|
|
|
|
|
<code class="ruby"> 'queue' => job.queue,</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="74">
|
|
|
|
|
|
<code class="ruby"> 'allow_failure' => job.allow_failure,</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="75">
|
|
|
|
|
|
<code class="ruby"> 'tags' => job.tags,</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="76">
|
|
|
|
|
|
<code class="ruby"> 'annotation_ids' => job.annotation_ids,</code>
|
|
</li>
|
|
|
|
<li class="missed" data-hits="0" data-linenumber="77">
|
|
|
|
|
|
<code class="ruby"> }</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="78">
|
|
|
|
|
|
<code class="ruby"> end</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="79">
|
|
|
|
|
|
<code class="ruby"></code>
|
|
</li>
|
|
|
|
<li class="covered" data-hits="1" data-linenumber="80">
|
|
<span class="hits">1</span>
|
|
|
|
<code class="ruby"> def annotations(build)</code>
|
|
</li>
|
|
|
|
<li class="missed" data-hits="0" data-linenumber="81">
|
|
|
|
|
|
<code class="ruby"> build.matrix.map(&:annotations).flatten</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="82">
|
|
|
|
|
|
<code class="ruby"> end</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="83">
|
|
|
|
|
|
<code class="ruby"> end</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="84">
|
|
|
|
|
|
<code class="ruby"> end</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="85">
|
|
|
|
|
|
<code class="ruby"> end</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="86">
|
|
|
|
|
|
<code class="ruby"> end</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="87">
|
|
|
|
|
|
<code class="ruby">end</code>
|
|
</li>
|
|
|
|
</ol>
|
|
</pre>
|
|
</div>
|
|
|
|
<div class="source_table" id="1abcacda27e1da4c1f9879072dc5eb5d0a6f1eab">
|
|
<div class="header">
|
|
<h3>lib/travis/api/v2/http/builds.rb</h3>
|
|
<h4><span class="red">59.09 %</span> covered</h4>
|
|
<div>
|
|
<b>22</b> relevant lines.
|
|
<span class="green"><b>13</b> lines covered</span> and
|
|
<span class="red"><b>9</b> lines missed.</span>
|
|
</div>
|
|
</div>
|
|
|
|
<pre>
|
|
<ol>
|
|
|
|
<li class="covered" data-hits="1" data-linenumber="1">
|
|
<span class="hits">1</span>
|
|
|
|
<code class="ruby">module Travis</code>
|
|
</li>
|
|
|
|
<li class="covered" data-hits="1" data-linenumber="2">
|
|
<span class="hits">1</span>
|
|
|
|
<code class="ruby"> module Api</code>
|
|
</li>
|
|
|
|
<li class="covered" data-hits="1" data-linenumber="3">
|
|
<span class="hits">1</span>
|
|
|
|
<code class="ruby"> module V2</code>
|
|
</li>
|
|
|
|
<li class="covered" data-hits="1" data-linenumber="4">
|
|
<span class="hits">1</span>
|
|
|
|
<code class="ruby"> module Http</code>
|
|
</li>
|
|
|
|
<li class="covered" data-hits="1" data-linenumber="5">
|
|
<span class="hits">1</span>
|
|
|
|
<code class="ruby"> class Builds</code>
|
|
</li>
|
|
|
|
<li class="covered" data-hits="1" data-linenumber="6">
|
|
<span class="hits">1</span>
|
|
|
|
<code class="ruby"> include Formats</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="7">
|
|
|
|
|
|
<code class="ruby"></code>
|
|
</li>
|
|
|
|
<li class="covered" data-hits="1" data-linenumber="8">
|
|
<span class="hits">1</span>
|
|
|
|
<code class="ruby"> attr_reader :builds, :commits, :options</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="9">
|
|
|
|
|
|
<code class="ruby"></code>
|
|
</li>
|
|
|
|
<li class="covered" data-hits="1" data-linenumber="10">
|
|
<span class="hits">1</span>
|
|
|
|
<code class="ruby"> def initialize(builds, options = {})</code>
|
|
</li>
|
|
|
|
<li class="missed" data-hits="0" data-linenumber="11">
|
|
|
|
|
|
<code class="ruby"> @builds = builds</code>
|
|
</li>
|
|
|
|
<li class="missed" data-hits="0" data-linenumber="12">
|
|
|
|
|
|
<code class="ruby"> @commits = builds.map(&:commit)</code>
|
|
</li>
|
|
|
|
<li class="missed" data-hits="0" data-linenumber="13">
|
|
|
|
|
|
<code class="ruby"> @options = options</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="14">
|
|
|
|
|
|
<code class="ruby"> end</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="15">
|
|
|
|
|
|
<code class="ruby"></code>
|
|
</li>
|
|
|
|
<li class="covered" data-hits="1" data-linenumber="16">
|
|
<span class="hits">1</span>
|
|
|
|
<code class="ruby"> def data</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="17">
|
|
|
|
|
|
<code class="ruby"> {</code>
|
|
</li>
|
|
|
|
<li class="missed" data-hits="0" data-linenumber="18">
|
|
|
|
|
|
<code class="ruby"> 'builds' => builds.map { |build| build_data(build) },</code>
|
|
</li>
|
|
|
|
<li class="missed" data-hits="0" data-linenumber="19">
|
|
|
|
|
|
<code class="ruby"> 'commits' => commits.map { |commit| commit_data(commit) }</code>
|
|
</li>
|
|
|
|
<li class="missed" data-hits="0" data-linenumber="20">
|
|
|
|
|
|
<code class="ruby"> }</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="21">
|
|
|
|
|
|
<code class="ruby"> end</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="22">
|
|
|
|
|
|
<code class="ruby"></code>
|
|
</li>
|
|
|
|
<li class="covered" data-hits="1" data-linenumber="23">
|
|
<span class="hits">1</span>
|
|
|
|
<code class="ruby"> private</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="24">
|
|
|
|
|
|
<code class="ruby"></code>
|
|
</li>
|
|
|
|
<li class="covered" data-hits="1" data-linenumber="25">
|
|
<span class="hits">1</span>
|
|
|
|
<code class="ruby"> def build_data(build)</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="26">
|
|
|
|
|
|
<code class="ruby"> {</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="27">
|
|
|
|
|
|
<code class="ruby"> 'id' => build.id,</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="28">
|
|
|
|
|
|
<code class="ruby"> 'repository_id' => build.repository_id,</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="29">
|
|
|
|
|
|
<code class="ruby"> 'commit_id' => build.commit_id,</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="30">
|
|
|
|
|
|
<code class="ruby"> 'number' => build.number,</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="31">
|
|
|
|
|
|
<code class="ruby"> 'pull_request' => build.pull_request?,</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="32">
|
|
|
|
|
|
<code class="ruby"> 'pull_request_title' => build.pull_request_title,</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="33">
|
|
|
|
|
|
<code class="ruby"> 'pull_request_number' => build.pull_request_number,</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="34">
|
|
|
|
|
|
<code class="ruby"> 'config' => build.obfuscated_config.stringify_keys,</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="35">
|
|
|
|
|
|
<code class="ruby"> 'state' => build.state.to_s,</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="36">
|
|
|
|
|
|
<code class="ruby"> 'started_at' => format_date(build.started_at),</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="37">
|
|
|
|
|
|
<code class="ruby"> 'finished_at' => format_date(build.finished_at),</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="38">
|
|
|
|
|
|
<code class="ruby"> 'duration' => build.duration,</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="39">
|
|
|
|
|
|
<code class="ruby"> 'job_ids' => matrix_ids(build)</code>
|
|
</li>
|
|
|
|
<li class="missed" data-hits="0" data-linenumber="40">
|
|
|
|
|
|
<code class="ruby"> }</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="41">
|
|
|
|
|
|
<code class="ruby"> end</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="42">
|
|
|
|
|
|
<code class="ruby"></code>
|
|
</li>
|
|
|
|
<li class="covered" data-hits="1" data-linenumber="43">
|
|
<span class="hits">1</span>
|
|
|
|
<code class="ruby"> def matrix_ids(build)</code>
|
|
</li>
|
|
|
|
<li class="missed" data-hits="0" data-linenumber="44">
|
|
|
|
|
|
<code class="ruby"> build.cached_matrix_ids || build.matrix_ids</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="45">
|
|
|
|
|
|
<code class="ruby"> end</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="46">
|
|
|
|
|
|
<code class="ruby"></code>
|
|
</li>
|
|
|
|
<li class="covered" data-hits="1" data-linenumber="47">
|
|
<span class="hits">1</span>
|
|
|
|
<code class="ruby"> def commit_data(commit)</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="48">
|
|
|
|
|
|
<code class="ruby"> {</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="49">
|
|
|
|
|
|
<code class="ruby"> 'id' => commit.id,</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="50">
|
|
|
|
|
|
<code class="ruby"> 'sha' => commit.commit,</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="51">
|
|
|
|
|
|
<code class="ruby"> 'branch' => commit.branch,</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="52">
|
|
|
|
|
|
<code class="ruby"> 'message' => commit.message,</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="53">
|
|
|
|
|
|
<code class="ruby"> 'committed_at' => format_date(commit.committed_at),</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="54">
|
|
|
|
|
|
<code class="ruby"> 'author_name' => commit.author_name,</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="55">
|
|
|
|
|
|
<code class="ruby"> 'author_email' => commit.author_email,</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="56">
|
|
|
|
|
|
<code class="ruby"> 'committer_name' => commit.committer_name,</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="57">
|
|
|
|
|
|
<code class="ruby"> 'committer_email' => commit.committer_email,</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="58">
|
|
|
|
|
|
<code class="ruby"> 'compare_url' => commit.compare_url,</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="59">
|
|
|
|
|
|
<code class="ruby"> 'pull_request_number' => commit.pull_request_number</code>
|
|
</li>
|
|
|
|
<li class="missed" data-hits="0" data-linenumber="60">
|
|
|
|
|
|
<code class="ruby"> }</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="61">
|
|
|
|
|
|
<code class="ruby"> end</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="62">
|
|
|
|
|
|
<code class="ruby"> end</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="63">
|
|
|
|
|
|
<code class="ruby"> end</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="64">
|
|
|
|
|
|
<code class="ruby"> end</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="65">
|
|
|
|
|
|
<code class="ruby"> end</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="66">
|
|
|
|
|
|
<code class="ruby">end</code>
|
|
</li>
|
|
|
|
</ol>
|
|
</pre>
|
|
</div>
|
|
|
|
<div class="source_table" id="b7d8a575e84049f0f7983320c9ad1737cc7619a1">
|
|
<div class="header">
|
|
<h3>lib/travis/api/v2/http/caches.rb</h3>
|
|
<h4><span class="red">73.33 %</span> covered</h4>
|
|
<div>
|
|
<b>15</b> relevant lines.
|
|
<span class="green"><b>11</b> lines covered</span> and
|
|
<span class="red"><b>4</b> lines missed.</span>
|
|
</div>
|
|
</div>
|
|
|
|
<pre>
|
|
<ol>
|
|
|
|
<li class="covered" data-hits="1" data-linenumber="1">
|
|
<span class="hits">1</span>
|
|
|
|
<code class="ruby">module Travis</code>
|
|
</li>
|
|
|
|
<li class="covered" data-hits="1" data-linenumber="2">
|
|
<span class="hits">1</span>
|
|
|
|
<code class="ruby"> module Api</code>
|
|
</li>
|
|
|
|
<li class="covered" data-hits="1" data-linenumber="3">
|
|
<span class="hits">1</span>
|
|
|
|
<code class="ruby"> module V2</code>
|
|
</li>
|
|
|
|
<li class="covered" data-hits="1" data-linenumber="4">
|
|
<span class="hits">1</span>
|
|
|
|
<code class="ruby"> module Http</code>
|
|
</li>
|
|
|
|
<li class="covered" data-hits="1" data-linenumber="5">
|
|
<span class="hits">1</span>
|
|
|
|
<code class="ruby"> class Caches</code>
|
|
</li>
|
|
|
|
<li class="covered" data-hits="1" data-linenumber="6">
|
|
<span class="hits">1</span>
|
|
|
|
<code class="ruby"> include Formats</code>
|
|
</li>
|
|
|
|
<li class="covered" data-hits="1" data-linenumber="7">
|
|
<span class="hits">1</span>
|
|
|
|
<code class="ruby"> attr_reader :caches, :options</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="8">
|
|
|
|
|
|
<code class="ruby"></code>
|
|
</li>
|
|
|
|
<li class="covered" data-hits="1" data-linenumber="9">
|
|
<span class="hits">1</span>
|
|
|
|
<code class="ruby"> def initialize(caches, options = {})</code>
|
|
</li>
|
|
|
|
<li class="missed" data-hits="0" data-linenumber="10">
|
|
|
|
|
|
<code class="ruby"> @caches = caches</code>
|
|
</li>
|
|
|
|
<li class="missed" data-hits="0" data-linenumber="11">
|
|
|
|
|
|
<code class="ruby"> @options = options</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="12">
|
|
|
|
|
|
<code class="ruby"> end</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="13">
|
|
|
|
|
|
<code class="ruby"></code>
|
|
</li>
|
|
|
|
<li class="covered" data-hits="1" data-linenumber="14">
|
|
<span class="hits">1</span>
|
|
|
|
<code class="ruby"> def data</code>
|
|
</li>
|
|
|
|
<li class="missed" data-hits="0" data-linenumber="15">
|
|
|
|
|
|
<code class="ruby"> { 'caches' => caches.map { |cache| cache_data(cache) } }</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="16">
|
|
|
|
|
|
<code class="ruby"> end</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="17">
|
|
|
|
|
|
<code class="ruby"></code>
|
|
</li>
|
|
|
|
<li class="covered" data-hits="1" data-linenumber="18">
|
|
<span class="hits">1</span>
|
|
|
|
<code class="ruby"> private</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="19">
|
|
|
|
|
|
<code class="ruby"></code>
|
|
</li>
|
|
|
|
<li class="covered" data-hits="1" data-linenumber="20">
|
|
<span class="hits">1</span>
|
|
|
|
<code class="ruby"> def cache_data(cache)</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="21">
|
|
|
|
|
|
<code class="ruby"> {</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="22">
|
|
|
|
|
|
<code class="ruby"> 'repository_id' => cache.repository.id,</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="23">
|
|
|
|
|
|
<code class="ruby"> 'size' => cache.size,</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="24">
|
|
|
|
|
|
<code class="ruby"> 'slug' => cache.slug,</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="25">
|
|
|
|
|
|
<code class="ruby"> 'branch' => cache.branch,</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="26">
|
|
|
|
|
|
<code class="ruby"> 'last_modified' => format_date(cache.last_modified)</code>
|
|
</li>
|
|
|
|
<li class="missed" data-hits="0" data-linenumber="27">
|
|
|
|
|
|
<code class="ruby"> }</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="28">
|
|
|
|
|
|
<code class="ruby"> end</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="29">
|
|
|
|
|
|
<code class="ruby"> end</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="30">
|
|
|
|
|
|
<code class="ruby"> end</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="31">
|
|
|
|
|
|
<code class="ruby"> end</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="32">
|
|
|
|
|
|
<code class="ruby"> end</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="33">
|
|
|
|
|
|
<code class="ruby">end</code>
|
|
</li>
|
|
|
|
</ol>
|
|
</pre>
|
|
</div>
|
|
|
|
<div class="source_table" id="452e1e09b24321c66a631e743b6a84331da9bd13">
|
|
<div class="header">
|
|
<h3>lib/travis/api/v2/http/env_var.rb</h3>
|
|
<h4><span class="red">61.54 %</span> covered</h4>
|
|
<div>
|
|
<b>13</b> relevant lines.
|
|
<span class="green"><b>8</b> lines covered</span> and
|
|
<span class="red"><b>5</b> lines missed.</span>
|
|
</div>
|
|
</div>
|
|
|
|
<pre>
|
|
<ol>
|
|
|
|
<li class="covered" data-hits="1" data-linenumber="1">
|
|
<span class="hits">1</span>
|
|
|
|
<code class="ruby">module Travis</code>
|
|
</li>
|
|
|
|
<li class="covered" data-hits="1" data-linenumber="2">
|
|
<span class="hits">1</span>
|
|
|
|
<code class="ruby"> module Api</code>
|
|
</li>
|
|
|
|
<li class="covered" data-hits="1" data-linenumber="3">
|
|
<span class="hits">1</span>
|
|
|
|
<code class="ruby"> module V2</code>
|
|
</li>
|
|
|
|
<li class="covered" data-hits="1" data-linenumber="4">
|
|
<span class="hits">1</span>
|
|
|
|
<code class="ruby"> module Http</code>
|
|
</li>
|
|
|
|
<li class="covered" data-hits="1" data-linenumber="5">
|
|
<span class="hits">1</span>
|
|
|
|
<code class="ruby"> class EnvVar < Travis::Api::Serializer</code>
|
|
</li>
|
|
|
|
<li class="covered" data-hits="1" data-linenumber="6">
|
|
<span class="hits">1</span>
|
|
|
|
<code class="ruby"> attributes :id, :name, :value, :public, :repository_id</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="7">
|
|
|
|
|
|
<code class="ruby"></code>
|
|
</li>
|
|
|
|
<li class="covered" data-hits="1" data-linenumber="8">
|
|
<span class="hits">1</span>
|
|
|
|
<code class="ruby"> def value</code>
|
|
</li>
|
|
|
|
<li class="missed" data-hits="0" data-linenumber="9">
|
|
|
|
|
|
<code class="ruby"> if object.public?</code>
|
|
</li>
|
|
|
|
<li class="missed" data-hits="0" data-linenumber="10">
|
|
|
|
|
|
<code class="ruby"> object.value.decrypt</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="11">
|
|
|
|
|
|
<code class="ruby"> end</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="12">
|
|
|
|
|
|
<code class="ruby"> end</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="13">
|
|
|
|
|
|
<code class="ruby"></code>
|
|
</li>
|
|
|
|
<li class="covered" data-hits="1" data-linenumber="14">
|
|
<span class="hits">1</span>
|
|
|
|
<code class="ruby"> def serializable_hash</code>
|
|
</li>
|
|
|
|
<li class="missed" data-hits="0" data-linenumber="15">
|
|
|
|
|
|
<code class="ruby"> hash = super</code>
|
|
</li>
|
|
|
|
<li class="missed" data-hits="0" data-linenumber="16">
|
|
|
|
|
|
<code class="ruby"> hash.delete :value unless object.public?</code>
|
|
</li>
|
|
|
|
<li class="missed" data-hits="0" data-linenumber="17">
|
|
|
|
|
|
<code class="ruby"> hash</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="18">
|
|
|
|
|
|
<code class="ruby"> end</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="19">
|
|
|
|
|
|
<code class="ruby"> end</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="20">
|
|
|
|
|
|
<code class="ruby"> end</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="21">
|
|
|
|
|
|
<code class="ruby"> end</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="22">
|
|
|
|
|
|
<code class="ruby"> end</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="23">
|
|
|
|
|
|
<code class="ruby">end</code>
|
|
</li>
|
|
|
|
</ol>
|
|
</pre>
|
|
</div>
|
|
|
|
<div class="source_table" id="f91e8a59d86280d6f7eb63939f3a080ab5f82e0f">
|
|
<div class="header">
|
|
<h3>lib/travis/api/v2/http/env_vars.rb</h3>
|
|
<h4><span class="green">100.0 %</span> covered</h4>
|
|
<div>
|
|
<b>1</b> relevant lines.
|
|
<span class="green"><b>1</b> lines covered</span> and
|
|
<span class="red"><b>0</b> lines missed.</span>
|
|
</div>
|
|
</div>
|
|
|
|
<pre>
|
|
<ol>
|
|
|
|
<li class="covered" data-hits="1" data-linenumber="1">
|
|
<span class="hits">1</span>
|
|
|
|
<code class="ruby">class Travis::Api::V2::Http::EnvVars < Travis::Api::ArraySerializer</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="2">
|
|
|
|
|
|
<code class="ruby">end</code>
|
|
</li>
|
|
|
|
</ol>
|
|
</pre>
|
|
</div>
|
|
|
|
<div class="source_table" id="16f73e884ddd5d7c35925c636e1981fa77cb5467">
|
|
<div class="header">
|
|
<h3>lib/travis/api/v2/http/hooks.rb</h3>
|
|
<h4><span class="red">66.67 %</span> covered</h4>
|
|
<div>
|
|
<b>15</b> relevant lines.
|
|
<span class="green"><b>10</b> lines covered</span> and
|
|
<span class="red"><b>5</b> lines missed.</span>
|
|
</div>
|
|
</div>
|
|
|
|
<pre>
|
|
<ol>
|
|
|
|
<li class="covered" data-hits="1" data-linenumber="1">
|
|
<span class="hits">1</span>
|
|
|
|
<code class="ruby">module Travis</code>
|
|
</li>
|
|
|
|
<li class="covered" data-hits="1" data-linenumber="2">
|
|
<span class="hits">1</span>
|
|
|
|
<code class="ruby"> module Api</code>
|
|
</li>
|
|
|
|
<li class="covered" data-hits="1" data-linenumber="3">
|
|
<span class="hits">1</span>
|
|
|
|
<code class="ruby"> module V2</code>
|
|
</li>
|
|
|
|
<li class="covered" data-hits="1" data-linenumber="4">
|
|
<span class="hits">1</span>
|
|
|
|
<code class="ruby"> module Http</code>
|
|
</li>
|
|
|
|
<li class="covered" data-hits="1" data-linenumber="5">
|
|
<span class="hits">1</span>
|
|
|
|
<code class="ruby"> class Hooks</code>
|
|
</li>
|
|
|
|
<li class="covered" data-hits="1" data-linenumber="6">
|
|
<span class="hits">1</span>
|
|
|
|
<code class="ruby"> attr_reader :hooks, :options</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="7">
|
|
|
|
|
|
<code class="ruby"></code>
|
|
</li>
|
|
|
|
<li class="covered" data-hits="1" data-linenumber="8">
|
|
<span class="hits">1</span>
|
|
|
|
<code class="ruby"> def initialize(hooks, options = {})</code>
|
|
</li>
|
|
|
|
<li class="missed" data-hits="0" data-linenumber="9">
|
|
|
|
|
|
<code class="ruby"> @hooks = hooks</code>
|
|
</li>
|
|
|
|
<li class="missed" data-hits="0" data-linenumber="10">
|
|
|
|
|
|
<code class="ruby"> @options = options</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="11">
|
|
|
|
|
|
<code class="ruby"> end</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="12">
|
|
|
|
|
|
<code class="ruby"></code>
|
|
</li>
|
|
|
|
<li class="covered" data-hits="1" data-linenumber="13">
|
|
<span class="hits">1</span>
|
|
|
|
<code class="ruby"> def data</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="14">
|
|
|
|
|
|
<code class="ruby"> {</code>
|
|
</li>
|
|
|
|
<li class="missed" data-hits="0" data-linenumber="15">
|
|
|
|
|
|
<code class="ruby"> 'hooks' => hooks.map { |hook| hook_data(hook) },</code>
|
|
</li>
|
|
|
|
<li class="missed" data-hits="0" data-linenumber="16">
|
|
|
|
|
|
<code class="ruby"> }</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="17">
|
|
|
|
|
|
<code class="ruby"> end</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="18">
|
|
|
|
|
|
<code class="ruby"></code>
|
|
</li>
|
|
|
|
<li class="covered" data-hits="1" data-linenumber="19">
|
|
<span class="hits">1</span>
|
|
|
|
<code class="ruby"> private</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="20">
|
|
|
|
|
|
<code class="ruby"></code>
|
|
</li>
|
|
|
|
<li class="covered" data-hits="1" data-linenumber="21">
|
|
<span class="hits">1</span>
|
|
|
|
<code class="ruby"> def hook_data(hook)</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="22">
|
|
|
|
|
|
<code class="ruby"> {</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="23">
|
|
|
|
|
|
<code class="ruby"> 'id' => hook.id,</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="24">
|
|
|
|
|
|
<code class="ruby"> 'name' => hook.name,</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="25">
|
|
|
|
|
|
<code class="ruby"> 'owner_name' => hook.owner_name,</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="26">
|
|
|
|
|
|
<code class="ruby"> 'description' => hook.description,</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="27">
|
|
|
|
|
|
<code class="ruby"> 'active' => hook.active,</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="28">
|
|
|
|
|
|
<code class="ruby"> 'private' => hook.private,</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="29">
|
|
|
|
|
|
<code class="ruby"> 'admin' => hook.admin?</code>
|
|
</li>
|
|
|
|
<li class="missed" data-hits="0" data-linenumber="30">
|
|
|
|
|
|
<code class="ruby"> }</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="31">
|
|
|
|
|
|
<code class="ruby"> end</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="32">
|
|
|
|
|
|
<code class="ruby"> end</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="33">
|
|
|
|
|
|
<code class="ruby"> end</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="34">
|
|
|
|
|
|
<code class="ruby"> end</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="35">
|
|
|
|
|
|
<code class="ruby"> end</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="36">
|
|
|
|
|
|
<code class="ruby">end</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="37">
|
|
|
|
|
|
<code class="ruby"></code>
|
|
</li>
|
|
|
|
</ol>
|
|
</pre>
|
|
</div>
|
|
|
|
<div class="source_table" id="7bb06459f99796e92585a0613514a4dc10a3b4e6">
|
|
<div class="header">
|
|
<h3>lib/travis/api/v2/http/job.rb</h3>
|
|
<h4><span class="red">70.59 %</span> covered</h4>
|
|
<div>
|
|
<b>17</b> relevant lines.
|
|
<span class="green"><b>12</b> lines covered</span> and
|
|
<span class="red"><b>5</b> lines missed.</span>
|
|
</div>
|
|
</div>
|
|
|
|
<pre>
|
|
<ol>
|
|
|
|
<li class="covered" data-hits="1" data-linenumber="1">
|
|
<span class="hits">1</span>
|
|
|
|
<code class="ruby">module Travis</code>
|
|
</li>
|
|
|
|
<li class="covered" data-hits="1" data-linenumber="2">
|
|
<span class="hits">1</span>
|
|
|
|
<code class="ruby"> module Api</code>
|
|
</li>
|
|
|
|
<li class="covered" data-hits="1" data-linenumber="3">
|
|
<span class="hits">1</span>
|
|
|
|
<code class="ruby"> module V2</code>
|
|
</li>
|
|
|
|
<li class="covered" data-hits="1" data-linenumber="4">
|
|
<span class="hits">1</span>
|
|
|
|
<code class="ruby"> module Http</code>
|
|
</li>
|
|
|
|
<li class="covered" data-hits="1" data-linenumber="5">
|
|
<span class="hits">1</span>
|
|
|
|
<code class="ruby"> class Job</code>
|
|
</li>
|
|
|
|
<li class="covered" data-hits="1" data-linenumber="6">
|
|
<span class="hits">1</span>
|
|
|
|
<code class="ruby"> include Formats</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="7">
|
|
|
|
|
|
<code class="ruby"></code>
|
|
</li>
|
|
|
|
<li class="covered" data-hits="1" data-linenumber="8">
|
|
<span class="hits">1</span>
|
|
|
|
<code class="ruby"> attr_reader :job, :options</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="9">
|
|
|
|
|
|
<code class="ruby"></code>
|
|
</li>
|
|
|
|
<li class="covered" data-hits="1" data-linenumber="10">
|
|
<span class="hits">1</span>
|
|
|
|
<code class="ruby"> def initialize(job, options = {})</code>
|
|
</li>
|
|
|
|
<li class="missed" data-hits="0" data-linenumber="11">
|
|
|
|
|
|
<code class="ruby"> @job = job</code>
|
|
</li>
|
|
|
|
<li class="missed" data-hits="0" data-linenumber="12">
|
|
|
|
|
|
<code class="ruby"> @options = options</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="13">
|
|
|
|
|
|
<code class="ruby"> end</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="14">
|
|
|
|
|
|
<code class="ruby"></code>
|
|
</li>
|
|
|
|
<li class="covered" data-hits="1" data-linenumber="15">
|
|
<span class="hits">1</span>
|
|
|
|
<code class="ruby"> def data</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="16">
|
|
|
|
|
|
<code class="ruby"> {</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="17">
|
|
|
|
|
|
<code class="ruby"> 'job' => job_data(job),</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="18">
|
|
|
|
|
|
<code class="ruby"> 'commit' => commit_data(job.commit),</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="19">
|
|
|
|
|
|
<code class="ruby"> 'annotations' => Annotations.new(job.annotations, @options).data["annotations"],</code>
|
|
</li>
|
|
|
|
<li class="missed" data-hits="0" data-linenumber="20">
|
|
|
|
|
|
<code class="ruby"> }</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="21">
|
|
|
|
|
|
<code class="ruby"> end</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="22">
|
|
|
|
|
|
<code class="ruby"></code>
|
|
</li>
|
|
|
|
<li class="covered" data-hits="1" data-linenumber="23">
|
|
<span class="hits">1</span>
|
|
|
|
<code class="ruby"> private</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="24">
|
|
|
|
|
|
<code class="ruby"></code>
|
|
</li>
|
|
|
|
<li class="covered" data-hits="1" data-linenumber="25">
|
|
<span class="hits">1</span>
|
|
|
|
<code class="ruby"> def job_data(job)</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="26">
|
|
|
|
|
|
<code class="ruby"> {</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="27">
|
|
|
|
|
|
<code class="ruby"> 'id' => job.id,</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="28">
|
|
|
|
|
|
<code class="ruby"> 'repository_id' => job.repository_id,</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="29">
|
|
|
|
|
|
<code class="ruby"> 'repository_slug' => job.repository.slug,</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="30">
|
|
|
|
|
|
<code class="ruby"> 'build_id' => job.source_id,</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="31">
|
|
|
|
|
|
<code class="ruby"> 'commit_id' => job.commit_id,</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="32">
|
|
|
|
|
|
<code class="ruby"> 'log_id' => job.log_id,</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="33">
|
|
|
|
|
|
<code class="ruby"> 'number' => job.number,</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="34">
|
|
|
|
|
|
<code class="ruby"> 'config' => job.obfuscated_config.stringify_keys,</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="35">
|
|
|
|
|
|
<code class="ruby"> 'state' => job.state.to_s,</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="36">
|
|
|
|
|
|
<code class="ruby"> 'started_at' => format_date(job.started_at),</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="37">
|
|
|
|
|
|
<code class="ruby"> 'finished_at' => format_date(job.finished_at),</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="38">
|
|
|
|
|
|
<code class="ruby"> 'queue' => job.queue,</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="39">
|
|
|
|
|
|
<code class="ruby"> 'allow_failure' => job.allow_failure,</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="40">
|
|
|
|
|
|
<code class="ruby"> 'tags' => job.tags,</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="41">
|
|
|
|
|
|
<code class="ruby"> 'annotation_ids' => job.annotation_ids,</code>
|
|
</li>
|
|
|
|
<li class="missed" data-hits="0" data-linenumber="42">
|
|
|
|
|
|
<code class="ruby"> }</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="43">
|
|
|
|
|
|
<code class="ruby"> end</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="44">
|
|
|
|
|
|
<code class="ruby"></code>
|
|
</li>
|
|
|
|
<li class="covered" data-hits="1" data-linenumber="45">
|
|
<span class="hits">1</span>
|
|
|
|
<code class="ruby"> def commit_data(commit)</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="46">
|
|
|
|
|
|
<code class="ruby"> {</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="47">
|
|
|
|
|
|
<code class="ruby"> 'id' => commit.id,</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="48">
|
|
|
|
|
|
<code class="ruby"> 'sha' => commit.commit,</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="49">
|
|
|
|
|
|
<code class="ruby"> 'branch' => commit.branch,</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="50">
|
|
|
|
|
|
<code class="ruby"> 'message' => commit.message,</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="51">
|
|
|
|
|
|
<code class="ruby"> 'committed_at' => format_date(commit.committed_at),</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="52">
|
|
|
|
|
|
<code class="ruby"> 'author_name' => commit.author_name,</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="53">
|
|
|
|
|
|
<code class="ruby"> 'author_email' => commit.author_email,</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="54">
|
|
|
|
|
|
<code class="ruby"> 'committer_name' => commit.committer_name,</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="55">
|
|
|
|
|
|
<code class="ruby"> 'committer_email' => commit.committer_email,</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="56">
|
|
|
|
|
|
<code class="ruby"> 'compare_url' => commit.compare_url,</code>
|
|
</li>
|
|
|
|
<li class="missed" data-hits="0" data-linenumber="57">
|
|
|
|
|
|
<code class="ruby"> }</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="58">
|
|
|
|
|
|
<code class="ruby"> end</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="59">
|
|
|
|
|
|
<code class="ruby"> end</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="60">
|
|
|
|
|
|
<code class="ruby"> end</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="61">
|
|
|
|
|
|
<code class="ruby"> end</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="62">
|
|
|
|
|
|
<code class="ruby"> end</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="63">
|
|
|
|
|
|
<code class="ruby">end</code>
|
|
</li>
|
|
|
|
</ol>
|
|
</pre>
|
|
</div>
|
|
|
|
<div class="source_table" id="28a544a6de90280731859574fbbbcf82c3b12b13">
|
|
<div class="header">
|
|
<h3>lib/travis/api/v2/http/jobs.rb</h3>
|
|
<h4><span class="red">63.16 %</span> covered</h4>
|
|
<div>
|
|
<b>19</b> relevant lines.
|
|
<span class="green"><b>12</b> lines covered</span> and
|
|
<span class="red"><b>7</b> lines missed.</span>
|
|
</div>
|
|
</div>
|
|
|
|
<pre>
|
|
<ol>
|
|
|
|
<li class="covered" data-hits="1" data-linenumber="1">
|
|
<span class="hits">1</span>
|
|
|
|
<code class="ruby">module Travis</code>
|
|
</li>
|
|
|
|
<li class="covered" data-hits="1" data-linenumber="2">
|
|
<span class="hits">1</span>
|
|
|
|
<code class="ruby"> module Api</code>
|
|
</li>
|
|
|
|
<li class="covered" data-hits="1" data-linenumber="3">
|
|
<span class="hits">1</span>
|
|
|
|
<code class="ruby"> module V2</code>
|
|
</li>
|
|
|
|
<li class="covered" data-hits="1" data-linenumber="4">
|
|
<span class="hits">1</span>
|
|
|
|
<code class="ruby"> module Http</code>
|
|
</li>
|
|
|
|
<li class="covered" data-hits="1" data-linenumber="5">
|
|
<span class="hits">1</span>
|
|
|
|
<code class="ruby"> class Jobs</code>
|
|
</li>
|
|
|
|
<li class="covered" data-hits="1" data-linenumber="6">
|
|
<span class="hits">1</span>
|
|
|
|
<code class="ruby"> include Formats</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="7">
|
|
|
|
|
|
<code class="ruby"></code>
|
|
</li>
|
|
|
|
<li class="covered" data-hits="1" data-linenumber="8">
|
|
<span class="hits">1</span>
|
|
|
|
<code class="ruby"> attr_reader :jobs, :options</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="9">
|
|
|
|
|
|
<code class="ruby"></code>
|
|
</li>
|
|
|
|
<li class="covered" data-hits="1" data-linenumber="10">
|
|
<span class="hits">1</span>
|
|
|
|
<code class="ruby"> def initialize(jobs, options = {})</code>
|
|
</li>
|
|
|
|
<li class="missed" data-hits="0" data-linenumber="11">
|
|
|
|
|
|
<code class="ruby"> @jobs = jobs</code>
|
|
</li>
|
|
|
|
<li class="missed" data-hits="0" data-linenumber="12">
|
|
|
|
|
|
<code class="ruby"> @options = options</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="13">
|
|
|
|
|
|
<code class="ruby"> end</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="14">
|
|
|
|
|
|
<code class="ruby"></code>
|
|
</li>
|
|
|
|
<li class="covered" data-hits="1" data-linenumber="15">
|
|
<span class="hits">1</span>
|
|
|
|
<code class="ruby"> def data</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="16">
|
|
|
|
|
|
<code class="ruby"> {</code>
|
|
</li>
|
|
|
|
<li class="missed" data-hits="0" data-linenumber="17">
|
|
|
|
|
|
<code class="ruby"> 'jobs' => jobs.map { |job| job_data(job) },</code>
|
|
</li>
|
|
|
|
<li class="missed" data-hits="0" data-linenumber="18">
|
|
|
|
|
|
<code class="ruby"> 'commits' => jobs.map { |job| commit_data(job.commit) }</code>
|
|
</li>
|
|
|
|
<li class="missed" data-hits="0" data-linenumber="19">
|
|
|
|
|
|
<code class="ruby"> }</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="20">
|
|
|
|
|
|
<code class="ruby"> end</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="21">
|
|
|
|
|
|
<code class="ruby"></code>
|
|
</li>
|
|
|
|
<li class="covered" data-hits="1" data-linenumber="22">
|
|
<span class="hits">1</span>
|
|
|
|
<code class="ruby"> private</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="23">
|
|
|
|
|
|
<code class="ruby"></code>
|
|
</li>
|
|
|
|
<li class="covered" data-hits="1" data-linenumber="24">
|
|
<span class="hits">1</span>
|
|
|
|
<code class="ruby"> def job_data(job)</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="25">
|
|
|
|
|
|
<code class="ruby"> {</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="26">
|
|
|
|
|
|
<code class="ruby"> 'id' => job.id,</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="27">
|
|
|
|
|
|
<code class="ruby"> 'repository_id' => job.repository_id,</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="28">
|
|
|
|
|
|
<code class="ruby"> 'repository_slug' => job.repository.slug,</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="29">
|
|
|
|
|
|
<code class="ruby"> 'build_id' => job.source_id,</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="30">
|
|
|
|
|
|
<code class="ruby"> 'commit_id' => job.commit_id,</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="31">
|
|
|
|
|
|
<code class="ruby"> 'log_id' => job.log_id,</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="32">
|
|
|
|
|
|
<code class="ruby"> 'number' => job.number,</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="33">
|
|
|
|
|
|
<code class="ruby"> 'config' => job.obfuscated_config.stringify_keys,</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="34">
|
|
|
|
|
|
<code class="ruby"> 'state' => job.state.to_s,</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="35">
|
|
|
|
|
|
<code class="ruby"> 'started_at' => format_date(job.started_at),</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="36">
|
|
|
|
|
|
<code class="ruby"> 'finished_at' => format_date(job.finished_at),</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="37">
|
|
|
|
|
|
<code class="ruby"> 'queue' => job.queue,</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="38">
|
|
|
|
|
|
<code class="ruby"> 'allow_failure' => job.allow_failure,</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="39">
|
|
|
|
|
|
<code class="ruby"> 'tags' => job.tags</code>
|
|
</li>
|
|
|
|
<li class="missed" data-hits="0" data-linenumber="40">
|
|
|
|
|
|
<code class="ruby"> }</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="41">
|
|
|
|
|
|
<code class="ruby"> end</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="42">
|
|
|
|
|
|
<code class="ruby"></code>
|
|
</li>
|
|
|
|
<li class="covered" data-hits="1" data-linenumber="43">
|
|
<span class="hits">1</span>
|
|
|
|
<code class="ruby"> def commit_data(commit)</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="44">
|
|
|
|
|
|
<code class="ruby"> {</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="45">
|
|
|
|
|
|
<code class="ruby"> 'id' => commit.id,</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="46">
|
|
|
|
|
|
<code class="ruby"> 'sha' => commit.commit,</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="47">
|
|
|
|
|
|
<code class="ruby"> 'branch' => commit.branch,</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="48">
|
|
|
|
|
|
<code class="ruby"> 'message' => commit.message,</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="49">
|
|
|
|
|
|
<code class="ruby"> 'committed_at' => format_date(commit.committed_at),</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="50">
|
|
|
|
|
|
<code class="ruby"> 'author_name' => commit.author_name,</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="51">
|
|
|
|
|
|
<code class="ruby"> 'author_email' => commit.author_email,</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="52">
|
|
|
|
|
|
<code class="ruby"> 'committer_name' => commit.committer_name,</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="53">
|
|
|
|
|
|
<code class="ruby"> 'committer_email' => commit.committer_email,</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="54">
|
|
|
|
|
|
<code class="ruby"> 'compare_url' => commit.compare_url,</code>
|
|
</li>
|
|
|
|
<li class="missed" data-hits="0" data-linenumber="55">
|
|
|
|
|
|
<code class="ruby"> }</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="56">
|
|
|
|
|
|
<code class="ruby"> end</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="57">
|
|
|
|
|
|
<code class="ruby"> end</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="58">
|
|
|
|
|
|
<code class="ruby"> end</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="59">
|
|
|
|
|
|
<code class="ruby"> end</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="60">
|
|
|
|
|
|
<code class="ruby"> end</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="61">
|
|
|
|
|
|
<code class="ruby">end</code>
|
|
</li>
|
|
|
|
</ol>
|
|
</pre>
|
|
</div>
|
|
|
|
<div class="source_table" id="305e989221ff7819ee74c2690fb3d9b4d6366b86">
|
|
<div class="header">
|
|
<h3>lib/travis/api/v2/http/log.rb</h3>
|
|
<h4><span class="red">50.0 %</span> covered</h4>
|
|
<div>
|
|
<b>28</b> relevant lines.
|
|
<span class="green"><b>14</b> lines covered</span> and
|
|
<span class="red"><b>14</b> lines missed.</span>
|
|
</div>
|
|
</div>
|
|
|
|
<pre>
|
|
<ol>
|
|
|
|
<li class="covered" data-hits="1" data-linenumber="1">
|
|
<span class="hits">1</span>
|
|
|
|
<code class="ruby">module Travis</code>
|
|
</li>
|
|
|
|
<li class="covered" data-hits="1" data-linenumber="2">
|
|
<span class="hits">1</span>
|
|
|
|
<code class="ruby"> module Api</code>
|
|
</li>
|
|
|
|
<li class="covered" data-hits="1" data-linenumber="3">
|
|
<span class="hits">1</span>
|
|
|
|
<code class="ruby"> module V2</code>
|
|
</li>
|
|
|
|
<li class="covered" data-hits="1" data-linenumber="4">
|
|
<span class="hits">1</span>
|
|
|
|
<code class="ruby"> module Http</code>
|
|
</li>
|
|
|
|
<li class="covered" data-hits="1" data-linenumber="5">
|
|
<span class="hits">1</span>
|
|
|
|
<code class="ruby"> class Log</code>
|
|
</li>
|
|
|
|
<li class="covered" data-hits="1" data-linenumber="6">
|
|
<span class="hits">1</span>
|
|
|
|
<code class="ruby"> attr_reader :log, :options</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="7">
|
|
|
|
|
|
<code class="ruby"></code>
|
|
</li>
|
|
|
|
<li class="covered" data-hits="1" data-linenumber="8">
|
|
<span class="hits">1</span>
|
|
|
|
<code class="ruby"> def initialize(log, options = {})</code>
|
|
</li>
|
|
|
|
<li class="missed" data-hits="0" data-linenumber="9">
|
|
|
|
|
|
<code class="ruby"> @log = log</code>
|
|
</li>
|
|
|
|
<li class="missed" data-hits="0" data-linenumber="10">
|
|
|
|
|
|
<code class="ruby"> @options = options</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="11">
|
|
|
|
|
|
<code class="ruby"> end</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="12">
|
|
|
|
|
|
<code class="ruby"></code>
|
|
</li>
|
|
|
|
<li class="covered" data-hits="1" data-linenumber="13">
|
|
<span class="hits">1</span>
|
|
|
|
<code class="ruby"> def data</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="14">
|
|
|
|
|
|
<code class="ruby"> {</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="15">
|
|
|
|
|
|
<code class="ruby"> 'log' => options[:chunked] ? chunked_log_data : log_data,</code>
|
|
</li>
|
|
|
|
<li class="missed" data-hits="0" data-linenumber="16">
|
|
|
|
|
|
<code class="ruby"> }</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="17">
|
|
|
|
|
|
<code class="ruby"> end</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="18">
|
|
|
|
|
|
<code class="ruby"></code>
|
|
</li>
|
|
|
|
<li class="covered" data-hits="1" data-linenumber="19">
|
|
<span class="hits">1</span>
|
|
|
|
<code class="ruby"> private</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="20">
|
|
|
|
|
|
<code class="ruby"></code>
|
|
</li>
|
|
|
|
<li class="covered" data-hits="1" data-linenumber="21">
|
|
<span class="hits">1</span>
|
|
|
|
<code class="ruby"> def log_data</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="22">
|
|
|
|
|
|
<code class="ruby"> {</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="23">
|
|
|
|
|
|
<code class="ruby"> 'id' => log.id,</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="24">
|
|
|
|
|
|
<code class="ruby"> 'job_id' => log.job_id,</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="25">
|
|
|
|
|
|
<code class="ruby"> 'type' => log.class.name.demodulize,</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="26">
|
|
|
|
|
|
<code class="ruby"> 'body' => log.content</code>
|
|
</li>
|
|
|
|
<li class="missed" data-hits="0" data-linenumber="27">
|
|
|
|
|
|
<code class="ruby"> }</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="28">
|
|
|
|
|
|
<code class="ruby"> end</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="29">
|
|
|
|
|
|
<code class="ruby"></code>
|
|
</li>
|
|
|
|
<li class="covered" data-hits="1" data-linenumber="30">
|
|
<span class="hits">1</span>
|
|
|
|
<code class="ruby"> def chunked_log_data</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="31">
|
|
|
|
|
|
<code class="ruby"> {</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="32">
|
|
|
|
|
|
<code class="ruby"> 'id' => log.id,</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="33">
|
|
|
|
|
|
<code class="ruby"> 'job_id' => log.job_id,</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="34">
|
|
|
|
|
|
<code class="ruby"> 'type' => log.class.name.demodulize,</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="35">
|
|
|
|
|
|
<code class="ruby"> 'parts' => log_parts</code>
|
|
</li>
|
|
|
|
<li class="missed" data-hits="0" data-linenumber="36">
|
|
|
|
|
|
<code class="ruby"> }</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="37">
|
|
|
|
|
|
<code class="ruby"> end</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="38">
|
|
|
|
|
|
<code class="ruby"></code>
|
|
</li>
|
|
|
|
<li class="covered" data-hits="1" data-linenumber="39">
|
|
<span class="hits">1</span>
|
|
|
|
<code class="ruby"> def log_parts</code>
|
|
</li>
|
|
|
|
<li class="missed" data-hits="0" data-linenumber="40">
|
|
|
|
|
|
<code class="ruby"> parts = log.parts</code>
|
|
</li>
|
|
|
|
<li class="missed" data-hits="0" data-linenumber="41">
|
|
|
|
|
|
<code class="ruby"> parts = parts.where(number: part_numbers) if part_numbers</code>
|
|
</li>
|
|
|
|
<li class="missed" data-hits="0" data-linenumber="42">
|
|
|
|
|
|
<code class="ruby"> parts = parts.where(["number > ?", after]) if after</code>
|
|
</li>
|
|
|
|
<li class="missed" data-hits="0" data-linenumber="43">
|
|
|
|
|
|
<code class="ruby"> parts.sort_by(&:number).map do |part|</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="44">
|
|
|
|
|
|
<code class="ruby"> {</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="45">
|
|
|
|
|
|
<code class="ruby"> 'id' => part.id,</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="46">
|
|
|
|
|
|
<code class="ruby"> 'number' => part.number,</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="47">
|
|
|
|
|
|
<code class="ruby"> 'content' => part.content,</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="48">
|
|
|
|
|
|
<code class="ruby"> 'final' => part.final</code>
|
|
</li>
|
|
|
|
<li class="missed" data-hits="0" data-linenumber="49">
|
|
|
|
|
|
<code class="ruby"> }</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="50">
|
|
|
|
|
|
<code class="ruby"> end</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="51">
|
|
|
|
|
|
<code class="ruby"> end</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="52">
|
|
|
|
|
|
<code class="ruby"></code>
|
|
</li>
|
|
|
|
<li class="covered" data-hits="1" data-linenumber="53">
|
|
<span class="hits">1</span>
|
|
|
|
<code class="ruby"> def after</code>
|
|
</li>
|
|
|
|
<li class="missed" data-hits="0" data-linenumber="54">
|
|
|
|
|
|
<code class="ruby"> after = options['after'].to_i</code>
|
|
</li>
|
|
|
|
<li class="missed" data-hits="0" data-linenumber="55">
|
|
|
|
|
|
<code class="ruby"> after == 0 ? nil : after</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="56">
|
|
|
|
|
|
<code class="ruby"> end</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="57">
|
|
|
|
|
|
<code class="ruby"></code>
|
|
</li>
|
|
|
|
<li class="covered" data-hits="1" data-linenumber="58">
|
|
<span class="hits">1</span>
|
|
|
|
<code class="ruby"> def part_numbers</code>
|
|
</li>
|
|
|
|
<li class="missed" data-hits="0" data-linenumber="59">
|
|
|
|
|
|
<code class="ruby"> if numbers = options['part_numbers']</code>
|
|
</li>
|
|
|
|
<li class="missed" data-hits="0" data-linenumber="60">
|
|
|
|
|
|
<code class="ruby"> numbers.is_a?(String) ? numbers.split(',').map(&:to_i) : numbers</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="61">
|
|
|
|
|
|
<code class="ruby"> end</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="62">
|
|
|
|
|
|
<code class="ruby"> end</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="63">
|
|
|
|
|
|
<code class="ruby"> end</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="64">
|
|
|
|
|
|
<code class="ruby"> end</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="65">
|
|
|
|
|
|
<code class="ruby"> end</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="66">
|
|
|
|
|
|
<code class="ruby"> end</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="67">
|
|
|
|
|
|
<code class="ruby">end</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="68">
|
|
|
|
|
|
<code class="ruby"></code>
|
|
</li>
|
|
|
|
</ol>
|
|
</pre>
|
|
</div>
|
|
|
|
<div class="source_table" id="87c289727e6a92299bc4a9407f685b69ca6eb426">
|
|
<div class="header">
|
|
<h3>lib/travis/api/v2/http/permissions.rb</h3>
|
|
<h4><span class="red">58.33 %</span> covered</h4>
|
|
<div>
|
|
<b>24</b> relevant lines.
|
|
<span class="green"><b>14</b> lines covered</span> and
|
|
<span class="red"><b>10</b> lines missed.</span>
|
|
</div>
|
|
</div>
|
|
|
|
<pre>
|
|
<ol>
|
|
|
|
<li class="covered" data-hits="1" data-linenumber="1">
|
|
<span class="hits">1</span>
|
|
|
|
<code class="ruby">module Travis</code>
|
|
</li>
|
|
|
|
<li class="covered" data-hits="1" data-linenumber="2">
|
|
<span class="hits">1</span>
|
|
|
|
<code class="ruby"> module Api</code>
|
|
</li>
|
|
|
|
<li class="covered" data-hits="1" data-linenumber="3">
|
|
<span class="hits">1</span>
|
|
|
|
<code class="ruby"> module V2</code>
|
|
</li>
|
|
|
|
<li class="covered" data-hits="1" data-linenumber="4">
|
|
<span class="hits">1</span>
|
|
|
|
<code class="ruby"> module Http</code>
|
|
</li>
|
|
|
|
<li class="covered" data-hits="1" data-linenumber="5">
|
|
<span class="hits">1</span>
|
|
|
|
<code class="ruby"> class Permissions</code>
|
|
</li>
|
|
|
|
<li class="covered" data-hits="1" data-linenumber="6">
|
|
<span class="hits">1</span>
|
|
|
|
<code class="ruby"> attr_reader :permissions, :options</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="7">
|
|
|
|
|
|
<code class="ruby"></code>
|
|
</li>
|
|
|
|
<li class="covered" data-hits="1" data-linenumber="8">
|
|
<span class="hits">1</span>
|
|
|
|
<code class="ruby"> def initialize(permissions, options = {})</code>
|
|
</li>
|
|
|
|
<li class="missed" data-hits="0" data-linenumber="9">
|
|
|
|
|
|
<code class="ruby"> @permissions = permissions</code>
|
|
</li>
|
|
|
|
<li class="missed" data-hits="0" data-linenumber="10">
|
|
|
|
|
|
<code class="ruby"> @options = options</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="11">
|
|
|
|
|
|
<code class="ruby"> end</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="12">
|
|
|
|
|
|
<code class="ruby"></code>
|
|
</li>
|
|
|
|
<li class="covered" data-hits="1" data-linenumber="13">
|
|
<span class="hits">1</span>
|
|
|
|
<code class="ruby"> def data</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="14">
|
|
|
|
|
|
<code class="ruby"> {</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="15">
|
|
|
|
|
|
<code class="ruby"> 'permissions' => repo_ids,</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="16">
|
|
|
|
|
|
<code class="ruby"> 'admin' => admin_ids,</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="17">
|
|
|
|
|
|
<code class="ruby"> 'pull' => pull_ids,</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="18">
|
|
|
|
|
|
<code class="ruby"> 'push' => push_ids</code>
|
|
</li>
|
|
|
|
<li class="missed" data-hits="0" data-linenumber="19">
|
|
|
|
|
|
<code class="ruby"> }</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="20">
|
|
|
|
|
|
<code class="ruby"> end</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="21">
|
|
|
|
|
|
<code class="ruby"></code>
|
|
</li>
|
|
|
|
<li class="covered" data-hits="1" data-linenumber="22">
|
|
<span class="hits">1</span>
|
|
|
|
<code class="ruby"> private</code>
|
|
</li>
|
|
|
|
<li class="covered" data-hits="1" data-linenumber="23">
|
|
<span class="hits">1</span>
|
|
|
|
<code class="ruby"> def filtered_ids(perm = nil)</code>
|
|
</li>
|
|
|
|
<li class="missed" data-hits="0" data-linenumber="24">
|
|
|
|
|
|
<code class="ruby"> if perm</code>
|
|
</li>
|
|
|
|
<li class="missed" data-hits="0" data-linenumber="25">
|
|
|
|
|
|
<code class="ruby"> permissions.find_all { |p| p.send("#{perm}?") }.map { |permission| permission.repository_id }</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="26">
|
|
|
|
|
|
<code class="ruby"> else</code>
|
|
</li>
|
|
|
|
<li class="missed" data-hits="0" data-linenumber="27">
|
|
|
|
|
|
<code class="ruby"> permissions.map { |permission| permission.repository_id }</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="28">
|
|
|
|
|
|
<code class="ruby"> end</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="29">
|
|
|
|
|
|
<code class="ruby"> end</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="30">
|
|
|
|
|
|
<code class="ruby"></code>
|
|
</li>
|
|
|
|
<li class="covered" data-hits="1" data-linenumber="31">
|
|
<span class="hits">1</span>
|
|
|
|
<code class="ruby"> def repo_ids</code>
|
|
</li>
|
|
|
|
<li class="missed" data-hits="0" data-linenumber="32">
|
|
|
|
|
|
<code class="ruby"> filtered_ids</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="33">
|
|
|
|
|
|
<code class="ruby"> end</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="34">
|
|
|
|
|
|
<code class="ruby"></code>
|
|
</li>
|
|
|
|
<li class="covered" data-hits="1" data-linenumber="35">
|
|
<span class="hits">1</span>
|
|
|
|
<code class="ruby"> def admin_ids</code>
|
|
</li>
|
|
|
|
<li class="missed" data-hits="0" data-linenumber="36">
|
|
|
|
|
|
<code class="ruby"> filtered_ids(:admin)</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="37">
|
|
|
|
|
|
<code class="ruby"> end</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="38">
|
|
|
|
|
|
<code class="ruby"></code>
|
|
</li>
|
|
|
|
<li class="covered" data-hits="1" data-linenumber="39">
|
|
<span class="hits">1</span>
|
|
|
|
<code class="ruby"> def pull_ids</code>
|
|
</li>
|
|
|
|
<li class="missed" data-hits="0" data-linenumber="40">
|
|
|
|
|
|
<code class="ruby"> filtered_ids(:pull)</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="41">
|
|
|
|
|
|
<code class="ruby"> end</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="42">
|
|
|
|
|
|
<code class="ruby"></code>
|
|
</li>
|
|
|
|
<li class="covered" data-hits="1" data-linenumber="43">
|
|
<span class="hits">1</span>
|
|
|
|
<code class="ruby"> def push_ids</code>
|
|
</li>
|
|
|
|
<li class="missed" data-hits="0" data-linenumber="44">
|
|
|
|
|
|
<code class="ruby"> filtered_ids(:push)</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="45">
|
|
|
|
|
|
<code class="ruby"> end</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="46">
|
|
|
|
|
|
<code class="ruby"> end</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="47">
|
|
|
|
|
|
<code class="ruby"> end</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="48">
|
|
|
|
|
|
<code class="ruby"> end</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="49">
|
|
|
|
|
|
<code class="ruby"> end</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="50">
|
|
|
|
|
|
<code class="ruby">end</code>
|
|
</li>
|
|
|
|
</ol>
|
|
</pre>
|
|
</div>
|
|
|
|
<div class="source_table" id="8ff46500e36176862b05aa7513e20da8d68dc208">
|
|
<div class="header">
|
|
<h3>lib/travis/api/v2/http/repositories.rb</h3>
|
|
<h4><span class="red">68.75 %</span> covered</h4>
|
|
<div>
|
|
<b>16</b> relevant lines.
|
|
<span class="green"><b>11</b> lines covered</span> and
|
|
<span class="red"><b>5</b> lines missed.</span>
|
|
</div>
|
|
</div>
|
|
|
|
<pre>
|
|
<ol>
|
|
|
|
<li class="covered" data-hits="1" data-linenumber="1">
|
|
<span class="hits">1</span>
|
|
|
|
<code class="ruby">module Travis</code>
|
|
</li>
|
|
|
|
<li class="covered" data-hits="1" data-linenumber="2">
|
|
<span class="hits">1</span>
|
|
|
|
<code class="ruby"> module Api</code>
|
|
</li>
|
|
|
|
<li class="covered" data-hits="1" data-linenumber="3">
|
|
<span class="hits">1</span>
|
|
|
|
<code class="ruby"> module V2</code>
|
|
</li>
|
|
|
|
<li class="covered" data-hits="1" data-linenumber="4">
|
|
<span class="hits">1</span>
|
|
|
|
<code class="ruby"> module Http</code>
|
|
</li>
|
|
|
|
<li class="covered" data-hits="1" data-linenumber="5">
|
|
<span class="hits">1</span>
|
|
|
|
<code class="ruby"> class Repositories</code>
|
|
</li>
|
|
|
|
<li class="covered" data-hits="1" data-linenumber="6">
|
|
<span class="hits">1</span>
|
|
|
|
<code class="ruby"> include Formats</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="7">
|
|
|
|
|
|
<code class="ruby"></code>
|
|
</li>
|
|
|
|
<li class="covered" data-hits="1" data-linenumber="8">
|
|
<span class="hits">1</span>
|
|
|
|
<code class="ruby"> attr_reader :repositories, :options</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="9">
|
|
|
|
|
|
<code class="ruby"></code>
|
|
</li>
|
|
|
|
<li class="covered" data-hits="1" data-linenumber="10">
|
|
<span class="hits">1</span>
|
|
|
|
<code class="ruby"> def initialize(repositories, options = {})</code>
|
|
</li>
|
|
|
|
<li class="missed" data-hits="0" data-linenumber="11">
|
|
|
|
|
|
<code class="ruby"> @repositories = repositories</code>
|
|
</li>
|
|
|
|
<li class="missed" data-hits="0" data-linenumber="12">
|
|
|
|
|
|
<code class="ruby"> @options = options</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="13">
|
|
|
|
|
|
<code class="ruby"> end</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="14">
|
|
|
|
|
|
<code class="ruby"></code>
|
|
</li>
|
|
|
|
<li class="covered" data-hits="1" data-linenumber="15">
|
|
<span class="hits">1</span>
|
|
|
|
<code class="ruby"> def data</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="16">
|
|
|
|
|
|
<code class="ruby"> {</code>
|
|
</li>
|
|
|
|
<li class="missed" data-hits="0" data-linenumber="17">
|
|
|
|
|
|
<code class="ruby"> 'repos' => repositories.map { |repository| repository_data(repository) }</code>
|
|
</li>
|
|
|
|
<li class="missed" data-hits="0" data-linenumber="18">
|
|
|
|
|
|
<code class="ruby"> }</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="19">
|
|
|
|
|
|
<code class="ruby"> end</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="20">
|
|
|
|
|
|
<code class="ruby"></code>
|
|
</li>
|
|
|
|
<li class="covered" data-hits="1" data-linenumber="21">
|
|
<span class="hits">1</span>
|
|
|
|
<code class="ruby"> private</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="22">
|
|
|
|
|
|
<code class="ruby"></code>
|
|
</li>
|
|
|
|
<li class="covered" data-hits="1" data-linenumber="23">
|
|
<span class="hits">1</span>
|
|
|
|
<code class="ruby"> def repository_data(repository)</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="24">
|
|
|
|
|
|
<code class="ruby"> {</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="25">
|
|
|
|
|
|
<code class="ruby"> 'id' => repository.id,</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="26">
|
|
|
|
|
|
<code class="ruby"> 'slug' => repository.slug,</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="27">
|
|
|
|
|
|
<code class="ruby"> 'description' => repository.description,</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="28">
|
|
|
|
|
|
<code class="ruby"> 'last_build_id' => repository.last_build_id,</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="29">
|
|
|
|
|
|
<code class="ruby"> 'last_build_number' => repository.last_build_number,</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="30">
|
|
|
|
|
|
<code class="ruby"> 'last_build_state' => repository.last_build_state.to_s,</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="31">
|
|
|
|
|
|
<code class="ruby"> 'last_build_duration' => repository.last_build_duration,</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="32">
|
|
|
|
|
|
<code class="ruby"> 'last_build_language' => nil,</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="33">
|
|
|
|
|
|
<code class="ruby"> 'last_build_started_at' => format_date(repository.last_build_started_at),</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="34">
|
|
|
|
|
|
<code class="ruby"> 'last_build_finished_at' => format_date(repository.last_build_finished_at),</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="35">
|
|
|
|
|
|
<code class="ruby"> 'active' => repository.active,</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="36">
|
|
|
|
|
|
<code class="ruby"> 'github_language' => repository.github_language</code>
|
|
</li>
|
|
|
|
<li class="missed" data-hits="0" data-linenumber="37">
|
|
|
|
|
|
<code class="ruby"> }</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="38">
|
|
|
|
|
|
<code class="ruby"> end</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="39">
|
|
|
|
|
|
<code class="ruby"> end</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="40">
|
|
|
|
|
|
<code class="ruby"> end</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="41">
|
|
|
|
|
|
<code class="ruby"> end</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="42">
|
|
|
|
|
|
<code class="ruby"> end</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="43">
|
|
|
|
|
|
<code class="ruby">end</code>
|
|
</li>
|
|
|
|
</ol>
|
|
</pre>
|
|
</div>
|
|
|
|
<div class="source_table" id="eff78d14dee73bdad5c2af8b49e3b528390c9207">
|
|
<div class="header">
|
|
<h3>lib/travis/api/v2/http/repository.rb</h3>
|
|
<h4><span class="red">78.57 %</span> covered</h4>
|
|
<div>
|
|
<b>14</b> relevant lines.
|
|
<span class="green"><b>11</b> lines covered</span> and
|
|
<span class="red"><b>3</b> lines missed.</span>
|
|
</div>
|
|
</div>
|
|
|
|
<pre>
|
|
<ol>
|
|
|
|
<li class="covered" data-hits="1" data-linenumber="1">
|
|
<span class="hits">1</span>
|
|
|
|
<code class="ruby">module Travis</code>
|
|
</li>
|
|
|
|
<li class="covered" data-hits="1" data-linenumber="2">
|
|
<span class="hits">1</span>
|
|
|
|
<code class="ruby"> module Api</code>
|
|
</li>
|
|
|
|
<li class="covered" data-hits="1" data-linenumber="3">
|
|
<span class="hits">1</span>
|
|
|
|
<code class="ruby"> module V2</code>
|
|
</li>
|
|
|
|
<li class="covered" data-hits="1" data-linenumber="4">
|
|
<span class="hits">1</span>
|
|
|
|
<code class="ruby"> module Http</code>
|
|
</li>
|
|
|
|
<li class="covered" data-hits="1" data-linenumber="5">
|
|
<span class="hits">1</span>
|
|
|
|
<code class="ruby"> class Repository</code>
|
|
</li>
|
|
|
|
<li class="covered" data-hits="1" data-linenumber="6">
|
|
<span class="hits">1</span>
|
|
|
|
<code class="ruby"> include Formats</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="7">
|
|
|
|
|
|
<code class="ruby"></code>
|
|
</li>
|
|
|
|
<li class="covered" data-hits="1" data-linenumber="8">
|
|
<span class="hits">1</span>
|
|
|
|
<code class="ruby"> attr_reader :repository, :options</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="9">
|
|
|
|
|
|
<code class="ruby"></code>
|
|
</li>
|
|
|
|
<li class="covered" data-hits="1" data-linenumber="10">
|
|
<span class="hits">1</span>
|
|
|
|
<code class="ruby"> def initialize(repository, options = {})</code>
|
|
</li>
|
|
|
|
<li class="missed" data-hits="0" data-linenumber="11">
|
|
|
|
|
|
<code class="ruby"> @repository = repository</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="12">
|
|
|
|
|
|
<code class="ruby"> end</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="13">
|
|
|
|
|
|
<code class="ruby"></code>
|
|
</li>
|
|
|
|
<li class="covered" data-hits="1" data-linenumber="14">
|
|
<span class="hits">1</span>
|
|
|
|
<code class="ruby"> def data</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="15">
|
|
|
|
|
|
<code class="ruby"> {</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="16">
|
|
|
|
|
|
<code class="ruby"> 'repo' => repository_data(repository)</code>
|
|
</li>
|
|
|
|
<li class="missed" data-hits="0" data-linenumber="17">
|
|
|
|
|
|
<code class="ruby"> }</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="18">
|
|
|
|
|
|
<code class="ruby"> end</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="19">
|
|
|
|
|
|
<code class="ruby"></code>
|
|
</li>
|
|
|
|
<li class="covered" data-hits="1" data-linenumber="20">
|
|
<span class="hits">1</span>
|
|
|
|
<code class="ruby"> private</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="21">
|
|
|
|
|
|
<code class="ruby"></code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="22">
|
|
|
|
|
|
<code class="ruby"> # TODO why does this not include the last build? (i.e. 'builds' => { last build here })</code>
|
|
</li>
|
|
|
|
<li class="covered" data-hits="1" data-linenumber="23">
|
|
<span class="hits">1</span>
|
|
|
|
<code class="ruby"> def repository_data(repository)</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="24">
|
|
|
|
|
|
<code class="ruby"> {</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="25">
|
|
|
|
|
|
<code class="ruby"> 'id' => repository.id,</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="26">
|
|
|
|
|
|
<code class="ruby"> 'slug' => repository.slug,</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="27">
|
|
|
|
|
|
<code class="ruby"> 'description' => repository.description,</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="28">
|
|
|
|
|
|
<code class="ruby"> 'last_build_id' => repository.last_build_id,</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="29">
|
|
|
|
|
|
<code class="ruby"> 'last_build_number' => repository.last_build_number,</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="30">
|
|
|
|
|
|
<code class="ruby"> 'last_build_state' => repository.last_build_state.to_s,</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="31">
|
|
|
|
|
|
<code class="ruby"> 'last_build_duration' => repository.last_build_duration,</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="32">
|
|
|
|
|
|
<code class="ruby"> 'last_build_language' => nil,</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="33">
|
|
|
|
|
|
<code class="ruby"> 'last_build_started_at' => format_date(repository.last_build_started_at),</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="34">
|
|
|
|
|
|
<code class="ruby"> 'last_build_finished_at' => format_date(repository.last_build_finished_at),</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="35">
|
|
|
|
|
|
<code class="ruby"> 'github_language' => repository.github_language</code>
|
|
</li>
|
|
|
|
<li class="missed" data-hits="0" data-linenumber="36">
|
|
|
|
|
|
<code class="ruby"> }</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="37">
|
|
|
|
|
|
<code class="ruby"> end</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="38">
|
|
|
|
|
|
<code class="ruby"> end</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="39">
|
|
|
|
|
|
<code class="ruby"> end</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="40">
|
|
|
|
|
|
<code class="ruby"> end</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="41">
|
|
|
|
|
|
<code class="ruby"> end</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="42">
|
|
|
|
|
|
<code class="ruby">end</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="43">
|
|
|
|
|
|
<code class="ruby"></code>
|
|
</li>
|
|
|
|
</ol>
|
|
</pre>
|
|
</div>
|
|
|
|
<div class="source_table" id="0438b13b58bbb8a610c81181e35ca9c4273df442">
|
|
<div class="header">
|
|
<h3>lib/travis/api/v2/http/request.rb</h3>
|
|
<h4><span class="red">52.17 %</span> covered</h4>
|
|
<div>
|
|
<b>23</b> relevant lines.
|
|
<span class="green"><b>12</b> lines covered</span> and
|
|
<span class="red"><b>11</b> lines missed.</span>
|
|
</div>
|
|
</div>
|
|
|
|
<pre>
|
|
<ol>
|
|
|
|
<li class="covered" data-hits="1" data-linenumber="1">
|
|
<span class="hits">1</span>
|
|
|
|
<code class="ruby">module Travis</code>
|
|
</li>
|
|
|
|
<li class="covered" data-hits="1" data-linenumber="2">
|
|
<span class="hits">1</span>
|
|
|
|
<code class="ruby"> module Api</code>
|
|
</li>
|
|
|
|
<li class="covered" data-hits="1" data-linenumber="3">
|
|
<span class="hits">1</span>
|
|
|
|
<code class="ruby"> module V2</code>
|
|
</li>
|
|
|
|
<li class="covered" data-hits="1" data-linenumber="4">
|
|
<span class="hits">1</span>
|
|
|
|
<code class="ruby"> module Http</code>
|
|
</li>
|
|
|
|
<li class="covered" data-hits="1" data-linenumber="5">
|
|
<span class="hits">1</span>
|
|
|
|
<code class="ruby"> class Request</code>
|
|
</li>
|
|
|
|
<li class="covered" data-hits="1" data-linenumber="6">
|
|
<span class="hits">1</span>
|
|
|
|
<code class="ruby"> include Formats</code>
|
|
</li>
|
|
|
|
<li class="covered" data-hits="1" data-linenumber="7">
|
|
<span class="hits">1</span>
|
|
|
|
<code class="ruby"> attr_reader :request, :commit, :options</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="8">
|
|
|
|
|
|
<code class="ruby"></code>
|
|
</li>
|
|
|
|
<li class="covered" data-hits="1" data-linenumber="9">
|
|
<span class="hits">1</span>
|
|
|
|
<code class="ruby"> def initialize(request, options = {})</code>
|
|
</li>
|
|
|
|
<li class="missed" data-hits="0" data-linenumber="10">
|
|
|
|
|
|
<code class="ruby"> @request = request</code>
|
|
</li>
|
|
|
|
<li class="missed" data-hits="0" data-linenumber="11">
|
|
|
|
|
|
<code class="ruby"> @commit = request.commit</code>
|
|
</li>
|
|
|
|
<li class="missed" data-hits="0" data-linenumber="12">
|
|
|
|
|
|
<code class="ruby"> @options = options</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="13">
|
|
|
|
|
|
<code class="ruby"> end</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="14">
|
|
|
|
|
|
<code class="ruby"></code>
|
|
</li>
|
|
|
|
<li class="covered" data-hits="1" data-linenumber="15">
|
|
<span class="hits">1</span>
|
|
|
|
<code class="ruby"> def data</code>
|
|
</li>
|
|
|
|
<li class="missed" data-hits="0" data-linenumber="16">
|
|
|
|
|
|
<code class="ruby"> data = {</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="17">
|
|
|
|
|
|
<code class="ruby"> 'request' => request_data</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="18">
|
|
|
|
|
|
<code class="ruby"> }</code>
|
|
</li>
|
|
|
|
<li class="missed" data-hits="0" data-linenumber="19">
|
|
|
|
|
|
<code class="ruby"> if commit</code>
|
|
</li>
|
|
|
|
<li class="missed" data-hits="0" data-linenumber="20">
|
|
|
|
|
|
<code class="ruby"> data['commit'] = commit_data</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="21">
|
|
|
|
|
|
<code class="ruby"> end</code>
|
|
</li>
|
|
|
|
<li class="missed" data-hits="0" data-linenumber="22">
|
|
|
|
|
|
<code class="ruby"> data</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="23">
|
|
|
|
|
|
<code class="ruby"> end</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="24">
|
|
|
|
|
|
<code class="ruby"></code>
|
|
</li>
|
|
|
|
<li class="covered" data-hits="1" data-linenumber="25">
|
|
<span class="hits">1</span>
|
|
|
|
<code class="ruby"> private</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="26">
|
|
|
|
|
|
<code class="ruby"></code>
|
|
</li>
|
|
|
|
<li class="covered" data-hits="1" data-linenumber="27">
|
|
<span class="hits">1</span>
|
|
|
|
<code class="ruby"> def request_data</code>
|
|
</li>
|
|
|
|
<li class="missed" data-hits="0" data-linenumber="28">
|
|
|
|
|
|
<code class="ruby"> data = {</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="29">
|
|
|
|
|
|
<code class="ruby"> 'id' => request.id,</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="30">
|
|
|
|
|
|
<code class="ruby"> 'repository_id' => request.repository_id,</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="31">
|
|
|
|
|
|
<code class="ruby"> 'commit_id' => request.commit_id,</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="32">
|
|
|
|
|
|
<code class="ruby"> 'created_at' => format_date(request.created_at),</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="33">
|
|
|
|
|
|
<code class="ruby"> 'owner_id' => request.owner_id,</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="34">
|
|
|
|
|
|
<code class="ruby"> 'owner_type' => request.owner_type,</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="35">
|
|
|
|
|
|
<code class="ruby"> 'event_type' => request.event_type,</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="36">
|
|
|
|
|
|
<code class="ruby"> 'base_commit' => request.base_commit,</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="37">
|
|
|
|
|
|
<code class="ruby"> 'head_commit' => request.head_commit,</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="38">
|
|
|
|
|
|
<code class="ruby"> 'result' => request.result,</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="39">
|
|
|
|
|
|
<code class="ruby"> 'message' => request.message,</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="40">
|
|
|
|
|
|
<code class="ruby"> 'pull_request' => request.pull_request?,</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="41">
|
|
|
|
|
|
<code class="ruby"> 'pull_request_number' => request.pull_request_number,</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="42">
|
|
|
|
|
|
<code class="ruby"> 'pull_request_title' => request.pull_request_title,</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="43">
|
|
|
|
|
|
<code class="ruby"> 'branch' => request.branch_name,</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="44">
|
|
|
|
|
|
<code class="ruby"> 'tag' => request.tag_name</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="45">
|
|
|
|
|
|
<code class="ruby"> }</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="46">
|
|
|
|
|
|
<code class="ruby"></code>
|
|
</li>
|
|
|
|
<li class="missed" data-hits="0" data-linenumber="47">
|
|
|
|
|
|
<code class="ruby"> data['build_id'] = request.builds.first.id if request.builds.present?</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="48">
|
|
|
|
|
|
<code class="ruby"></code>
|
|
</li>
|
|
|
|
<li class="missed" data-hits="0" data-linenumber="49">
|
|
|
|
|
|
<code class="ruby"> data</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="50">
|
|
|
|
|
|
<code class="ruby"> end</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="51">
|
|
|
|
|
|
<code class="ruby"></code>
|
|
</li>
|
|
|
|
<li class="covered" data-hits="1" data-linenumber="52">
|
|
<span class="hits">1</span>
|
|
|
|
<code class="ruby"> def commit_data</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="53">
|
|
|
|
|
|
<code class="ruby"> {</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="54">
|
|
|
|
|
|
<code class="ruby"> 'id' => commit.id,</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="55">
|
|
|
|
|
|
<code class="ruby"> 'sha' => commit.commit,</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="56">
|
|
|
|
|
|
<code class="ruby"> 'branch' => commit.branch,</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="57">
|
|
|
|
|
|
<code class="ruby"> 'message' => commit.message,</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="58">
|
|
|
|
|
|
<code class="ruby"> 'committed_at' => format_date(commit.committed_at),</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="59">
|
|
|
|
|
|
<code class="ruby"> 'author_name' => commit.author_name,</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="60">
|
|
|
|
|
|
<code class="ruby"> 'author_email' => commit.author_email,</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="61">
|
|
|
|
|
|
<code class="ruby"> 'committer_name' => commit.committer_name,</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="62">
|
|
|
|
|
|
<code class="ruby"> 'committer_email' => commit.committer_email,</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="63">
|
|
|
|
|
|
<code class="ruby"> 'compare_url' => commit.compare_url,</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="64">
|
|
|
|
|
|
<code class="ruby"> 'pull_request_number' => commit.pull_request_number</code>
|
|
</li>
|
|
|
|
<li class="missed" data-hits="0" data-linenumber="65">
|
|
|
|
|
|
<code class="ruby"> }</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="66">
|
|
|
|
|
|
<code class="ruby"> end</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="67">
|
|
|
|
|
|
<code class="ruby"> end</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="68">
|
|
|
|
|
|
<code class="ruby"> end</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="69">
|
|
|
|
|
|
<code class="ruby"> end</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="70">
|
|
|
|
|
|
<code class="ruby"> end</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="71">
|
|
|
|
|
|
<code class="ruby">end</code>
|
|
</li>
|
|
|
|
</ol>
|
|
</pre>
|
|
</div>
|
|
|
|
<div class="source_table" id="3409238a742e733e8cc83123cd42c5d119a08c09">
|
|
<div class="header">
|
|
<h3>lib/travis/api/v2/http/requests.rb</h3>
|
|
<h4><span class="red">54.55 %</span> covered</h4>
|
|
<div>
|
|
<b>22</b> relevant lines.
|
|
<span class="green"><b>12</b> lines covered</span> and
|
|
<span class="red"><b>10</b> lines missed.</span>
|
|
</div>
|
|
</div>
|
|
|
|
<pre>
|
|
<ol>
|
|
|
|
<li class="covered" data-hits="1" data-linenumber="1">
|
|
<span class="hits">1</span>
|
|
|
|
<code class="ruby">module Travis</code>
|
|
</li>
|
|
|
|
<li class="covered" data-hits="1" data-linenumber="2">
|
|
<span class="hits">1</span>
|
|
|
|
<code class="ruby"> module Api</code>
|
|
</li>
|
|
|
|
<li class="covered" data-hits="1" data-linenumber="3">
|
|
<span class="hits">1</span>
|
|
|
|
<code class="ruby"> module V2</code>
|
|
</li>
|
|
|
|
<li class="covered" data-hits="1" data-linenumber="4">
|
|
<span class="hits">1</span>
|
|
|
|
<code class="ruby"> module Http</code>
|
|
</li>
|
|
|
|
<li class="covered" data-hits="1" data-linenumber="5">
|
|
<span class="hits">1</span>
|
|
|
|
<code class="ruby"> class Requests</code>
|
|
</li>
|
|
|
|
<li class="covered" data-hits="1" data-linenumber="6">
|
|
<span class="hits">1</span>
|
|
|
|
<code class="ruby"> include Formats</code>
|
|
</li>
|
|
|
|
<li class="covered" data-hits="1" data-linenumber="7">
|
|
<span class="hits">1</span>
|
|
|
|
<code class="ruby"> attr_reader :requests, :commits, :options</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="8">
|
|
|
|
|
|
<code class="ruby"></code>
|
|
</li>
|
|
|
|
<li class="covered" data-hits="1" data-linenumber="9">
|
|
<span class="hits">1</span>
|
|
|
|
<code class="ruby"> def initialize(requests, options = {})</code>
|
|
</li>
|
|
|
|
<li class="missed" data-hits="0" data-linenumber="10">
|
|
|
|
|
|
<code class="ruby"> @requests = requests</code>
|
|
</li>
|
|
|
|
<li class="missed" data-hits="0" data-linenumber="11">
|
|
|
|
|
|
<code class="ruby"> @commits = requests.map(&:commit)</code>
|
|
</li>
|
|
|
|
<li class="missed" data-hits="0" data-linenumber="12">
|
|
|
|
|
|
<code class="ruby"> @options = options</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="13">
|
|
|
|
|
|
<code class="ruby"> end</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="14">
|
|
|
|
|
|
<code class="ruby"></code>
|
|
</li>
|
|
|
|
<li class="covered" data-hits="1" data-linenumber="15">
|
|
<span class="hits">1</span>
|
|
|
|
<code class="ruby"> def data</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="16">
|
|
|
|
|
|
<code class="ruby"> {</code>
|
|
</li>
|
|
|
|
<li class="missed" data-hits="0" data-linenumber="17">
|
|
|
|
|
|
<code class="ruby"> 'requests' => requests.map { |request| request_data(request) },</code>
|
|
</li>
|
|
|
|
<li class="missed" data-hits="0" data-linenumber="18">
|
|
|
|
|
|
<code class="ruby"> 'commits' => commits.compact.map { |commit| commit_data(commit) }</code>
|
|
</li>
|
|
|
|
<li class="missed" data-hits="0" data-linenumber="19">
|
|
|
|
|
|
<code class="ruby"> }</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="20">
|
|
|
|
|
|
<code class="ruby"> end</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="21">
|
|
|
|
|
|
<code class="ruby"></code>
|
|
</li>
|
|
|
|
<li class="covered" data-hits="1" data-linenumber="22">
|
|
<span class="hits">1</span>
|
|
|
|
<code class="ruby"> private</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="23">
|
|
|
|
|
|
<code class="ruby"></code>
|
|
</li>
|
|
|
|
<li class="covered" data-hits="1" data-linenumber="24">
|
|
<span class="hits">1</span>
|
|
|
|
<code class="ruby"> def request_data(request)</code>
|
|
</li>
|
|
|
|
<li class="missed" data-hits="0" data-linenumber="25">
|
|
|
|
|
|
<code class="ruby"> data = {</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="26">
|
|
|
|
|
|
<code class="ruby"> 'id' => request.id,</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="27">
|
|
|
|
|
|
<code class="ruby"> 'repository_id' => request.repository_id,</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="28">
|
|
|
|
|
|
<code class="ruby"> 'commit_id' => request.commit_id,</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="29">
|
|
|
|
|
|
<code class="ruby"> 'created_at' => format_date(request.created_at),</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="30">
|
|
|
|
|
|
<code class="ruby"> 'owner_id' => request.owner_id,</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="31">
|
|
|
|
|
|
<code class="ruby"> 'owner_type' => request.owner_type,</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="32">
|
|
|
|
|
|
<code class="ruby"> 'event_type' => request.event_type,</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="33">
|
|
|
|
|
|
<code class="ruby"> 'base_commit' => request.base_commit,</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="34">
|
|
|
|
|
|
<code class="ruby"> 'head_commit' => request.head_commit,</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="35">
|
|
|
|
|
|
<code class="ruby"> 'result' => request.result,</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="36">
|
|
|
|
|
|
<code class="ruby"> 'message' => request.message,</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="37">
|
|
|
|
|
|
<code class="ruby"> 'pull_request' => request.pull_request?,</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="38">
|
|
|
|
|
|
<code class="ruby"> 'pull_request_number' => request.pull_request_number,</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="39">
|
|
|
|
|
|
<code class="ruby"> 'pull_request_title' => request.pull_request_title,</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="40">
|
|
|
|
|
|
<code class="ruby"> 'branch' => request.branch_name,</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="41">
|
|
|
|
|
|
<code class="ruby"> 'tag' => request.tag_name</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="42">
|
|
|
|
|
|
<code class="ruby"> }</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="43">
|
|
|
|
|
|
<code class="ruby"></code>
|
|
</li>
|
|
|
|
<li class="missed" data-hits="0" data-linenumber="44">
|
|
|
|
|
|
<code class="ruby"> data['build_id'] = request.builds.first.id if request.builds.present?</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="45">
|
|
|
|
|
|
<code class="ruby"></code>
|
|
</li>
|
|
|
|
<li class="missed" data-hits="0" data-linenumber="46">
|
|
|
|
|
|
<code class="ruby"> data</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="47">
|
|
|
|
|
|
<code class="ruby"> end</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="48">
|
|
|
|
|
|
<code class="ruby"></code>
|
|
</li>
|
|
|
|
<li class="covered" data-hits="1" data-linenumber="49">
|
|
<span class="hits">1</span>
|
|
|
|
<code class="ruby"> def commit_data(commit)</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="50">
|
|
|
|
|
|
<code class="ruby"> {</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="51">
|
|
|
|
|
|
<code class="ruby"> 'id' => commit.id,</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="52">
|
|
|
|
|
|
<code class="ruby"> 'sha' => commit.commit,</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="53">
|
|
|
|
|
|
<code class="ruby"> 'branch' => commit.branch,</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="54">
|
|
|
|
|
|
<code class="ruby"> 'message' => commit.message,</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="55">
|
|
|
|
|
|
<code class="ruby"> 'committed_at' => format_date(commit.committed_at),</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="56">
|
|
|
|
|
|
<code class="ruby"> 'author_name' => commit.author_name,</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="57">
|
|
|
|
|
|
<code class="ruby"> 'author_email' => commit.author_email,</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="58">
|
|
|
|
|
|
<code class="ruby"> 'committer_name' => commit.committer_name,</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="59">
|
|
|
|
|
|
<code class="ruby"> 'committer_email' => commit.committer_email,</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="60">
|
|
|
|
|
|
<code class="ruby"> 'compare_url' => commit.compare_url,</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="61">
|
|
|
|
|
|
<code class="ruby"> 'pull_request_number' => commit.pull_request_number</code>
|
|
</li>
|
|
|
|
<li class="missed" data-hits="0" data-linenumber="62">
|
|
|
|
|
|
<code class="ruby"> }</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="63">
|
|
|
|
|
|
<code class="ruby"> end</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="64">
|
|
|
|
|
|
<code class="ruby"> end</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="65">
|
|
|
|
|
|
<code class="ruby"> end</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="66">
|
|
|
|
|
|
<code class="ruby"> end</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="67">
|
|
|
|
|
|
<code class="ruby"> end</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="68">
|
|
|
|
|
|
<code class="ruby">end</code>
|
|
</li>
|
|
|
|
</ol>
|
|
</pre>
|
|
</div>
|
|
|
|
<div class="source_table" id="5b078e65cda2e46c4754334f975a5362fd4e47ac">
|
|
<div class="header">
|
|
<h3>lib/travis/api/v2/http/ssh_key.rb</h3>
|
|
<h4><span class="red">66.67 %</span> covered</h4>
|
|
<div>
|
|
<b>15</b> relevant lines.
|
|
<span class="green"><b>10</b> lines covered</span> and
|
|
<span class="red"><b>5</b> lines missed.</span>
|
|
</div>
|
|
</div>
|
|
|
|
<pre>
|
|
<ol>
|
|
|
|
<li class="covered" data-hits="1" data-linenumber="1">
|
|
<span class="hits">1</span>
|
|
|
|
<code class="ruby">require 'openssl'</code>
|
|
</li>
|
|
|
|
<li class="covered" data-hits="1" data-linenumber="2">
|
|
<span class="hits">1</span>
|
|
|
|
<code class="ruby">require 'travis/private_key'</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="3">
|
|
|
|
|
|
<code class="ruby"></code>
|
|
</li>
|
|
|
|
<li class="covered" data-hits="1" data-linenumber="4">
|
|
<span class="hits">1</span>
|
|
|
|
<code class="ruby">module Travis</code>
|
|
</li>
|
|
|
|
<li class="covered" data-hits="1" data-linenumber="5">
|
|
<span class="hits">1</span>
|
|
|
|
<code class="ruby"> module Api</code>
|
|
</li>
|
|
|
|
<li class="covered" data-hits="1" data-linenumber="6">
|
|
<span class="hits">1</span>
|
|
|
|
<code class="ruby"> module V2</code>
|
|
</li>
|
|
|
|
<li class="covered" data-hits="1" data-linenumber="7">
|
|
<span class="hits">1</span>
|
|
|
|
<code class="ruby"> module Http</code>
|
|
</li>
|
|
|
|
<li class="covered" data-hits="1" data-linenumber="8">
|
|
<span class="hits">1</span>
|
|
|
|
<code class="ruby"> class SshKey < Travis::Api::Serializer</code>
|
|
</li>
|
|
|
|
<li class="covered" data-hits="1" data-linenumber="9">
|
|
<span class="hits">1</span>
|
|
|
|
<code class="ruby"> attributes :id, :description, :fingerprint</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="10">
|
|
|
|
|
|
<code class="ruby"></code>
|
|
</li>
|
|
|
|
<li class="covered" data-hits="1" data-linenumber="11">
|
|
<span class="hits">1</span>
|
|
|
|
<code class="ruby"> def id</code>
|
|
</li>
|
|
|
|
<li class="missed" data-hits="0" data-linenumber="12">
|
|
|
|
|
|
<code class="ruby"> object.repository_id</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="13">
|
|
|
|
|
|
<code class="ruby"> end</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="14">
|
|
|
|
|
|
<code class="ruby"></code>
|
|
</li>
|
|
|
|
<li class="covered" data-hits="1" data-linenumber="15">
|
|
<span class="hits">1</span>
|
|
|
|
<code class="ruby"> def fingerprint</code>
|
|
</li>
|
|
|
|
<li class="missed" data-hits="0" data-linenumber="16">
|
|
|
|
|
|
<code class="ruby"> value = object.value.decrypt</code>
|
|
</li>
|
|
|
|
<li class="missed" data-hits="0" data-linenumber="17">
|
|
|
|
|
|
<code class="ruby"> return unless value</code>
|
|
</li>
|
|
|
|
<li class="missed" data-hits="0" data-linenumber="18">
|
|
|
|
|
|
<code class="ruby"> PrivateKey.new(value).fingerprint</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="19">
|
|
|
|
|
|
<code class="ruby"> rescue OpenSSL::PKey::RSAError</code>
|
|
</li>
|
|
|
|
<li class="missed" data-hits="0" data-linenumber="20">
|
|
|
|
|
|
<code class="ruby"> nil</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="21">
|
|
|
|
|
|
<code class="ruby"> end</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="22">
|
|
|
|
|
|
<code class="ruby"> end</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="23">
|
|
|
|
|
|
<code class="ruby"> end</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="24">
|
|
|
|
|
|
<code class="ruby"> end</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="25">
|
|
|
|
|
|
<code class="ruby"> end</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="26">
|
|
|
|
|
|
<code class="ruby">end</code>
|
|
</li>
|
|
|
|
</ol>
|
|
</pre>
|
|
</div>
|
|
|
|
<div class="source_table" id="f9da561db1b52264c76f56f7164b6394902c3a2e">
|
|
<div class="header">
|
|
<h3>lib/travis/api/v2/http/ssl_key.rb</h3>
|
|
<h4><span class="red">75.0 %</span> covered</h4>
|
|
<div>
|
|
<b>12</b> relevant lines.
|
|
<span class="green"><b>9</b> lines covered</span> and
|
|
<span class="red"><b>3</b> lines missed.</span>
|
|
</div>
|
|
</div>
|
|
|
|
<pre>
|
|
<ol>
|
|
|
|
<li class="covered" data-hits="1" data-linenumber="1">
|
|
<span class="hits">1</span>
|
|
|
|
<code class="ruby">module Travis</code>
|
|
</li>
|
|
|
|
<li class="covered" data-hits="1" data-linenumber="2">
|
|
<span class="hits">1</span>
|
|
|
|
<code class="ruby"> module Api</code>
|
|
</li>
|
|
|
|
<li class="covered" data-hits="1" data-linenumber="3">
|
|
<span class="hits">1</span>
|
|
|
|
<code class="ruby"> module V2</code>
|
|
</li>
|
|
|
|
<li class="covered" data-hits="1" data-linenumber="4">
|
|
<span class="hits">1</span>
|
|
|
|
<code class="ruby"> module Http</code>
|
|
</li>
|
|
|
|
<li class="covered" data-hits="1" data-linenumber="5">
|
|
<span class="hits">1</span>
|
|
|
|
<code class="ruby"> class SslKey</code>
|
|
</li>
|
|
|
|
<li class="covered" data-hits="1" data-linenumber="6">
|
|
<span class="hits">1</span>
|
|
|
|
<code class="ruby"> attr_reader :key</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="7">
|
|
|
|
|
|
<code class="ruby"></code>
|
|
</li>
|
|
|
|
<li class="covered" data-hits="1" data-linenumber="8">
|
|
<span class="hits">1</span>
|
|
|
|
<code class="ruby"> def initialize(key, options = {})</code>
|
|
</li>
|
|
|
|
<li class="missed" data-hits="0" data-linenumber="9">
|
|
|
|
|
|
<code class="ruby"> @key = key</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="10">
|
|
|
|
|
|
<code class="ruby"> end</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="11">
|
|
|
|
|
|
<code class="ruby"></code>
|
|
</li>
|
|
|
|
<li class="covered" data-hits="1" data-linenumber="12">
|
|
<span class="hits">1</span>
|
|
|
|
<code class="ruby"> def fingerprint</code>
|
|
</li>
|
|
|
|
<li class="missed" data-hits="0" data-linenumber="13">
|
|
|
|
|
|
<code class="ruby"> PrivateKey.new(key.private_key).fingerprint</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="14">
|
|
|
|
|
|
<code class="ruby"> end</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="15">
|
|
|
|
|
|
<code class="ruby"></code>
|
|
</li>
|
|
|
|
<li class="covered" data-hits="1" data-linenumber="16">
|
|
<span class="hits">1</span>
|
|
|
|
<code class="ruby"> def data</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="17">
|
|
|
|
|
|
<code class="ruby"> {</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="18">
|
|
|
|
|
|
<code class="ruby"> 'key' => key.public_key,</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="19">
|
|
|
|
|
|
<code class="ruby"> 'fingerprint' => fingerprint</code>
|
|
</li>
|
|
|
|
<li class="missed" data-hits="0" data-linenumber="20">
|
|
|
|
|
|
<code class="ruby"> }</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="21">
|
|
|
|
|
|
<code class="ruby"> end</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="22">
|
|
|
|
|
|
<code class="ruby"> end</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="23">
|
|
|
|
|
|
<code class="ruby"> end</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="24">
|
|
|
|
|
|
<code class="ruby"> end</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="25">
|
|
|
|
|
|
<code class="ruby"> end</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="26">
|
|
|
|
|
|
<code class="ruby">end</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="27">
|
|
|
|
|
|
<code class="ruby"></code>
|
|
</li>
|
|
|
|
</ol>
|
|
</pre>
|
|
</div>
|
|
|
|
<div class="source_table" id="4fe5f748a2411310c3bf861101420669e9a8812e">
|
|
<div class="header">
|
|
<h3>lib/travis/api/v2/http/user.rb</h3>
|
|
<h4><span class="red">73.33 %</span> covered</h4>
|
|
<div>
|
|
<b>15</b> relevant lines.
|
|
<span class="green"><b>11</b> lines covered</span> and
|
|
<span class="red"><b>4</b> lines missed.</span>
|
|
</div>
|
|
</div>
|
|
|
|
<pre>
|
|
<ol>
|
|
|
|
<li class="covered" data-hits="1" data-linenumber="1">
|
|
<span class="hits">1</span>
|
|
|
|
<code class="ruby">module Travis</code>
|
|
</li>
|
|
|
|
<li class="covered" data-hits="1" data-linenumber="2">
|
|
<span class="hits">1</span>
|
|
|
|
<code class="ruby"> module Api</code>
|
|
</li>
|
|
|
|
<li class="covered" data-hits="1" data-linenumber="3">
|
|
<span class="hits">1</span>
|
|
|
|
<code class="ruby"> module V2</code>
|
|
</li>
|
|
|
|
<li class="covered" data-hits="1" data-linenumber="4">
|
|
<span class="hits">1</span>
|
|
|
|
<code class="ruby"> module Http</code>
|
|
</li>
|
|
|
|
<li class="covered" data-hits="1" data-linenumber="5">
|
|
<span class="hits">1</span>
|
|
|
|
<code class="ruby"> class User</code>
|
|
</li>
|
|
|
|
<li class="covered" data-hits="1" data-linenumber="6">
|
|
<span class="hits">1</span>
|
|
|
|
<code class="ruby"> include Formats</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="7">
|
|
|
|
|
|
<code class="ruby"></code>
|
|
</li>
|
|
|
|
<li class="covered" data-hits="1" data-linenumber="8">
|
|
<span class="hits">1</span>
|
|
|
|
<code class="ruby"> attr_reader :user, :options</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="9">
|
|
|
|
|
|
<code class="ruby"></code>
|
|
</li>
|
|
|
|
<li class="covered" data-hits="1" data-linenumber="10">
|
|
<span class="hits">1</span>
|
|
|
|
<code class="ruby"> def initialize(user, options = {})</code>
|
|
</li>
|
|
|
|
<li class="missed" data-hits="0" data-linenumber="11">
|
|
|
|
|
|
<code class="ruby"> @user = user</code>
|
|
</li>
|
|
|
|
<li class="missed" data-hits="0" data-linenumber="12">
|
|
|
|
|
|
<code class="ruby"> @options = options</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="13">
|
|
|
|
|
|
<code class="ruby"> end</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="14">
|
|
|
|
|
|
<code class="ruby"></code>
|
|
</li>
|
|
|
|
<li class="covered" data-hits="1" data-linenumber="15">
|
|
<span class="hits">1</span>
|
|
|
|
<code class="ruby"> def data</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="16">
|
|
|
|
|
|
<code class="ruby"> {</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="17">
|
|
|
|
|
|
<code class="ruby"> 'user' => user_data,</code>
|
|
</li>
|
|
|
|
<li class="missed" data-hits="0" data-linenumber="18">
|
|
|
|
|
|
<code class="ruby"> }</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="19">
|
|
|
|
|
|
<code class="ruby"> end</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="20">
|
|
|
|
|
|
<code class="ruby"></code>
|
|
</li>
|
|
|
|
<li class="covered" data-hits="1" data-linenumber="21">
|
|
<span class="hits">1</span>
|
|
|
|
<code class="ruby"> private</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="22">
|
|
|
|
|
|
<code class="ruby"></code>
|
|
</li>
|
|
|
|
<li class="covered" data-hits="1" data-linenumber="23">
|
|
<span class="hits">1</span>
|
|
|
|
<code class="ruby"> def user_data</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="24">
|
|
|
|
|
|
<code class="ruby"> {</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="25">
|
|
|
|
|
|
<code class="ruby"> 'id' => user.id,</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="26">
|
|
|
|
|
|
<code class="ruby"> 'name' => user.name,</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="27">
|
|
|
|
|
|
<code class="ruby"> 'login' => user.login,</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="28">
|
|
|
|
|
|
<code class="ruby"> 'email' => user.email,</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="29">
|
|
|
|
|
|
<code class="ruby"> 'gravatar_id' => user.email ? Digest::MD5.hexdigest(user.email) : "",</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="30">
|
|
|
|
|
|
<code class="ruby"> 'locale' => user.locale,</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="31">
|
|
|
|
|
|
<code class="ruby"> 'is_syncing' => user.syncing?,</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="32">
|
|
|
|
|
|
<code class="ruby"> 'synced_at' => format_date(user.synced_at),</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="33">
|
|
|
|
|
|
<code class="ruby"> 'correct_scopes' => user.correct_scopes?,</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="34">
|
|
|
|
|
|
<code class="ruby"> 'created_at' => format_date(user.created_at),</code>
|
|
</li>
|
|
|
|
<li class="missed" data-hits="0" data-linenumber="35">
|
|
|
|
|
|
<code class="ruby"> }</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="36">
|
|
|
|
|
|
<code class="ruby"> end</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="37">
|
|
|
|
|
|
<code class="ruby"> end</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="38">
|
|
|
|
|
|
<code class="ruby"> end</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="39">
|
|
|
|
|
|
<code class="ruby"> end</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="40">
|
|
|
|
|
|
<code class="ruby"> end</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="41">
|
|
|
|
|
|
<code class="ruby">end</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="42">
|
|
|
|
|
|
<code class="ruby"></code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="43">
|
|
|
|
|
|
<code class="ruby"></code>
|
|
</li>
|
|
|
|
</ol>
|
|
</pre>
|
|
</div>
|
|
|
|
<div class="source_table" id="dd52431f41a7d9215be3e7f466926538b62b434a">
|
|
<div class="header">
|
|
<h3>lib/travis/api/v2/http/validation_error.rb</h3>
|
|
<h4><span class="red">47.37 %</span> covered</h4>
|
|
<div>
|
|
<b>19</b> relevant lines.
|
|
<span class="green"><b>9</b> lines covered</span> and
|
|
<span class="red"><b>10</b> lines missed.</span>
|
|
</div>
|
|
</div>
|
|
|
|
<pre>
|
|
<ol>
|
|
|
|
<li class="covered" data-hits="1" data-linenumber="1">
|
|
<span class="hits">1</span>
|
|
|
|
<code class="ruby">module Travis</code>
|
|
</li>
|
|
|
|
<li class="covered" data-hits="1" data-linenumber="2">
|
|
<span class="hits">1</span>
|
|
|
|
<code class="ruby"> module Api</code>
|
|
</li>
|
|
|
|
<li class="covered" data-hits="1" data-linenumber="3">
|
|
<span class="hits">1</span>
|
|
|
|
<code class="ruby"> module V2</code>
|
|
</li>
|
|
|
|
<li class="covered" data-hits="1" data-linenumber="4">
|
|
<span class="hits">1</span>
|
|
|
|
<code class="ruby"> module Http</code>
|
|
</li>
|
|
|
|
<li class="covered" data-hits="1" data-linenumber="5">
|
|
<span class="hits">1</span>
|
|
|
|
<code class="ruby"> class ValidationError</code>
|
|
</li>
|
|
|
|
<li class="covered" data-hits="1" data-linenumber="6">
|
|
<span class="hits">1</span>
|
|
|
|
<code class="ruby"> attr_reader :resource</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="7">
|
|
|
|
|
|
<code class="ruby"></code>
|
|
</li>
|
|
|
|
<li class="covered" data-hits="1" data-linenumber="8">
|
|
<span class="hits">1</span>
|
|
|
|
<code class="ruby"> def initialize(resource, options = {})</code>
|
|
</li>
|
|
|
|
<li class="missed" data-hits="0" data-linenumber="9">
|
|
|
|
|
|
<code class="ruby"> @resource = resource</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="10">
|
|
|
|
|
|
<code class="ruby"> end</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="11">
|
|
|
|
|
|
<code class="ruby"></code>
|
|
</li>
|
|
|
|
<li class="covered" data-hits="1" data-linenumber="12">
|
|
<span class="hits">1</span>
|
|
|
|
<code class="ruby"> def data</code>
|
|
</li>
|
|
|
|
<li class="missed" data-hits="0" data-linenumber="13">
|
|
|
|
|
|
<code class="ruby"> response = {</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="14">
|
|
|
|
|
|
<code class="ruby"> message: 'Validation failed'</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="15">
|
|
|
|
|
|
<code class="ruby"> }</code>
|
|
</li>
|
|
|
|
<li class="missed" data-hits="0" data-linenumber="16">
|
|
|
|
|
|
<code class="ruby"> resource.errors.to_hash.each do |name, errors|</code>
|
|
</li>
|
|
|
|
<li class="missed" data-hits="0" data-linenumber="17">
|
|
|
|
|
|
<code class="ruby"> response['errors'] ||= []</code>
|
|
</li>
|
|
|
|
<li class="missed" data-hits="0" data-linenumber="18">
|
|
|
|
|
|
<code class="ruby"> errors.each do |error_code|</code>
|
|
</li>
|
|
|
|
<li class="missed" data-hits="0" data-linenumber="19">
|
|
|
|
|
|
<code class="ruby"> response['errors'] << { field: name, code: code(error_code) }</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="20">
|
|
|
|
|
|
<code class="ruby"> end</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="21">
|
|
|
|
|
|
<code class="ruby"> end</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="22">
|
|
|
|
|
|
<code class="ruby"></code>
|
|
</li>
|
|
|
|
<li class="missed" data-hits="0" data-linenumber="23">
|
|
|
|
|
|
<code class="ruby"> response</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="24">
|
|
|
|
|
|
<code class="ruby"> end</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="25">
|
|
|
|
|
|
<code class="ruby"></code>
|
|
</li>
|
|
|
|
<li class="covered" data-hits="1" data-linenumber="26">
|
|
<span class="hits">1</span>
|
|
|
|
<code class="ruby"> def code(error_code)</code>
|
|
</li>
|
|
|
|
<li class="missed" data-hits="0" data-linenumber="27">
|
|
|
|
|
|
<code class="ruby"> case error_code</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="28">
|
|
|
|
|
|
<code class="ruby"> when :blank</code>
|
|
</li>
|
|
|
|
<li class="missed" data-hits="0" data-linenumber="29">
|
|
|
|
|
|
<code class="ruby"> 'missing_field'</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="30">
|
|
|
|
|
|
<code class="ruby"> else</code>
|
|
</li>
|
|
|
|
<li class="missed" data-hits="0" data-linenumber="31">
|
|
|
|
|
|
<code class="ruby"> error_code.to_s</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="32">
|
|
|
|
|
|
<code class="ruby"> end</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="33">
|
|
|
|
|
|
<code class="ruby"> end</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="34">
|
|
|
|
|
|
<code class="ruby"> end</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="35">
|
|
|
|
|
|
<code class="ruby"> end</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="36">
|
|
|
|
|
|
<code class="ruby"> end</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="37">
|
|
|
|
|
|
<code class="ruby"> end</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="38">
|
|
|
|
|
|
<code class="ruby">end</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="39">
|
|
|
|
|
|
<code class="ruby"></code>
|
|
</li>
|
|
|
|
</ol>
|
|
</pre>
|
|
</div>
|
|
|
|
<div class="source_table" id="ec916e10f6af10305ba62ae14eb26968f828b52d">
|
|
<div class="header">
|
|
<h3>lib/travis/api/v3.rb</h3>
|
|
<h4><span class="green">100.0 %</span> covered</h4>
|
|
<div>
|
|
<b>18</b> relevant lines.
|
|
<span class="green"><b>18</b> lines covered</span> and
|
|
<span class="red"><b>0</b> lines missed.</span>
|
|
</div>
|
|
</div>
|
|
|
|
<pre>
|
|
<ol>
|
|
|
|
<li class="covered" data-hits="1" data-linenumber="1">
|
|
<span class="hits">1</span>
|
|
|
|
<code class="ruby">module Travis</code>
|
|
</li>
|
|
|
|
<li class="covered" data-hits="1" data-linenumber="2">
|
|
<span class="hits">1</span>
|
|
|
|
<code class="ruby"> module API</code>
|
|
</li>
|
|
|
|
<li class="covered" data-hits="1" data-linenumber="3">
|
|
<span class="hits">1</span>
|
|
|
|
<code class="ruby"> module V3</code>
|
|
</li>
|
|
|
|
<li class="covered" data-hits="1" data-linenumber="4">
|
|
<span class="hits">1</span>
|
|
|
|
<code class="ruby"> V3 = self</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="5">
|
|
|
|
|
|
<code class="ruby"></code>
|
|
</li>
|
|
|
|
<li class="covered" data-hits="1" data-linenumber="6">
|
|
<span class="hits">1</span>
|
|
|
|
<code class="ruby"> def load_dir(dir, recursive: true)</code>
|
|
</li>
|
|
|
|
<li class="covered" data-hits="49" data-linenumber="7">
|
|
<span class="hits">49</span>
|
|
|
|
<code class="ruby"> Dir.glob("#{dir}/*.rb").each { |f| require f[%r[(?<=lib/).+(?=\.rb$)]] }</code>
|
|
</li>
|
|
|
|
<li class="covered" data-hits="53" data-linenumber="8">
|
|
<span class="hits">53</span>
|
|
|
|
<code class="ruby"> Dir.glob("#{dir}/*").each { |dir| load_dir(dir) } if recursive</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="9">
|
|
|
|
|
|
<code class="ruby"> end</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="10">
|
|
|
|
|
|
<code class="ruby"></code>
|
|
</li>
|
|
|
|
<li class="covered" data-hits="1" data-linenumber="11">
|
|
<span class="hits">1</span>
|
|
|
|
<code class="ruby"> def response(payload, headers = {}, content_type: 'application/json'.freeze, status: 200)</code>
|
|
</li>
|
|
|
|
<li class="covered" data-hits="22" data-linenumber="12">
|
|
<span class="hits">22</span>
|
|
|
|
<code class="ruby"> payload = JSON.pretty_generate(payload) unless payload.is_a? String</code>
|
|
</li>
|
|
|
|
<li class="covered" data-hits="22" data-linenumber="13">
|
|
<span class="hits">22</span>
|
|
|
|
<code class="ruby"> headers = { 'Content-Type'.freeze => content_type, 'Content-Length'.freeze => payload.bytesize.to_s }.merge!(headers)</code>
|
|
</li>
|
|
|
|
<li class="covered" data-hits="22" data-linenumber="14">
|
|
<span class="hits">22</span>
|
|
|
|
<code class="ruby"> [status, headers, [payload] ]</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="15">
|
|
|
|
|
|
<code class="ruby"> end</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="16">
|
|
|
|
|
|
<code class="ruby"></code>
|
|
</li>
|
|
|
|
<li class="covered" data-hits="1" data-linenumber="17">
|
|
<span class="hits">1</span>
|
|
|
|
<code class="ruby"> extend self</code>
|
|
</li>
|
|
|
|
<li class="covered" data-hits="1" data-linenumber="18">
|
|
<span class="hits">1</span>
|
|
|
|
<code class="ruby"> load_dir("#{__dir__}/v3")</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="19">
|
|
|
|
|
|
<code class="ruby"></code>
|
|
</li>
|
|
|
|
<li class="covered" data-hits="1" data-linenumber="20">
|
|
<span class="hits">1</span>
|
|
|
|
<code class="ruby"> ClientError = Error .create(status: 400)</code>
|
|
</li>
|
|
|
|
<li class="covered" data-hits="1" data-linenumber="21">
|
|
<span class="hits">1</span>
|
|
|
|
<code class="ruby"> NotFound = ClientError .create(:resource, status: 404, template: '%s not found (or insufficient access)')</code>
|
|
</li>
|
|
|
|
<li class="covered" data-hits="1" data-linenumber="22">
|
|
<span class="hits">1</span>
|
|
|
|
<code class="ruby"> EnitityMissing = NotFound .create(type: 'not_found')</code>
|
|
</li>
|
|
|
|
<li class="covered" data-hits="1" data-linenumber="23">
|
|
<span class="hits">1</span>
|
|
|
|
<code class="ruby"> WrongCredentials = ClientError .create('access denied', status: 403)</code>
|
|
</li>
|
|
|
|
<li class="covered" data-hits="1" data-linenumber="24">
|
|
<span class="hits">1</span>
|
|
|
|
<code class="ruby"> WrongParams = ClientError .create('wrong parameters')</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="25">
|
|
|
|
|
|
<code class="ruby"> end</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="26">
|
|
|
|
|
|
<code class="ruby"> end</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="27">
|
|
|
|
|
|
<code class="ruby">end</code>
|
|
</li>
|
|
|
|
</ol>
|
|
</pre>
|
|
</div>
|
|
|
|
<div class="source_table" id="130cf32796ab3cf4d5781313e44244a58973bbf8">
|
|
<div class="header">
|
|
<h3>lib/travis/api/v3/access_control.rb</h3>
|
|
<h4><span class="green">100.0 %</span> covered</h4>
|
|
<div>
|
|
<b>11</b> relevant lines.
|
|
<span class="green"><b>11</b> lines covered</span> and
|
|
<span class="red"><b>0</b> lines missed.</span>
|
|
</div>
|
|
</div>
|
|
|
|
<pre>
|
|
<ol>
|
|
|
|
<li class="covered" data-hits="1" data-linenumber="1">
|
|
<span class="hits">1</span>
|
|
|
|
<code class="ruby">module Travis::API::V3</code>
|
|
</li>
|
|
|
|
<li class="covered" data-hits="1" data-linenumber="2">
|
|
<span class="hits">1</span>
|
|
|
|
<code class="ruby"> module AccessControl</code>
|
|
</li>
|
|
|
|
<li class="covered" data-hits="1" data-linenumber="3">
|
|
<span class="hits">1</span>
|
|
|
|
<code class="ruby"> REGISTER = {}</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="4">
|
|
|
|
|
|
<code class="ruby"></code>
|
|
</li>
|
|
|
|
<li class="covered" data-hits="1" data-linenumber="5">
|
|
<span class="hits">1</span>
|
|
|
|
<code class="ruby"> def self.new(env)</code>
|
|
</li>
|
|
|
|
<li class="covered" data-hits="23" data-linenumber="6">
|
|
<span class="hits">23</span>
|
|
|
|
<code class="ruby"> type, payload = env['HTTP_AUTHORIZATION'.freeze].to_s.split(" ", 2)</code>
|
|
</li>
|
|
|
|
<li class="covered" data-hits="23" data-linenumber="7">
|
|
<span class="hits">23</span>
|
|
|
|
<code class="ruby"> payload &&= payload.unpack(?m.freeze).first if type == 'basic'.freeze</code>
|
|
</li>
|
|
|
|
<li class="covered" data-hits="23" data-linenumber="8">
|
|
<span class="hits">23</span>
|
|
|
|
<code class="ruby"> payload &&= type == 'token'.freeze ? payload.gsub(/^"(.+)"$/, '\1'.freeze) : payload.split(?:.freeze)</code>
|
|
</li>
|
|
|
|
<li class="covered" data-hits="23" data-linenumber="9">
|
|
<span class="hits">23</span>
|
|
|
|
<code class="ruby"> modes = REGISTER.fetch(type, [])</code>
|
|
</li>
|
|
|
|
<li class="covered" data-hits="46" data-linenumber="10">
|
|
<span class="hits">46</span>
|
|
|
|
<code class="ruby"> access_control = modes.inject(nil) { |current, mode| current || mode.for_request(type, payload, env) }</code>
|
|
</li>
|
|
|
|
<li class="covered" data-hits="23" data-linenumber="11">
|
|
<span class="hits">23</span>
|
|
|
|
<code class="ruby"> raise WrongCredentials unless access_control</code>
|
|
</li>
|
|
|
|
<li class="covered" data-hits="23" data-linenumber="12">
|
|
<span class="hits">23</span>
|
|
|
|
<code class="ruby"> access_control</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="13">
|
|
|
|
|
|
<code class="ruby"> end</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="14">
|
|
|
|
|
|
<code class="ruby"> end</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="15">
|
|
|
|
|
|
<code class="ruby">end</code>
|
|
</li>
|
|
|
|
</ol>
|
|
</pre>
|
|
</div>
|
|
|
|
<div class="source_table" id="0c37cbeb8112d8c673c2de5e8d4a0bc4a54debad">
|
|
<div class="header">
|
|
<h3>lib/travis/api/v3/access_control/anonymous.rb</h3>
|
|
<h4><span class="green">100.0 %</span> covered</h4>
|
|
<div>
|
|
<b>6</b> relevant lines.
|
|
<span class="green"><b>6</b> lines covered</span> and
|
|
<span class="red"><b>0</b> lines missed.</span>
|
|
</div>
|
|
</div>
|
|
|
|
<pre>
|
|
<ol>
|
|
|
|
<li class="covered" data-hits="1" data-linenumber="1">
|
|
<span class="hits">1</span>
|
|
|
|
<code class="ruby">require 'travis/api/v3/access_control/generic'</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="2">
|
|
|
|
|
|
<code class="ruby"></code>
|
|
</li>
|
|
|
|
<li class="covered" data-hits="1" data-linenumber="3">
|
|
<span class="hits">1</span>
|
|
|
|
<code class="ruby">module Travis::API::V3</code>
|
|
</li>
|
|
|
|
<li class="covered" data-hits="1" data-linenumber="4">
|
|
<span class="hits">1</span>
|
|
|
|
<code class="ruby"> class AccessControl::Anonymous < AccessControl::Generic</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="5">
|
|
|
|
|
|
<code class="ruby"> # use when Authorization header is not set</code>
|
|
</li>
|
|
|
|
<li class="covered" data-hits="1" data-linenumber="6">
|
|
<span class="hits">1</span>
|
|
|
|
<code class="ruby"> auth_type(nil)</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="7">
|
|
|
|
|
|
<code class="ruby"></code>
|
|
</li>
|
|
|
|
<li class="covered" data-hits="1" data-linenumber="8">
|
|
<span class="hits">1</span>
|
|
|
|
<code class="ruby"> def self.for_request(*)</code>
|
|
</li>
|
|
|
|
<li class="covered" data-hits="13" data-linenumber="9">
|
|
<span class="hits">13</span>
|
|
|
|
<code class="ruby"> new</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="10">
|
|
|
|
|
|
<code class="ruby"> end</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="11">
|
|
|
|
|
|
<code class="ruby"> end</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="12">
|
|
|
|
|
|
<code class="ruby">end</code>
|
|
</li>
|
|
|
|
</ol>
|
|
</pre>
|
|
</div>
|
|
|
|
<div class="source_table" id="0a4dcd743492bb72a7b2e02c986303e9b6a5f680">
|
|
<div class="header">
|
|
<h3>lib/travis/api/v3/access_control/application.rb</h3>
|
|
<h4><span class="green">93.33 %</span> covered</h4>
|
|
<div>
|
|
<b>15</b> relevant lines.
|
|
<span class="green"><b>14</b> lines covered</span> and
|
|
<span class="red"><b>1</b> lines missed.</span>
|
|
</div>
|
|
</div>
|
|
|
|
<pre>
|
|
<ol>
|
|
|
|
<li class="covered" data-hits="1" data-linenumber="1">
|
|
<span class="hits">1</span>
|
|
|
|
<code class="ruby">require 'travis/api/v3/access_control/generic'</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="2">
|
|
|
|
|
|
<code class="ruby"></code>
|
|
</li>
|
|
|
|
<li class="covered" data-hits="1" data-linenumber="3">
|
|
<span class="hits">1</span>
|
|
|
|
<code class="ruby">module Travis::API::V3</code>
|
|
</li>
|
|
|
|
<li class="covered" data-hits="1" data-linenumber="4">
|
|
<span class="hits">1</span>
|
|
|
|
<code class="ruby"> class AccessControl::Application < AccessControl::Generic</code>
|
|
</li>
|
|
|
|
<li class="covered" data-hits="1" data-linenumber="5">
|
|
<span class="hits">1</span>
|
|
|
|
<code class="ruby"> attr_reader :application_name, :config, :user</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="6">
|
|
|
|
|
|
<code class="ruby"></code>
|
|
</li>
|
|
|
|
<li class="covered" data-hits="1" data-linenumber="7">
|
|
<span class="hits">1</span>
|
|
|
|
<code class="ruby"> def initialize(application_name, user: nil)</code>
|
|
</li>
|
|
|
|
<li class="covered" data-hits="6" data-linenumber="8">
|
|
<span class="hits">6</span>
|
|
|
|
<code class="ruby"> @application_name = application_name</code>
|
|
</li>
|
|
|
|
<li class="covered" data-hits="6" data-linenumber="9">
|
|
<span class="hits">6</span>
|
|
|
|
<code class="ruby"> @config = Travis.config.applications[application_name]</code>
|
|
</li>
|
|
|
|
<li class="covered" data-hits="6" data-linenumber="10">
|
|
<span class="hits">6</span>
|
|
|
|
<code class="ruby"> @user = user</code>
|
|
</li>
|
|
|
|
<li class="covered" data-hits="6" data-linenumber="11">
|
|
<span class="hits">6</span>
|
|
|
|
<code class="ruby"> raise ArgumentError, 'unknown application %p' % application_name unless config</code>
|
|
</li>
|
|
|
|
<li class="covered" data-hits="6" data-linenumber="12">
|
|
<span class="hits">6</span>
|
|
|
|
<code class="ruby"> raise ArgumentError, 'cannot use %p without a user' % application_name if config.requires_user and not user</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="13">
|
|
|
|
|
|
<code class="ruby"> end</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="14">
|
|
|
|
|
|
<code class="ruby"></code>
|
|
</li>
|
|
|
|
<li class="covered" data-hits="1" data-linenumber="15">
|
|
<span class="hits">1</span>
|
|
|
|
<code class="ruby"> protected</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="16">
|
|
|
|
|
|
<code class="ruby"></code>
|
|
</li>
|
|
|
|
<li class="covered" data-hits="1" data-linenumber="17">
|
|
<span class="hits">1</span>
|
|
|
|
<code class="ruby"> def logged_in?</code>
|
|
</li>
|
|
|
|
<li class="missed" data-hits="0" data-linenumber="18">
|
|
|
|
|
|
<code class="ruby"> !!user</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="19">
|
|
|
|
|
|
<code class="ruby"> end</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="20">
|
|
|
|
|
|
<code class="ruby"></code>
|
|
</li>
|
|
|
|
<li class="covered" data-hits="1" data-linenumber="21">
|
|
<span class="hits">1</span>
|
|
|
|
<code class="ruby"> def full_access?</code>
|
|
</li>
|
|
|
|
<li class="covered" data-hits="4" data-linenumber="22">
|
|
<span class="hits">4</span>
|
|
|
|
<code class="ruby"> config.full_access</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="23">
|
|
|
|
|
|
<code class="ruby"> end</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="24">
|
|
|
|
|
|
<code class="ruby"> end</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="25">
|
|
|
|
|
|
<code class="ruby">end</code>
|
|
</li>
|
|
|
|
</ol>
|
|
</pre>
|
|
</div>
|
|
|
|
<div class="source_table" id="3e4c532be49003dde82e2f143a6ec6abac0c0fa4">
|
|
<div class="header">
|
|
<h3>lib/travis/api/v3/access_control/generic.rb</h3>
|
|
<h4><span class="green">100.0 %</span> covered</h4>
|
|
<div>
|
|
<b>25</b> relevant lines.
|
|
<span class="green"><b>25</b> lines covered</span> and
|
|
<span class="red"><b>0</b> lines missed.</span>
|
|
</div>
|
|
</div>
|
|
|
|
<pre>
|
|
<ol>
|
|
|
|
<li class="covered" data-hits="1" data-linenumber="1">
|
|
<span class="hits">1</span>
|
|
|
|
<code class="ruby">module Travis::API::V3</code>
|
|
</li>
|
|
|
|
<li class="covered" data-hits="1" data-linenumber="2">
|
|
<span class="hits">1</span>
|
|
|
|
<code class="ruby"> class AccessControl::Generic</code>
|
|
</li>
|
|
|
|
<li class="covered" data-hits="1" data-linenumber="3">
|
|
<span class="hits">1</span>
|
|
|
|
<code class="ruby"> def self.for_request(type, payload, env)</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="4">
|
|
|
|
|
|
<code class="ruby"> end</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="5">
|
|
|
|
|
|
<code class="ruby"></code>
|
|
</li>
|
|
|
|
<li class="covered" data-hits="1" data-linenumber="6">
|
|
<span class="hits">1</span>
|
|
|
|
<code class="ruby"> def self.auth_type(*list)</code>
|
|
</li>
|
|
|
|
<li class="covered" data-hits="7" data-linenumber="7">
|
|
<span class="hits">7</span>
|
|
|
|
<code class="ruby"> list.each { |e| (AccessControl::REGISTER[e] ||= []) << self }</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="8">
|
|
|
|
|
|
<code class="ruby"> end</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="9">
|
|
|
|
|
|
<code class="ruby"></code>
|
|
</li>
|
|
|
|
<li class="covered" data-hits="1" data-linenumber="10">
|
|
<span class="hits">1</span>
|
|
|
|
<code class="ruby"> def visible?(object)</code>
|
|
</li>
|
|
|
|
<li class="covered" data-hits="18" data-linenumber="11">
|
|
<span class="hits">18</span>
|
|
|
|
<code class="ruby"> full_access? or dispatch(object)</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="12">
|
|
|
|
|
|
<code class="ruby"> end</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="13">
|
|
|
|
|
|
<code class="ruby"></code>
|
|
</li>
|
|
|
|
<li class="covered" data-hits="1" data-linenumber="14">
|
|
<span class="hits">1</span>
|
|
|
|
<code class="ruby"> protected</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="15">
|
|
|
|
|
|
<code class="ruby"></code>
|
|
</li>
|
|
|
|
<li class="covered" data-hits="1" data-linenumber="16">
|
|
<span class="hits">1</span>
|
|
|
|
<code class="ruby"> def repository_visible?(repository)</code>
|
|
</li>
|
|
|
|
<li class="covered" data-hits="14" data-linenumber="17">
|
|
<span class="hits">14</span>
|
|
|
|
<code class="ruby"> return true if unrestricted_api? and not repository.private?</code>
|
|
</li>
|
|
|
|
<li class="covered" data-hits="12" data-linenumber="18">
|
|
<span class="hits">12</span>
|
|
|
|
<code class="ruby"> private_repository_visible?(repository)</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="19">
|
|
|
|
|
|
<code class="ruby"> end</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="20">
|
|
|
|
|
|
<code class="ruby"></code>
|
|
</li>
|
|
|
|
<li class="covered" data-hits="1" data-linenumber="21">
|
|
<span class="hits">1</span>
|
|
|
|
<code class="ruby"> def private_repository_visible?(repository)</code>
|
|
</li>
|
|
|
|
<li class="covered" data-hits="4" data-linenumber="22">
|
|
<span class="hits">4</span>
|
|
|
|
<code class="ruby"> false</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="23">
|
|
|
|
|
|
<code class="ruby"> end</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="24">
|
|
|
|
|
|
<code class="ruby"></code>
|
|
</li>
|
|
|
|
<li class="covered" data-hits="1" data-linenumber="25">
|
|
<span class="hits">1</span>
|
|
|
|
<code class="ruby"> def full_access?</code>
|
|
</li>
|
|
|
|
<li class="covered" data-hits="28" data-linenumber="26">
|
|
<span class="hits">28</span>
|
|
|
|
<code class="ruby"> false</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="27">
|
|
|
|
|
|
<code class="ruby"> end</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="28">
|
|
|
|
|
|
<code class="ruby"></code>
|
|
</li>
|
|
|
|
<li class="covered" data-hits="1" data-linenumber="29">
|
|
<span class="hits">1</span>
|
|
|
|
<code class="ruby"> def logged_in?</code>
|
|
</li>
|
|
|
|
<li class="covered" data-hits="14" data-linenumber="30">
|
|
<span class="hits">14</span>
|
|
|
|
<code class="ruby"> false</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="31">
|
|
|
|
|
|
<code class="ruby"> end</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="32">
|
|
|
|
|
|
<code class="ruby"></code>
|
|
</li>
|
|
|
|
<li class="covered" data-hits="1" data-linenumber="33">
|
|
<span class="hits">1</span>
|
|
|
|
<code class="ruby"> def public_api?</code>
|
|
</li>
|
|
|
|
<li class="covered" data-hits="14" data-linenumber="34">
|
|
<span class="hits">14</span>
|
|
|
|
<code class="ruby"> !Travis.config.private_api</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="35">
|
|
|
|
|
|
<code class="ruby"> end</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="36">
|
|
|
|
|
|
<code class="ruby"></code>
|
|
</li>
|
|
|
|
<li class="covered" data-hits="1" data-linenumber="37">
|
|
<span class="hits">1</span>
|
|
|
|
<code class="ruby"> def unrestricted_api?</code>
|
|
</li>
|
|
|
|
<li class="covered" data-hits="14" data-linenumber="38">
|
|
<span class="hits">14</span>
|
|
|
|
<code class="ruby"> full_access? or logged_in? or public_api?</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="39">
|
|
|
|
|
|
<code class="ruby"> end</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="40">
|
|
|
|
|
|
<code class="ruby"></code>
|
|
</li>
|
|
|
|
<li class="covered" data-hits="1" data-linenumber="41">
|
|
<span class="hits">1</span>
|
|
|
|
<code class="ruby"> private</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="42">
|
|
|
|
|
|
<code class="ruby"></code>
|
|
</li>
|
|
|
|
<li class="covered" data-hits="1" data-linenumber="43">
|
|
<span class="hits">1</span>
|
|
|
|
<code class="ruby"> def dispatch(object, method = caller_locations.first.base_label)</code>
|
|
</li>
|
|
|
|
<li class="covered" data-hits="14" data-linenumber="44">
|
|
<span class="hits">14</span>
|
|
|
|
<code class="ruby"> method = object.class.name.underscore + ?_.freeze + method</code>
|
|
</li>
|
|
|
|
<li class="covered" data-hits="14" data-linenumber="45">
|
|
<span class="hits">14</span>
|
|
|
|
<code class="ruby"> send(method, object) if respond_to?(method, true)</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="46">
|
|
|
|
|
|
<code class="ruby"> end</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="47">
|
|
|
|
|
|
<code class="ruby"> end</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="48">
|
|
|
|
|
|
<code class="ruby">end</code>
|
|
</li>
|
|
|
|
</ol>
|
|
</pre>
|
|
</div>
|
|
|
|
<div class="source_table" id="cc06bcaeb6af4b5039cc7be04f2dcf7d8cbc1656">
|
|
<div class="header">
|
|
<h3>lib/travis/api/v3/access_control/legacy_token.rb</h3>
|
|
<h4><span class="green">100.0 %</span> covered</h4>
|
|
<div>
|
|
<b>15</b> relevant lines.
|
|
<span class="green"><b>15</b> lines covered</span> and
|
|
<span class="red"><b>0</b> lines missed.</span>
|
|
</div>
|
|
</div>
|
|
|
|
<pre>
|
|
<ol>
|
|
|
|
<li class="covered" data-hits="1" data-linenumber="1">
|
|
<span class="hits">1</span>
|
|
|
|
<code class="ruby">require 'travis/api/app/access_token'</code>
|
|
</li>
|
|
|
|
<li class="covered" data-hits="1" data-linenumber="2">
|
|
<span class="hits">1</span>
|
|
|
|
<code class="ruby">require 'travis/api/v3/access_control/user'</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="3">
|
|
|
|
|
|
<code class="ruby"></code>
|
|
</li>
|
|
|
|
<li class="covered" data-hits="1" data-linenumber="4">
|
|
<span class="hits">1</span>
|
|
|
|
<code class="ruby">module Travis::API::V3</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="5">
|
|
|
|
|
|
<code class="ruby"> # Using v2 API tokens to access v3 API.</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="6">
|
|
|
|
|
|
<code class="ruby"> # Allows us to later introduce a new way of storing tokens with more capabilities without API users having to know.</code>
|
|
</li>
|
|
|
|
<li class="covered" data-hits="1" data-linenumber="7">
|
|
<span class="hits">1</span>
|
|
|
|
<code class="ruby"> class AccessControl::LegacyToken < AccessControl::User</code>
|
|
</li>
|
|
|
|
<li class="covered" data-hits="1" data-linenumber="8">
|
|
<span class="hits">1</span>
|
|
|
|
<code class="ruby"> auth_type('token', 'basic')</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="9">
|
|
|
|
|
|
<code class="ruby"></code>
|
|
</li>
|
|
|
|
<li class="covered" data-hits="1" data-linenumber="10">
|
|
<span class="hits">1</span>
|
|
|
|
<code class="ruby"> def self.for_request(type, payload, env)</code>
|
|
</li>
|
|
|
|
<li class="covered" data-hits="4" data-linenumber="11">
|
|
<span class="hits">4</span>
|
|
|
|
<code class="ruby"> payload = paylad.first if payload.is_a? Array</code>
|
|
</li>
|
|
|
|
<li class="covered" data-hits="4" data-linenumber="12">
|
|
<span class="hits">4</span>
|
|
|
|
<code class="ruby"> token = Travis::Api::App::AccessToken.find_by_token(payload)</code>
|
|
</li>
|
|
|
|
<li class="covered" data-hits="4" data-linenumber="13">
|
|
<span class="hits">4</span>
|
|
|
|
<code class="ruby"> new(token) if token</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="14">
|
|
|
|
|
|
<code class="ruby"> end</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="15">
|
|
|
|
|
|
<code class="ruby"></code>
|
|
</li>
|
|
|
|
<li class="covered" data-hits="1" data-linenumber="16">
|
|
<span class="hits">1</span>
|
|
|
|
<code class="ruby"> def initialize(token)</code>
|
|
</li>
|
|
|
|
<li class="covered" data-hits="4" data-linenumber="17">
|
|
<span class="hits">4</span>
|
|
|
|
<code class="ruby"> @token = token</code>
|
|
</li>
|
|
|
|
<li class="covered" data-hits="4" data-linenumber="18">
|
|
<span class="hits">4</span>
|
|
|
|
<code class="ruby"> super(token.user)</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="19">
|
|
|
|
|
|
<code class="ruby"> end</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="20">
|
|
|
|
|
|
<code class="ruby"></code>
|
|
</li>
|
|
|
|
<li class="covered" data-hits="1" data-linenumber="21">
|
|
<span class="hits">1</span>
|
|
|
|
<code class="ruby"> protected</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="22">
|
|
|
|
|
|
<code class="ruby"></code>
|
|
</li>
|
|
|
|
<li class="covered" data-hits="1" data-linenumber="23">
|
|
<span class="hits">1</span>
|
|
|
|
<code class="ruby"> def permission?(action, id)</code>
|
|
</li>
|
|
|
|
<li class="covered" data-hits="4" data-linenumber="24">
|
|
<span class="hits">4</span>
|
|
|
|
<code class="ruby"> super if @token.scopes.include? :private</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="25">
|
|
|
|
|
|
<code class="ruby"> end</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="26">
|
|
|
|
|
|
<code class="ruby"> end</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="27">
|
|
|
|
|
|
<code class="ruby">end</code>
|
|
</li>
|
|
|
|
</ol>
|
|
</pre>
|
|
</div>
|
|
|
|
<div class="source_table" id="53595a642e443774649a7e171c5987c76711acd2">
|
|
<div class="header">
|
|
<h3>lib/travis/api/v3/access_control/scoped.rb</h3>
|
|
<h4><span class="green">100.0 %</span> covered</h4>
|
|
<div>
|
|
<b>11</b> relevant lines.
|
|
<span class="green"><b>11</b> lines covered</span> and
|
|
<span class="red"><b>0</b> lines missed.</span>
|
|
</div>
|
|
</div>
|
|
|
|
<pre>
|
|
<ol>
|
|
|
|
<li class="covered" data-hits="1" data-linenumber="1">
|
|
<span class="hits">1</span>
|
|
|
|
<code class="ruby">require 'travis/api/v3/access_control/generic'</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="2">
|
|
|
|
|
|
<code class="ruby"></code>
|
|
</li>
|
|
|
|
<li class="covered" data-hits="1" data-linenumber="3">
|
|
<span class="hits">1</span>
|
|
|
|
<code class="ruby">module Travis::API::V3</code>
|
|
</li>
|
|
|
|
<li class="covered" data-hits="1" data-linenumber="4">
|
|
<span class="hits">1</span>
|
|
|
|
<code class="ruby"> class AccessControl::Scoped < AccessControl::Generic</code>
|
|
</li>
|
|
|
|
<li class="covered" data-hits="1" data-linenumber="5">
|
|
<span class="hits">1</span>
|
|
|
|
<code class="ruby"> attr_accessor :unscoped, :owner_name, :name</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="6">
|
|
|
|
|
|
<code class="ruby"></code>
|
|
</li>
|
|
|
|
<li class="covered" data-hits="1" data-linenumber="7">
|
|
<span class="hits">1</span>
|
|
|
|
<code class="ruby"> def initialize(scope, unscoped)</code>
|
|
</li>
|
|
|
|
<li class="covered" data-hits="4" data-linenumber="8">
|
|
<span class="hits">4</span>
|
|
|
|
<code class="ruby"> @owner_name, @name = scope.split(?/.freeze, 2)</code>
|
|
</li>
|
|
|
|
<li class="covered" data-hits="4" data-linenumber="9">
|
|
<span class="hits">4</span>
|
|
|
|
<code class="ruby"> @unscoped = unscoped</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="10">
|
|
|
|
|
|
<code class="ruby"> end</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="11">
|
|
|
|
|
|
<code class="ruby"></code>
|
|
</li>
|
|
|
|
<li class="covered" data-hits="1" data-linenumber="12">
|
|
<span class="hits">1</span>
|
|
|
|
<code class="ruby"> protected</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="13">
|
|
|
|
|
|
<code class="ruby"></code>
|
|
</li>
|
|
|
|
<li class="covered" data-hits="1" data-linenumber="14">
|
|
<span class="hits">1</span>
|
|
|
|
<code class="ruby"> def private_repository_visible?(repository)</code>
|
|
</li>
|
|
|
|
<li class="covered" data-hits="4" data-linenumber="15">
|
|
<span class="hits">4</span>
|
|
|
|
<code class="ruby"> return false if name and repository.name != name</code>
|
|
</li>
|
|
|
|
<li class="covered" data-hits="4" data-linenumber="16">
|
|
<span class="hits">4</span>
|
|
|
|
<code class="ruby"> unscoped.visible?(repository) if repository.owner_name == owner_name</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="17">
|
|
|
|
|
|
<code class="ruby"> end</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="18">
|
|
|
|
|
|
<code class="ruby"> end</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="19">
|
|
|
|
|
|
<code class="ruby">end</code>
|
|
</li>
|
|
|
|
</ol>
|
|
</pre>
|
|
</div>
|
|
|
|
<div class="source_table" id="79c75a7a3afdda48d239b26bfbce537aac5c7e87">
|
|
<div class="header">
|
|
<h3>lib/travis/api/v3/access_control/signature.rb</h3>
|
|
<h4><span class="yellow">81.25 %</span> covered</h4>
|
|
<div>
|
|
<b>32</b> relevant lines.
|
|
<span class="green"><b>26</b> lines covered</span> and
|
|
<span class="red"><b>6</b> lines missed.</span>
|
|
</div>
|
|
</div>
|
|
|
|
<pre>
|
|
<ol>
|
|
|
|
<li class="covered" data-hits="1" data-linenumber="1">
|
|
<span class="hits">1</span>
|
|
|
|
<code class="ruby">require 'travis/api/v3/access_control/generic'</code>
|
|
</li>
|
|
|
|
<li class="covered" data-hits="1" data-linenumber="2">
|
|
<span class="hits">1</span>
|
|
|
|
<code class="ruby">require 'travis/api/app/access_token'</code>
|
|
</li>
|
|
|
|
<li class="covered" data-hits="1" data-linenumber="3">
|
|
<span class="hits">1</span>
|
|
|
|
<code class="ruby">require 'digest/sha1'</code>
|
|
</li>
|
|
|
|
<li class="covered" data-hits="1" data-linenumber="4">
|
|
<span class="hits">1</span>
|
|
|
|
<code class="ruby">require 'openssl'</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="5">
|
|
|
|
|
|
<code class="ruby"></code>
|
|
</li>
|
|
|
|
<li class="covered" data-hits="1" data-linenumber="6">
|
|
<span class="hits">1</span>
|
|
|
|
<code class="ruby">module Travis::API::V3</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="7">
|
|
|
|
|
|
<code class="ruby"> # Support signed requests to not expose the secret to an untrusted environment.</code>
|
|
</li>
|
|
|
|
<li class="covered" data-hits="1" data-linenumber="8">
|
|
<span class="hits">1</span>
|
|
|
|
<code class="ruby"> class AccessControl::Signature < AccessControl::Generic</code>
|
|
</li>
|
|
|
|
<li class="covered" data-hits="1" data-linenumber="9">
|
|
<span class="hits">1</span>
|
|
|
|
<code class="ruby"> auth_type('signature')</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="10">
|
|
|
|
|
|
<code class="ruby"></code>
|
|
</li>
|
|
|
|
<li class="covered" data-hits="1" data-linenumber="11">
|
|
<span class="hits">1</span>
|
|
|
|
<code class="ruby"> def self.for_request(type, payload, env)</code>
|
|
</li>
|
|
|
|
<li class="covered" data-hits="6" data-linenumber="12">
|
|
<span class="hits">6</span>
|
|
|
|
<code class="ruby"> *args, signature = payload</code>
|
|
</li>
|
|
|
|
<li class="covered" data-hits="16" data-linenumber="13">
|
|
<span class="hits">16</span>
|
|
|
|
<code class="ruby"> options = Hash[args.map { |a| a.split(?=.freeze, 2) }]</code>
|
|
</li>
|
|
|
|
<li class="covered" data-hits="6" data-linenumber="14">
|
|
<span class="hits">6</span>
|
|
|
|
<code class="ruby"> challenge = ""</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="15">
|
|
|
|
|
|
<code class="ruby"></code>
|
|
</li>
|
|
|
|
<li class="covered" data-hits="6" data-linenumber="16">
|
|
<span class="hits">6</span>
|
|
|
|
<code class="ruby"> if github_id = options[?u.freeze]</code>
|
|
</li>
|
|
|
|
<li class="missed" data-hits="0" data-linenumber="17">
|
|
|
|
|
|
<code class="ruby"> return unless user = ::User.find_by_github_id(github_id)</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="18">
|
|
|
|
|
|
<code class="ruby"> end</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="19">
|
|
|
|
|
|
<code class="ruby"></code>
|
|
</li>
|
|
|
|
<li class="covered" data-hits="6" data-linenumber="20">
|
|
<span class="hits">6</span>
|
|
|
|
<code class="ruby"> if application = options[?a.freeze]</code>
|
|
</li>
|
|
|
|
<li class="covered" data-hits="6" data-linenumber="21">
|
|
<span class="hits">6</span>
|
|
|
|
<code class="ruby"> return unless Travis.config.applications and app_config = Travis.config.applications[application]</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="22">
|
|
|
|
|
|
<code class="ruby"> end</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="23">
|
|
|
|
|
|
<code class="ruby"></code>
|
|
</li>
|
|
|
|
<li class="covered" data-hits="6" data-linenumber="24">
|
|
<span class="hits">6</span>
|
|
|
|
<code class="ruby"> if c = options[?c.freeze]</code>
|
|
</li>
|
|
|
|
<li class="missed" data-hits="0" data-linenumber="25">
|
|
|
|
|
|
<code class="ruby"> challenge << env['REQUEST_METHOD'.freeze] << "\n".freeze if c.include?(?m.freeze)</code>
|
|
</li>
|
|
|
|
<li class="missed" data-hits="0" data-linenumber="26">
|
|
|
|
|
|
<code class="ruby"> challenge << env['SCRIPT_NAME'.freeze] << env['PATH_INFO'.freeze] << "\n" if c.include?(?p.freeze)</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="27">
|
|
|
|
|
|
<code class="ruby"> end</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="28">
|
|
|
|
|
|
<code class="ruby"></code>
|
|
</li>
|
|
|
|
<li class="covered" data-hits="6" data-linenumber="29">
|
|
<span class="hits">6</span>
|
|
|
|
<code class="ruby"> challenge << app_config[:secret] if app_config and user</code>
|
|
</li>
|
|
|
|
<li class="covered" data-hits="6" data-linenumber="30">
|
|
<span class="hits">6</span>
|
|
|
|
<code class="ruby"> challenge << args.join(?:.freeze)</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="31">
|
|
|
|
|
|
<code class="ruby"></code>
|
|
</li>
|
|
|
|
<li class="covered" data-hits="6" data-linenumber="32">
|
|
<span class="hits">6</span>
|
|
|
|
<code class="ruby"> if app_config</code>
|
|
</li>
|
|
|
|
<li class="covered" data-hits="6" data-linenumber="33">
|
|
<span class="hits">6</span>
|
|
|
|
<code class="ruby"> control = AccessControl::Application.new(application, user: user)</code>
|
|
</li>
|
|
|
|
<li class="covered" data-hits="6" data-linenumber="34">
|
|
<span class="hits">6</span>
|
|
|
|
<code class="ruby"> secrets = user ? secrets_for(user) : [app_config[:secret]]</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="35">
|
|
|
|
|
|
<code class="ruby"> else</code>
|
|
</li>
|
|
|
|
<li class="missed" data-hits="0" data-linenumber="36">
|
|
|
|
|
|
<code class="ruby"> control = AccessControl::User.new(user)</code>
|
|
</li>
|
|
|
|
<li class="missed" data-hits="0" data-linenumber="37">
|
|
|
|
|
|
<code class="ruby"> secrets = secrets_for(user)</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="38">
|
|
|
|
|
|
<code class="ruby"> end</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="39">
|
|
|
|
|
|
<code class="ruby"></code>
|
|
</li>
|
|
|
|
<li class="covered" data-hits="6" data-linenumber="40">
|
|
<span class="hits">6</span>
|
|
|
|
<code class="ruby"> if scope = options[?s.freeze]</code>
|
|
</li>
|
|
|
|
<li class="covered" data-hits="4" data-linenumber="41">
|
|
<span class="hits">4</span>
|
|
|
|
<code class="ruby"> control &&= AccessControl::Scoped.new(scope, control) </code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="42">
|
|
|
|
|
|
<code class="ruby"> end</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="43">
|
|
|
|
|
|
<code class="ruby"></code>
|
|
</li>
|
|
|
|
<li class="covered" data-hits="12" data-linenumber="44">
|
|
<span class="hits">12</span>
|
|
|
|
<code class="ruby"> control if secrets.any? { |secret| signed(challenge, secret) == signature }</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="45">
|
|
|
|
|
|
<code class="ruby"> end</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="46">
|
|
|
|
|
|
<code class="ruby"></code>
|
|
</li>
|
|
|
|
<li class="covered" data-hits="1" data-linenumber="47">
|
|
<span class="hits">1</span>
|
|
|
|
<code class="ruby"> def self.secrets_for(user)</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="48">
|
|
|
|
|
|
<code class="ruby"> [</code>
|
|
</li>
|
|
|
|
<li class="missed" data-hits="0" data-linenumber="49">
|
|
|
|
|
|
<code class="ruby"> Travis::Api::App::AccessToken.new(user: user, app_id: 1), # generated from github token</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="50">
|
|
|
|
|
|
<code class="ruby"> Travis::Api::App::AccessToken.new(user: user, app_id: 0) # used by web</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="51">
|
|
|
|
|
|
<code class="ruby"> ]</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="52">
|
|
|
|
|
|
<code class="ruby"> end</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="53">
|
|
|
|
|
|
<code class="ruby"></code>
|
|
</li>
|
|
|
|
<li class="covered" data-hits="1" data-linenumber="54">
|
|
<span class="hits">1</span>
|
|
|
|
<code class="ruby"> def self.signed(challenge, secret)</code>
|
|
</li>
|
|
|
|
<li class="covered" data-hits="6" data-linenumber="55">
|
|
<span class="hits">6</span>
|
|
|
|
<code class="ruby"> OpenSSL::HMAC.hexdigest('sha256'.freeze, secret, challenge)</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="56">
|
|
|
|
|
|
<code class="ruby"> end</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="57">
|
|
|
|
|
|
<code class="ruby"> end</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="58">
|
|
|
|
|
|
<code class="ruby">end</code>
|
|
</li>
|
|
|
|
</ol>
|
|
</pre>
|
|
</div>
|
|
|
|
<div class="source_table" id="8ed530d2fb0e1b23faa65b796edd40391a551aff">
|
|
<div class="header">
|
|
<h3>lib/travis/api/v3/access_control/user.rb</h3>
|
|
<h4><span class="green">100.0 %</span> covered</h4>
|
|
<div>
|
|
<b>14</b> relevant lines.
|
|
<span class="green"><b>14</b> lines covered</span> and
|
|
<span class="red"><b>0</b> lines missed.</span>
|
|
</div>
|
|
</div>
|
|
|
|
<pre>
|
|
<ol>
|
|
|
|
<li class="covered" data-hits="1" data-linenumber="1">
|
|
<span class="hits">1</span>
|
|
|
|
<code class="ruby">require 'travis/api/v3/access_control/generic'</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="2">
|
|
|
|
|
|
<code class="ruby"></code>
|
|
</li>
|
|
|
|
<li class="covered" data-hits="1" data-linenumber="3">
|
|
<span class="hits">1</span>
|
|
|
|
<code class="ruby">module Travis::API::V3</code>
|
|
</li>
|
|
|
|
<li class="covered" data-hits="1" data-linenumber="4">
|
|
<span class="hits">1</span>
|
|
|
|
<code class="ruby"> class AccessControl::User < AccessControl::Generic</code>
|
|
</li>
|
|
|
|
<li class="covered" data-hits="1" data-linenumber="5">
|
|
<span class="hits">1</span>
|
|
|
|
<code class="ruby"> attr_reader :user, :permissions</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="6">
|
|
|
|
|
|
<code class="ruby"></code>
|
|
</li>
|
|
|
|
<li class="covered" data-hits="1" data-linenumber="7">
|
|
<span class="hits">1</span>
|
|
|
|
<code class="ruby"> def initialize(user)</code>
|
|
</li>
|
|
|
|
<li class="covered" data-hits="4" data-linenumber="8">
|
|
<span class="hits">4</span>
|
|
|
|
<code class="ruby"> @user = user</code>
|
|
</li>
|
|
|
|
<li class="covered" data-hits="4" data-linenumber="9">
|
|
<span class="hits">4</span>
|
|
|
|
<code class="ruby"> @permissions = user.permissions.where(user_id: user.id)</code>
|
|
</li>
|
|
|
|
<li class="covered" data-hits="4" data-linenumber="10">
|
|
<span class="hits">4</span>
|
|
|
|
<code class="ruby"> super()</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="11">
|
|
|
|
|
|
<code class="ruby"> end</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="12">
|
|
|
|
|
|
<code class="ruby"></code>
|
|
</li>
|
|
|
|
<li class="covered" data-hits="1" data-linenumber="13">
|
|
<span class="hits">1</span>
|
|
|
|
<code class="ruby"> protected</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="14">
|
|
|
|
|
|
<code class="ruby"></code>
|
|
</li>
|
|
|
|
<li class="covered" data-hits="1" data-linenumber="15">
|
|
<span class="hits">1</span>
|
|
|
|
<code class="ruby"> def private_repository_visible?(repository)</code>
|
|
</li>
|
|
|
|
<li class="covered" data-hits="4" data-linenumber="16">
|
|
<span class="hits">4</span>
|
|
|
|
<code class="ruby"> permission?(:pull, repository)</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="17">
|
|
|
|
|
|
<code class="ruby"> end</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="18">
|
|
|
|
|
|
<code class="ruby"></code>
|
|
</li>
|
|
|
|
<li class="covered" data-hits="1" data-linenumber="19">
|
|
<span class="hits">1</span>
|
|
|
|
<code class="ruby"> def permission?(type, id)</code>
|
|
</li>
|
|
|
|
<li class="covered" data-hits="4" data-linenumber="20">
|
|
<span class="hits">4</span>
|
|
|
|
<code class="ruby"> id = id.id if id.is_a? ::Repository</code>
|
|
</li>
|
|
|
|
<li class="covered" data-hits="4" data-linenumber="21">
|
|
<span class="hits">4</span>
|
|
|
|
<code class="ruby"> permissions.where(type => true, :repository_id => id).any?</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="22">
|
|
|
|
|
|
<code class="ruby"> end</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="23">
|
|
|
|
|
|
<code class="ruby"> end</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="24">
|
|
|
|
|
|
<code class="ruby">end</code>
|
|
</li>
|
|
|
|
</ol>
|
|
</pre>
|
|
</div>
|
|
|
|
<div class="source_table" id="e7d3951ce9217b83d561dc22cebb4194095eba79">
|
|
<div class="header">
|
|
<h3>lib/travis/api/v3/error.rb</h3>
|
|
<h4><span class="yellow">85.71 %</span> covered</h4>
|
|
<div>
|
|
<b>21</b> relevant lines.
|
|
<span class="green"><b>18</b> lines covered</span> and
|
|
<span class="red"><b>3</b> lines missed.</span>
|
|
</div>
|
|
</div>
|
|
|
|
<pre>
|
|
<ol>
|
|
|
|
<li class="covered" data-hits="1" data-linenumber="1">
|
|
<span class="hits">1</span>
|
|
|
|
<code class="ruby">require 'rack/utils'</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="2">
|
|
|
|
|
|
<code class="ruby"></code>
|
|
</li>
|
|
|
|
<li class="covered" data-hits="1" data-linenumber="3">
|
|
<span class="hits">1</span>
|
|
|
|
<code class="ruby">module Travis::API::V3</code>
|
|
</li>
|
|
|
|
<li class="covered" data-hits="1" data-linenumber="4">
|
|
<span class="hits">1</span>
|
|
|
|
<code class="ruby"> class Error < StandardError</code>
|
|
</li>
|
|
|
|
<li class="covered" data-hits="1" data-linenumber="5">
|
|
<span class="hits">1</span>
|
|
|
|
<code class="ruby"> def self.create(default_message = nil, **options)</code>
|
|
</li>
|
|
|
|
<li class="covered" data-hits="5" data-linenumber="6">
|
|
<span class="hits">5</span>
|
|
|
|
<code class="ruby"> options[:default_message] = default_message if default_message</code>
|
|
</li>
|
|
|
|
<li class="covered" data-hits="38" data-linenumber="7">
|
|
<span class="hits">38</span>
|
|
|
|
<code class="ruby"> Class.new(self) { options.each { |key, value| define_singleton_method(key) { value } } }</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="8">
|
|
|
|
|
|
<code class="ruby"> end</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="9">
|
|
|
|
|
|
<code class="ruby"></code>
|
|
</li>
|
|
|
|
<li class="covered" data-hits="1" data-linenumber="10">
|
|
<span class="hits">1</span>
|
|
|
|
<code class="ruby"> def self.status</code>
|
|
</li>
|
|
|
|
<li class="missed" data-hits="0" data-linenumber="11">
|
|
|
|
|
|
<code class="ruby"> 500</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="12">
|
|
|
|
|
|
<code class="ruby"> end</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="13">
|
|
|
|
|
|
<code class="ruby"></code>
|
|
</li>
|
|
|
|
<li class="covered" data-hits="1" data-linenumber="14">
|
|
<span class="hits">1</span>
|
|
|
|
<code class="ruby"> def self.type</code>
|
|
</li>
|
|
|
|
<li class="covered" data-hits="10" data-linenumber="15">
|
|
<span class="hits">10</span>
|
|
|
|
<code class="ruby"> @type ||= name[/[^:]+$/].underscore</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="16">
|
|
|
|
|
|
<code class="ruby"> end</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="17">
|
|
|
|
|
|
<code class="ruby"></code>
|
|
</li>
|
|
|
|
<li class="covered" data-hits="1" data-linenumber="18">
|
|
<span class="hits">1</span>
|
|
|
|
<code class="ruby"> def self.template</code>
|
|
</li>
|
|
|
|
<li class="missed" data-hits="0" data-linenumber="19">
|
|
|
|
|
|
<code class="ruby"> '%s'.freeze</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="20">
|
|
|
|
|
|
<code class="ruby"> end</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="21">
|
|
|
|
|
|
<code class="ruby"></code>
|
|
</li>
|
|
|
|
<li class="covered" data-hits="1" data-linenumber="22">
|
|
<span class="hits">1</span>
|
|
|
|
<code class="ruby"> def self.default_message</code>
|
|
</li>
|
|
|
|
<li class="missed" data-hits="0" data-linenumber="23">
|
|
|
|
|
|
<code class="ruby"> @default_message ||= Rack::Utils::HTTP_STATUS_CODES.fetch(status, 'unknown error'.freeze).downcase</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="24">
|
|
|
|
|
|
<code class="ruby"> end</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="25">
|
|
|
|
|
|
<code class="ruby"></code>
|
|
</li>
|
|
|
|
<li class="covered" data-hits="1" data-linenumber="26">
|
|
<span class="hits">1</span>
|
|
|
|
<code class="ruby"> attr_accessor :status, :type, :payload</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="27">
|
|
|
|
|
|
<code class="ruby"></code>
|
|
</li>
|
|
|
|
<li class="covered" data-hits="1" data-linenumber="28">
|
|
<span class="hits">1</span>
|
|
|
|
<code class="ruby"> def initialize(message = self.class.default_message, status: self.class.status, type: self.class.type, **payload)</code>
|
|
</li>
|
|
|
|
<li class="covered" data-hits="10" data-linenumber="29">
|
|
<span class="hits">10</span>
|
|
|
|
<code class="ruby"> if message.is_a? Symbol</code>
|
|
</li>
|
|
|
|
<li class="covered" data-hits="10" data-linenumber="30">
|
|
<span class="hits">10</span>
|
|
|
|
<code class="ruby"> payload[:resource_type] ||= message</code>
|
|
</li>
|
|
|
|
<li class="covered" data-hits="10" data-linenumber="31">
|
|
<span class="hits">10</span>
|
|
|
|
<code class="ruby"> message = self.class.template % message</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="32">
|
|
|
|
|
|
<code class="ruby"> end</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="33">
|
|
|
|
|
|
<code class="ruby"></code>
|
|
</li>
|
|
|
|
<li class="covered" data-hits="10" data-linenumber="34">
|
|
<span class="hits">10</span>
|
|
|
|
<code class="ruby"> self.status, self.type, self.payload = status, type, payload</code>
|
|
</li>
|
|
|
|
<li class="covered" data-hits="10" data-linenumber="35">
|
|
<span class="hits">10</span>
|
|
|
|
<code class="ruby"> super(message)</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="36">
|
|
|
|
|
|
<code class="ruby"> end</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="37">
|
|
|
|
|
|
<code class="ruby"> end</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="38">
|
|
|
|
|
|
<code class="ruby">end</code>
|
|
</li>
|
|
|
|
</ol>
|
|
</pre>
|
|
</div>
|
|
|
|
<div class="source_table" id="31a1a8c991fef1e18b15080ccfcb0e9ba1d8c1a4">
|
|
<div class="header">
|
|
<h3>lib/travis/api/v3/opt_in.rb</h3>
|
|
<h4><span class="green">97.22 %</span> covered</h4>
|
|
<div>
|
|
<b>36</b> relevant lines.
|
|
<span class="green"><b>35</b> lines covered</span> and
|
|
<span class="red"><b>1</b> lines missed.</span>
|
|
</div>
|
|
</div>
|
|
|
|
<pre>
|
|
<ol>
|
|
|
|
<li class="covered" data-hits="1" data-linenumber="1">
|
|
<span class="hits">1</span>
|
|
|
|
<code class="ruby">module Travis::API::V3</code>
|
|
</li>
|
|
|
|
<li class="covered" data-hits="1" data-linenumber="2">
|
|
<span class="hits">1</span>
|
|
|
|
<code class="ruby"> class OptIn</code>
|
|
</li>
|
|
|
|
<li class="covered" data-hits="1" data-linenumber="3">
|
|
<span class="hits">1</span>
|
|
|
|
<code class="ruby"> attr_reader :legacy_stack, :prefix, :router, :accept, :version_header</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="4">
|
|
|
|
|
|
<code class="ruby"></code>
|
|
</li>
|
|
|
|
<li class="covered" data-hits="1" data-linenumber="5">
|
|
<span class="hits">1</span>
|
|
|
|
<code class="ruby"> def initialize(legacy_stack, prefix: '/v3', router: Router.new, accept: 'application/vnd.travis-ci.3+', version_header: 'Travis-API-Version')</code>
|
|
</li>
|
|
|
|
<li class="covered" data-hits="27" data-linenumber="6">
|
|
<span class="hits">27</span>
|
|
|
|
<code class="ruby"> @legacy_stack = legacy_stack</code>
|
|
</li>
|
|
|
|
<li class="covered" data-hits="27" data-linenumber="7">
|
|
<span class="hits">27</span>
|
|
|
|
<code class="ruby"> @prefix = prefix</code>
|
|
</li>
|
|
|
|
<li class="covered" data-hits="27" data-linenumber="8">
|
|
<span class="hits">27</span>
|
|
|
|
<code class="ruby"> @router = router</code>
|
|
</li>
|
|
|
|
<li class="covered" data-hits="27" data-linenumber="9">
|
|
<span class="hits">27</span>
|
|
|
|
<code class="ruby"> @accept = accept</code>
|
|
</li>
|
|
|
|
<li class="covered" data-hits="27" data-linenumber="10">
|
|
<span class="hits">27</span>
|
|
|
|
<code class="ruby"> @version_header = "HTTP_#{version_header.upcase.gsub(/\W/, '_')}"</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="11">
|
|
|
|
|
|
<code class="ruby"> end</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="12">
|
|
|
|
|
|
<code class="ruby"></code>
|
|
</li>
|
|
|
|
<li class="covered" data-hits="1" data-linenumber="13">
|
|
<span class="hits">1</span>
|
|
|
|
<code class="ruby"> def call(env)</code>
|
|
</li>
|
|
|
|
<li class="covered" data-hits="23" data-linenumber="14">
|
|
<span class="hits">23</span>
|
|
|
|
<code class="ruby"> return redirect(env) if redirect?(env)</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="15">
|
|
|
|
|
|
<code class="ruby"></code>
|
|
</li>
|
|
|
|
<li class="covered" data-hits="23" data-linenumber="16">
|
|
<span class="hits">23</span>
|
|
|
|
<code class="ruby"> if matched = matching_env(env)</code>
|
|
</li>
|
|
|
|
<li class="covered" data-hits="23" data-linenumber="17">
|
|
<span class="hits">23</span>
|
|
|
|
<code class="ruby"> result = @router.call(matched)</code>
|
|
</li>
|
|
|
|
<li class="covered" data-hits="23" data-linenumber="18">
|
|
<span class="hits">23</span>
|
|
|
|
<code class="ruby"> result, missing = nil, result if cascade?(*result)</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="19">
|
|
|
|
|
|
<code class="ruby"> end</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="20">
|
|
|
|
|
|
<code class="ruby"></code>
|
|
</li>
|
|
|
|
<li class="covered" data-hits="23" data-linenumber="21">
|
|
<span class="hits">23</span>
|
|
|
|
<code class="ruby"> result = result || legacy_stack.call(env)</code>
|
|
</li>
|
|
|
|
<li class="covered" data-hits="23" data-linenumber="22">
|
|
<span class="hits">23</span>
|
|
|
|
<code class="ruby"> pick(result, missing)</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="23">
|
|
|
|
|
|
<code class="ruby"> end</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="24">
|
|
|
|
|
|
<code class="ruby"></code>
|
|
</li>
|
|
|
|
<li class="covered" data-hits="1" data-linenumber="25">
|
|
<span class="hits">1</span>
|
|
|
|
<code class="ruby"> def pick(result, missing)</code>
|
|
</li>
|
|
|
|
<li class="covered" data-hits="23" data-linenumber="26">
|
|
<span class="hits">23</span>
|
|
|
|
<code class="ruby"> return result if missing.nil?</code>
|
|
</li>
|
|
|
|
<li class="covered" data-hits="10" data-linenumber="27">
|
|
<span class="hits">10</span>
|
|
|
|
<code class="ruby"> return result if result[0] != 404</code>
|
|
</li>
|
|
|
|
<li class="covered" data-hits="10" data-linenumber="28">
|
|
<span class="hits">10</span>
|
|
|
|
<code class="ruby"> missing</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="29">
|
|
|
|
|
|
<code class="ruby"> end</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="30">
|
|
|
|
|
|
<code class="ruby"></code>
|
|
</li>
|
|
|
|
<li class="covered" data-hits="1" data-linenumber="31">
|
|
<span class="hits">1</span>
|
|
|
|
<code class="ruby"> def redirect?(env)</code>
|
|
</li>
|
|
|
|
<li class="covered" data-hits="23" data-linenumber="32">
|
|
<span class="hits">23</span>
|
|
|
|
<code class="ruby"> env['PATH_INFO'.freeze] == prefix</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="33">
|
|
|
|
|
|
<code class="ruby"> end</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="34">
|
|
|
|
|
|
<code class="ruby"></code>
|
|
</li>
|
|
|
|
<li class="covered" data-hits="1" data-linenumber="35">
|
|
<span class="hits">1</span>
|
|
|
|
<code class="ruby"> def redirect(env)</code>
|
|
</li>
|
|
|
|
<li class="missed" data-hits="0" data-linenumber="36">
|
|
|
|
|
|
<code class="ruby"> [307, {'Location'.freeze => env['SCRIPT_NAME'.freeze] + prefix + ?/.freeze, 'Conent-Type'.freeze => 'text/plain'.freeze}, []]</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="37">
|
|
|
|
|
|
<code class="ruby"> end</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="38">
|
|
|
|
|
|
<code class="ruby"></code>
|
|
</li>
|
|
|
|
<li class="covered" data-hits="1" data-linenumber="39">
|
|
<span class="hits">1</span>
|
|
|
|
<code class="ruby"> def cascade?(status, headers, body)</code>
|
|
</li>
|
|
|
|
<li class="covered" data-hits="23" data-linenumber="40">
|
|
<span class="hits">23</span>
|
|
|
|
<code class="ruby"> status % 100 == 4 and headers['X-Cascade'.freeze] == 'pass'.freeze</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="41">
|
|
|
|
|
|
<code class="ruby"> end</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="42">
|
|
|
|
|
|
<code class="ruby"></code>
|
|
</li>
|
|
|
|
<li class="covered" data-hits="1" data-linenumber="43">
|
|
<span class="hits">1</span>
|
|
|
|
<code class="ruby"> def matching_env(env)</code>
|
|
</li>
|
|
|
|
<li class="covered" data-hits="23" data-linenumber="44">
|
|
<span class="hits">23</span>
|
|
|
|
<code class="ruby"> for_v3 = from_prefix(env) || from_accept(env) || from_version_header(env)</code>
|
|
</li>
|
|
|
|
<li class="covered" data-hits="23" data-linenumber="45">
|
|
<span class="hits">23</span>
|
|
|
|
<code class="ruby"> for_v3 == true ? env : for_v3</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="46">
|
|
|
|
|
|
<code class="ruby"> end</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="47">
|
|
|
|
|
|
<code class="ruby"></code>
|
|
</li>
|
|
|
|
<li class="covered" data-hits="1" data-linenumber="48">
|
|
<span class="hits">1</span>
|
|
|
|
<code class="ruby"> def from_prefix(env)</code>
|
|
</li>
|
|
|
|
<li class="covered" data-hits="23" data-linenumber="49">
|
|
<span class="hits">23</span>
|
|
|
|
<code class="ruby"> return unless prefix and env['PATH_INFO'.freeze].start_with?(prefix + ?/.freeze)</code>
|
|
</li>
|
|
|
|
<li class="covered" data-hits="20" data-linenumber="50">
|
|
<span class="hits">20</span>
|
|
|
|
<code class="ruby"> env.merge({</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="51">
|
|
|
|
|
|
<code class="ruby"> 'SCRIPT_NAME'.freeze => env['SCRIPT_NAME'.freeze] + prefix,</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="52">
|
|
|
|
|
|
<code class="ruby"> 'PATH_INFO'.freeze => env['PATH_INFO'.freeze][prefix.size..-1]</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="53">
|
|
|
|
|
|
<code class="ruby"> })</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="54">
|
|
|
|
|
|
<code class="ruby"> end</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="55">
|
|
|
|
|
|
<code class="ruby"></code>
|
|
</li>
|
|
|
|
<li class="covered" data-hits="1" data-linenumber="56">
|
|
<span class="hits">1</span>
|
|
|
|
<code class="ruby"> def from_accept(env)</code>
|
|
</li>
|
|
|
|
<li class="covered" data-hits="3" data-linenumber="57">
|
|
<span class="hits">3</span>
|
|
|
|
<code class="ruby"> env['HTTP_ACCEPT'.freeze].include?(accept) if accept and env.include?('HTTP_ACCEPT'.freeze)</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="58">
|
|
|
|
|
|
<code class="ruby"> end</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="59">
|
|
|
|
|
|
<code class="ruby"></code>
|
|
</li>
|
|
|
|
<li class="covered" data-hits="1" data-linenumber="60">
|
|
<span class="hits">1</span>
|
|
|
|
<code class="ruby"> def from_version_header(env)</code>
|
|
</li>
|
|
|
|
<li class="covered" data-hits="2" data-linenumber="61">
|
|
<span class="hits">2</span>
|
|
|
|
<code class="ruby"> env[version_header] == '3'.freeze if version_header and env.include?(version_header)</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="62">
|
|
|
|
|
|
<code class="ruby"> end</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="63">
|
|
|
|
|
|
<code class="ruby"> end</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="64">
|
|
|
|
|
|
<code class="ruby">end</code>
|
|
</li>
|
|
|
|
</ol>
|
|
</pre>
|
|
</div>
|
|
|
|
<div class="source_table" id="8705c480fd77b20d19558856194eeee048030a20">
|
|
<div class="header">
|
|
<h3>lib/travis/api/v3/renderer.rb</h3>
|
|
<h4><span class="green">100.0 %</span> covered</h4>
|
|
<div>
|
|
<b>8</b> relevant lines.
|
|
<span class="green"><b>8</b> lines covered</span> and
|
|
<span class="red"><b>0</b> lines missed.</span>
|
|
</div>
|
|
</div>
|
|
|
|
<pre>
|
|
<ol>
|
|
|
|
<li class="covered" data-hits="1" data-linenumber="1">
|
|
<span class="hits">1</span>
|
|
|
|
<code class="ruby">module Travis::API::V3</code>
|
|
</li>
|
|
|
|
<li class="covered" data-hits="1" data-linenumber="2">
|
|
<span class="hits">1</span>
|
|
|
|
<code class="ruby"> module Renderer</code>
|
|
</li>
|
|
|
|
<li class="covered" data-hits="1" data-linenumber="3">
|
|
<span class="hits">1</span>
|
|
|
|
<code class="ruby"> extend self</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="4">
|
|
|
|
|
|
<code class="ruby"></code>
|
|
</li>
|
|
|
|
<li class="covered" data-hits="1" data-linenumber="5">
|
|
<span class="hits">1</span>
|
|
|
|
<code class="ruby"> def [](key)</code>
|
|
</li>
|
|
|
|
<li class="covered" data-hits="18" data-linenumber="6">
|
|
<span class="hits">18</span>
|
|
|
|
<code class="ruby"> return key if key.respond_to? :render</code>
|
|
</li>
|
|
|
|
<li class="covered" data-hits="18" data-linenumber="7">
|
|
<span class="hits">18</span>
|
|
|
|
<code class="ruby"> const_get(key.to_s.camelize)</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="8">
|
|
|
|
|
|
<code class="ruby"> end</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="9">
|
|
|
|
|
|
<code class="ruby"></code>
|
|
</li>
|
|
|
|
<li class="covered" data-hits="1" data-linenumber="10">
|
|
<span class="hits">1</span>
|
|
|
|
<code class="ruby"> def format_date(date)</code>
|
|
</li>
|
|
|
|
<li class="covered" data-hits="16" data-linenumber="11">
|
|
<span class="hits">16</span>
|
|
|
|
<code class="ruby"> date && date.strftime('%Y-%m-%dT%H:%M:%SZ')</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="12">
|
|
|
|
|
|
<code class="ruby"> end</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="13">
|
|
|
|
|
|
<code class="ruby"> end</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="14">
|
|
|
|
|
|
<code class="ruby">end</code>
|
|
</li>
|
|
|
|
</ol>
|
|
</pre>
|
|
</div>
|
|
|
|
<div class="source_table" id="1b1a35fbaa7ca2749c8e0b8b9c270d2424fa0183">
|
|
<div class="header">
|
|
<h3>lib/travis/api/v3/renderer/error.rb</h3>
|
|
<h4><span class="green">100.0 %</span> covered</h4>
|
|
<div>
|
|
<b>5</b> relevant lines.
|
|
<span class="green"><b>5</b> lines covered</span> and
|
|
<span class="red"><b>0</b> lines missed.</span>
|
|
</div>
|
|
</div>
|
|
|
|
<pre>
|
|
<ol>
|
|
|
|
<li class="covered" data-hits="1" data-linenumber="1">
|
|
<span class="hits">1</span>
|
|
|
|
<code class="ruby">module Travis::API::V3</code>
|
|
</li>
|
|
|
|
<li class="covered" data-hits="1" data-linenumber="2">
|
|
<span class="hits">1</span>
|
|
|
|
<code class="ruby"> module Renderer::Error</code>
|
|
</li>
|
|
|
|
<li class="covered" data-hits="1" data-linenumber="3">
|
|
<span class="hits">1</span>
|
|
|
|
<code class="ruby"> extend self</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="4">
|
|
|
|
|
|
<code class="ruby"></code>
|
|
</li>
|
|
|
|
<li class="covered" data-hits="1" data-linenumber="5">
|
|
<span class="hits">1</span>
|
|
|
|
<code class="ruby"> def render(error)</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="6">
|
|
|
|
|
|
<code class="ruby"> {</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="7">
|
|
|
|
|
|
<code class="ruby"> :@type => 'error'.freeze,</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="8">
|
|
|
|
|
|
<code class="ruby"> :error_type => error.type,</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="9">
|
|
|
|
|
|
<code class="ruby"> :error_message => error.message,</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="10">
|
|
|
|
|
|
<code class="ruby"> **error.payload</code>
|
|
</li>
|
|
|
|
<li class="covered" data-hits="10" data-linenumber="11">
|
|
<span class="hits">10</span>
|
|
|
|
<code class="ruby"> }</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="12">
|
|
|
|
|
|
<code class="ruby"> end</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="13">
|
|
|
|
|
|
<code class="ruby"> end</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="14">
|
|
|
|
|
|
<code class="ruby">end</code>
|
|
</li>
|
|
|
|
</ol>
|
|
</pre>
|
|
</div>
|
|
|
|
<div class="source_table" id="cca5ed5e9f0a0d7cd46bb5427220ee36042a9e9c">
|
|
<div class="header">
|
|
<h3>lib/travis/api/v3/renderer/repository.rb</h3>
|
|
<h4><span class="green">100.0 %</span> covered</h4>
|
|
<div>
|
|
<b>10</b> relevant lines.
|
|
<span class="green"><b>10</b> lines covered</span> and
|
|
<span class="red"><b>0</b> lines missed.</span>
|
|
</div>
|
|
</div>
|
|
|
|
<pre>
|
|
<ol>
|
|
|
|
<li class="covered" data-hits="1" data-linenumber="1">
|
|
<span class="hits">1</span>
|
|
|
|
<code class="ruby">module Travis::API::V3</code>
|
|
</li>
|
|
|
|
<li class="covered" data-hits="1" data-linenumber="2">
|
|
<span class="hits">1</span>
|
|
|
|
<code class="ruby"> module Renderer::Repository</code>
|
|
</li>
|
|
|
|
<li class="covered" data-hits="1" data-linenumber="3">
|
|
<span class="hits">1</span>
|
|
|
|
<code class="ruby"> DIRECT_ATTRIBUTES = %i[id name slug description github_language private]</code>
|
|
</li>
|
|
|
|
<li class="covered" data-hits="1" data-linenumber="4">
|
|
<span class="hits">1</span>
|
|
|
|
<code class="ruby"> extend self</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="5">
|
|
|
|
|
|
<code class="ruby"></code>
|
|
</li>
|
|
|
|
<li class="covered" data-hits="1" data-linenumber="6">
|
|
<span class="hits">1</span>
|
|
|
|
<code class="ruby"> def render(repository)</code>
|
|
</li>
|
|
|
|
<li class="covered" data-hits="8" data-linenumber="7">
|
|
<span class="hits">8</span>
|
|
|
|
<code class="ruby"> { :@type => 'repository'.freeze, **direct_attributes(repository), **nested_resources(repository) }</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="8">
|
|
|
|
|
|
<code class="ruby"> end</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="9">
|
|
|
|
|
|
<code class="ruby"></code>
|
|
</li>
|
|
|
|
<li class="covered" data-hits="1" data-linenumber="10">
|
|
<span class="hits">1</span>
|
|
|
|
<code class="ruby"> def direct_attributes(repository)</code>
|
|
</li>
|
|
|
|
<li class="covered" data-hits="56" data-linenumber="11">
|
|
<span class="hits">56</span>
|
|
|
|
<code class="ruby"> DIRECT_ATTRIBUTES.map { |a| [a, repository.public_send(a)] }.to_h</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="12">
|
|
|
|
|
|
<code class="ruby"> end</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="13">
|
|
|
|
|
|
<code class="ruby"></code>
|
|
</li>
|
|
|
|
<li class="covered" data-hits="1" data-linenumber="14">
|
|
<span class="hits">1</span>
|
|
|
|
<code class="ruby"> def nested_resources(repository)</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="15">
|
|
|
|
|
|
<code class="ruby"> {</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="16">
|
|
|
|
|
|
<code class="ruby"> owner: {</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="17">
|
|
|
|
|
|
<code class="ruby"> :@type => repository.owner_type.downcase,</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="18">
|
|
|
|
|
|
<code class="ruby"> :id => repository.owner_id,</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="19">
|
|
|
|
|
|
<code class="ruby"> :login => repository.owner_name</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="20">
|
|
|
|
|
|
<code class="ruby"> },</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="21">
|
|
|
|
|
|
<code class="ruby"> last_build: {</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="22">
|
|
|
|
|
|
<code class="ruby"> :@type => 'build'.freeze,</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="23">
|
|
|
|
|
|
<code class="ruby"> :id => repository.last_build_id,</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="24">
|
|
|
|
|
|
<code class="ruby"> :number => repository.last_build_number,</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="25">
|
|
|
|
|
|
<code class="ruby"> :state => repository.last_build_state.to_s,</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="26">
|
|
|
|
|
|
<code class="ruby"> :duration => repository.last_build_duration,</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="27">
|
|
|
|
|
|
<code class="ruby"> :started_at => Renderer.format_date(repository.last_build_started_at),</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="28">
|
|
|
|
|
|
<code class="ruby"> :finished_at => Renderer.format_date(repository.last_build_finished_at),</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="29">
|
|
|
|
|
|
<code class="ruby"> }</code>
|
|
</li>
|
|
|
|
<li class="covered" data-hits="8" data-linenumber="30">
|
|
<span class="hits">8</span>
|
|
|
|
<code class="ruby"> }</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="31">
|
|
|
|
|
|
<code class="ruby"> end</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="32">
|
|
|
|
|
|
<code class="ruby"> end</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="33">
|
|
|
|
|
|
<code class="ruby">end</code>
|
|
</li>
|
|
|
|
</ol>
|
|
</pre>
|
|
</div>
|
|
|
|
<div class="source_table" id="74ddbe2707d65e192759c48049f9527b65ce82db">
|
|
<div class="header">
|
|
<h3>lib/travis/api/v3/result.rb</h3>
|
|
<h4><span class="green">93.75 %</span> covered</h4>
|
|
<div>
|
|
<b>16</b> relevant lines.
|
|
<span class="green"><b>15</b> lines covered</span> and
|
|
<span class="red"><b>1</b> lines missed.</span>
|
|
</div>
|
|
</div>
|
|
|
|
<pre>
|
|
<ol>
|
|
|
|
<li class="covered" data-hits="1" data-linenumber="1">
|
|
<span class="hits">1</span>
|
|
|
|
<code class="ruby">module Travis::API::V3</code>
|
|
</li>
|
|
|
|
<li class="covered" data-hits="1" data-linenumber="2">
|
|
<span class="hits">1</span>
|
|
|
|
<code class="ruby"> class Result</code>
|
|
</li>
|
|
|
|
<li class="covered" data-hits="1" data-linenumber="3">
|
|
<span class="hits">1</span>
|
|
|
|
<code class="ruby"> attr_accessor :type, :resource</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="4">
|
|
|
|
|
|
<code class="ruby"></code>
|
|
</li>
|
|
|
|
<li class="covered" data-hits="1" data-linenumber="5">
|
|
<span class="hits">1</span>
|
|
|
|
<code class="ruby"> def initialize(type, resource = [])</code>
|
|
</li>
|
|
|
|
<li class="covered" data-hits="22" data-linenumber="6">
|
|
<span class="hits">22</span>
|
|
|
|
<code class="ruby"> @type, @resource = type, resource</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="7">
|
|
|
|
|
|
<code class="ruby"> end</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="8">
|
|
|
|
|
|
<code class="ruby"></code>
|
|
</li>
|
|
|
|
<li class="covered" data-hits="1" data-linenumber="9">
|
|
<span class="hits">1</span>
|
|
|
|
<code class="ruby"> def respond_to_missing?(method, *)</code>
|
|
</li>
|
|
|
|
<li class="missed" data-hits="0" data-linenumber="10">
|
|
|
|
|
|
<code class="ruby"> super or method.to_sym == type.to_sym</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="11">
|
|
|
|
|
|
<code class="ruby"> end</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="12">
|
|
|
|
|
|
<code class="ruby"></code>
|
|
</li>
|
|
|
|
<li class="covered" data-hits="1" data-linenumber="13">
|
|
<span class="hits">1</span>
|
|
|
|
<code class="ruby"> def <<(value)</code>
|
|
</li>
|
|
|
|
<li class="covered" data-hits="1" data-linenumber="14">
|
|
<span class="hits">1</span>
|
|
|
|
<code class="ruby"> resource << value</code>
|
|
</li>
|
|
|
|
<li class="covered" data-hits="1" data-linenumber="15">
|
|
<span class="hits">1</span>
|
|
|
|
<code class="ruby"> self</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="16">
|
|
|
|
|
|
<code class="ruby"> end</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="17">
|
|
|
|
|
|
<code class="ruby"></code>
|
|
</li>
|
|
|
|
<li class="covered" data-hits="1" data-linenumber="18">
|
|
<span class="hits">1</span>
|
|
|
|
<code class="ruby"> def render</code>
|
|
</li>
|
|
|
|
<li class="covered" data-hits="18" data-linenumber="19">
|
|
<span class="hits">18</span>
|
|
|
|
<code class="ruby"> Renderer[type].render(resource)</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="20">
|
|
|
|
|
|
<code class="ruby"> end</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="21">
|
|
|
|
|
|
<code class="ruby"></code>
|
|
</li>
|
|
|
|
<li class="covered" data-hits="1" data-linenumber="22">
|
|
<span class="hits">1</span>
|
|
|
|
<code class="ruby"> def method_missing(method, *args)</code>
|
|
</li>
|
|
|
|
<li class="covered" data-hits="2" data-linenumber="23">
|
|
<span class="hits">2</span>
|
|
|
|
<code class="ruby"> return super unless method.to_sym == type.to_sym</code>
|
|
</li>
|
|
|
|
<li class="covered" data-hits="2" data-linenumber="24">
|
|
<span class="hits">2</span>
|
|
|
|
<code class="ruby"> raise ArgumentError, 'wrong number of arguments (1 for 0)'.freeze if args.any?</code>
|
|
</li>
|
|
|
|
<li class="covered" data-hits="2" data-linenumber="25">
|
|
<span class="hits">2</span>
|
|
|
|
<code class="ruby"> resource</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="26">
|
|
|
|
|
|
<code class="ruby"> end</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="27">
|
|
|
|
|
|
<code class="ruby"> end</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="28">
|
|
|
|
|
|
<code class="ruby">end</code>
|
|
</li>
|
|
|
|
</ol>
|
|
</pre>
|
|
</div>
|
|
|
|
<div class="source_table" id="31c7c96fc03fbcc205b874d99b9af9102c3400d7">
|
|
<div class="header">
|
|
<h3>lib/travis/api/v3/router.rb</h3>
|
|
<h4><span class="green">90.32 %</span> covered</h4>
|
|
<div>
|
|
<b>31</b> relevant lines.
|
|
<span class="green"><b>28</b> lines covered</span> and
|
|
<span class="red"><b>3</b> lines missed.</span>
|
|
</div>
|
|
</div>
|
|
|
|
<pre>
|
|
<ol>
|
|
|
|
<li class="covered" data-hits="1" data-linenumber="1">
|
|
<span class="hits">1</span>
|
|
|
|
<code class="ruby">module Travis::API::V3</code>
|
|
</li>
|
|
|
|
<li class="covered" data-hits="1" data-linenumber="2">
|
|
<span class="hits">1</span>
|
|
|
|
<code class="ruby"> class Router</code>
|
|
</li>
|
|
|
|
<li class="covered" data-hits="1" data-linenumber="3">
|
|
<span class="hits">1</span>
|
|
|
|
<code class="ruby"> include Travis::API::V3</code>
|
|
</li>
|
|
|
|
<li class="covered" data-hits="1" data-linenumber="4">
|
|
<span class="hits">1</span>
|
|
|
|
<code class="ruby"> attr_accessor :routes</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="5">
|
|
|
|
|
|
<code class="ruby"></code>
|
|
</li>
|
|
|
|
<li class="covered" data-hits="1" data-linenumber="6">
|
|
<span class="hits">1</span>
|
|
|
|
<code class="ruby"> def initialize(routes = Routes)</code>
|
|
</li>
|
|
|
|
<li class="covered" data-hits="27" data-linenumber="7">
|
|
<span class="hits">27</span>
|
|
|
|
<code class="ruby"> @routes = routes</code>
|
|
</li>
|
|
|
|
<li class="covered" data-hits="27" data-linenumber="8">
|
|
<span class="hits">27</span>
|
|
|
|
<code class="ruby"> routes.draw_routes</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="9">
|
|
|
|
|
|
<code class="ruby"> end</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="10">
|
|
|
|
|
|
<code class="ruby"></code>
|
|
</li>
|
|
|
|
<li class="covered" data-hits="1" data-linenumber="11">
|
|
<span class="hits">1</span>
|
|
|
|
<code class="ruby"> def call(env)</code>
|
|
</li>
|
|
|
|
<li class="covered" data-hits="23" data-linenumber="12">
|
|
<span class="hits">23</span>
|
|
|
|
<code class="ruby"> return service_index(env) if env['PATH_INFO'.freeze] == ?/.freeze</code>
|
|
</li>
|
|
|
|
<li class="covered" data-hits="18" data-linenumber="13">
|
|
<span class="hits">18</span>
|
|
|
|
<code class="ruby"> access_control = AccessControl.new(env)</code>
|
|
</li>
|
|
|
|
<li class="covered" data-hits="18" data-linenumber="14">
|
|
<span class="hits">18</span>
|
|
|
|
<code class="ruby"> factory, params = routes.factory_for(env['REQUEST_METHOD'.freeze], env['PATH_INFO'.freeze])</code>
|
|
</li>
|
|
|
|
<li class="covered" data-hits="18" data-linenumber="15">
|
|
<span class="hits">18</span>
|
|
|
|
<code class="ruby"> env_params = params(env)</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="16">
|
|
|
|
|
|
<code class="ruby"></code>
|
|
</li>
|
|
|
|
<li class="covered" data-hits="18" data-linenumber="17">
|
|
<span class="hits">18</span>
|
|
|
|
<code class="ruby"> raise NotFound unless factory</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="18">
|
|
|
|
|
|
<code class="ruby"></code>
|
|
</li>
|
|
|
|
<li class="covered" data-hits="18" data-linenumber="19">
|
|
<span class="hits">18</span>
|
|
|
|
<code class="ruby"> service = factory.new(access_control, env_params.merge(params))</code>
|
|
</li>
|
|
|
|
<li class="covered" data-hits="18" data-linenumber="20">
|
|
<span class="hits">18</span>
|
|
|
|
<code class="ruby"> result = service.run</code>
|
|
</li>
|
|
|
|
<li class="covered" data-hits="8" data-linenumber="21">
|
|
<span class="hits">8</span>
|
|
|
|
<code class="ruby"> render(result, env_params)</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="22">
|
|
|
|
|
|
<code class="ruby"> rescue Error => error</code>
|
|
</li>
|
|
|
|
<li class="covered" data-hits="10" data-linenumber="23">
|
|
<span class="hits">10</span>
|
|
|
|
<code class="ruby"> result = Result.new(:error, error)</code>
|
|
</li>
|
|
|
|
<li class="covered" data-hits="10" data-linenumber="24">
|
|
<span class="hits">10</span>
|
|
|
|
<code class="ruby"> V3.response(result.render, 'X-Cascade'.freeze => 'pass'.freeze, status: error.status)</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="25">
|
|
|
|
|
|
<code class="ruby"> end</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="26">
|
|
|
|
|
|
<code class="ruby"></code>
|
|
</li>
|
|
|
|
<li class="covered" data-hits="1" data-linenumber="27">
|
|
<span class="hits">1</span>
|
|
|
|
<code class="ruby"> def render(result, env_params)</code>
|
|
</li>
|
|
|
|
<li class="covered" data-hits="8" data-linenumber="28">
|
|
<span class="hits">8</span>
|
|
|
|
<code class="ruby"> V3.response(result.render)</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="29">
|
|
|
|
|
|
<code class="ruby"> end</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="30">
|
|
|
|
|
|
<code class="ruby"></code>
|
|
</li>
|
|
|
|
<li class="covered" data-hits="1" data-linenumber="31">
|
|
<span class="hits">1</span>
|
|
|
|
<code class="ruby"> def service_index(env)</code>
|
|
</li>
|
|
|
|
<li class="covered" data-hits="5" data-linenumber="32">
|
|
<span class="hits">5</span>
|
|
|
|
<code class="ruby"> ServiceIndex.for(env, routes).render(env)</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="33">
|
|
|
|
|
|
<code class="ruby"> end</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="34">
|
|
|
|
|
|
<code class="ruby"></code>
|
|
</li>
|
|
|
|
<li class="covered" data-hits="1" data-linenumber="35">
|
|
<span class="hits">1</span>
|
|
|
|
<code class="ruby"> def params(env)</code>
|
|
</li>
|
|
|
|
<li class="covered" data-hits="18" data-linenumber="36">
|
|
<span class="hits">18</span>
|
|
|
|
<code class="ruby"> request = Rack::Request.new(env)</code>
|
|
</li>
|
|
|
|
<li class="covered" data-hits="18" data-linenumber="37">
|
|
<span class="hits">18</span>
|
|
|
|
<code class="ruby"> params = request.params</code>
|
|
</li>
|
|
|
|
<li class="covered" data-hits="18" data-linenumber="38">
|
|
<span class="hits">18</span>
|
|
|
|
<code class="ruby"> media_type = request.media_type</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="39">
|
|
|
|
|
|
<code class="ruby"></code>
|
|
</li>
|
|
|
|
<li class="covered" data-hits="18" data-linenumber="40">
|
|
<span class="hits">18</span>
|
|
|
|
<code class="ruby"> if media_type == 'application/json'.freeze or media_type == 'text/json'.freeze</code>
|
|
</li>
|
|
|
|
<li class="missed" data-hits="0" data-linenumber="41">
|
|
|
|
|
|
<code class="ruby"> request.body.rewind</code>
|
|
</li>
|
|
|
|
<li class="missed" data-hits="0" data-linenumber="42">
|
|
|
|
|
|
<code class="ruby"> json_params = env['travis.input.json'.freeze] ||= JSON.load(request.body)</code>
|
|
</li>
|
|
|
|
<li class="missed" data-hits="0" data-linenumber="43">
|
|
|
|
|
|
<code class="ruby"> params.merge! json_params if json_params.is_a? Hash</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="44">
|
|
|
|
|
|
<code class="ruby"> end</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="45">
|
|
|
|
|
|
<code class="ruby"></code>
|
|
</li>
|
|
|
|
<li class="covered" data-hits="18" data-linenumber="46">
|
|
<span class="hits">18</span>
|
|
|
|
<code class="ruby"> params</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="47">
|
|
|
|
|
|
<code class="ruby"> end</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="48">
|
|
|
|
|
|
<code class="ruby"> end</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="49">
|
|
|
|
|
|
<code class="ruby">end</code>
|
|
</li>
|
|
|
|
</ol>
|
|
</pre>
|
|
</div>
|
|
|
|
<div class="source_table" id="0e450b71a9d314b9765473a9783eafbc6ad24b88">
|
|
<div class="header">
|
|
<h3>lib/travis/api/v3/routes.rb</h3>
|
|
<h4><span class="green">100.0 %</span> covered</h4>
|
|
<div>
|
|
<b>7</b> relevant lines.
|
|
<span class="green"><b>7</b> lines covered</span> and
|
|
<span class="red"><b>0</b> lines missed.</span>
|
|
</div>
|
|
</div>
|
|
|
|
<pre>
|
|
<ol>
|
|
|
|
<li class="covered" data-hits="1" data-linenumber="1">
|
|
<span class="hits">1</span>
|
|
|
|
<code class="ruby">module Travis::API::V3</code>
|
|
</li>
|
|
|
|
<li class="covered" data-hits="1" data-linenumber="2">
|
|
<span class="hits">1</span>
|
|
|
|
<code class="ruby"> module Routes</code>
|
|
</li>
|
|
|
|
<li class="covered" data-hits="1" data-linenumber="3">
|
|
<span class="hits">1</span>
|
|
|
|
<code class="ruby"> require 'travis/api/v3/routes/dsl'</code>
|
|
</li>
|
|
|
|
<li class="covered" data-hits="1" data-linenumber="4">
|
|
<span class="hits">1</span>
|
|
|
|
<code class="ruby"> extend DSL</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="5">
|
|
|
|
|
|
<code class="ruby"></code>
|
|
</li>
|
|
|
|
<li class="covered" data-hits="1" data-linenumber="6">
|
|
<span class="hits">1</span>
|
|
|
|
<code class="ruby"> resource :repository do</code>
|
|
</li>
|
|
|
|
<li class="covered" data-hits="1" data-linenumber="7">
|
|
<span class="hits">1</span>
|
|
|
|
<code class="ruby"> route '/repo/:id'</code>
|
|
</li>
|
|
|
|
<li class="covered" data-hits="1" data-linenumber="8">
|
|
<span class="hits">1</span>
|
|
|
|
<code class="ruby"> get :find_repository</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="9">
|
|
|
|
|
|
<code class="ruby"> end</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="10">
|
|
|
|
|
|
<code class="ruby"> end</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="11">
|
|
|
|
|
|
<code class="ruby">end</code>
|
|
</li>
|
|
|
|
</ol>
|
|
</pre>
|
|
</div>
|
|
|
|
<div class="source_table" id="2e298b60191a32090a5982c87b6a53c75d24cb8c">
|
|
<div class="header">
|
|
<h3>lib/travis/api/v3/routes/dsl.rb</h3>
|
|
<h4><span class="green">97.22 %</span> covered</h4>
|
|
<div>
|
|
<b>36</b> relevant lines.
|
|
<span class="green"><b>35</b> lines covered</span> and
|
|
<span class="red"><b>1</b> lines missed.</span>
|
|
</div>
|
|
</div>
|
|
|
|
<pre>
|
|
<ol>
|
|
|
|
<li class="covered" data-hits="1" data-linenumber="1">
|
|
<span class="hits">1</span>
|
|
|
|
<code class="ruby">require 'travis/api/v3/routes/resource'</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="2">
|
|
|
|
|
|
<code class="ruby"></code>
|
|
</li>
|
|
|
|
<li class="covered" data-hits="1" data-linenumber="3">
|
|
<span class="hits">1</span>
|
|
|
|
<code class="ruby">module Travis::API::V3</code>
|
|
</li>
|
|
|
|
<li class="covered" data-hits="1" data-linenumber="4">
|
|
<span class="hits">1</span>
|
|
|
|
<code class="ruby"> module Routes::DSL</code>
|
|
</li>
|
|
|
|
<li class="covered" data-hits="1" data-linenumber="5">
|
|
<span class="hits">1</span>
|
|
|
|
<code class="ruby"> def routes</code>
|
|
</li>
|
|
|
|
<li class="covered" data-hits="126" data-linenumber="6">
|
|
<span class="hits">126</span>
|
|
|
|
<code class="ruby"> @routes ||= {}</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="7">
|
|
|
|
|
|
<code class="ruby"> end</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="8">
|
|
|
|
|
|
<code class="ruby"></code>
|
|
</li>
|
|
|
|
<li class="covered" data-hits="1" data-linenumber="9">
|
|
<span class="hits">1</span>
|
|
|
|
<code class="ruby"> def resources</code>
|
|
</li>
|
|
|
|
<li class="covered" data-hits="32" data-linenumber="10">
|
|
<span class="hits">32</span>
|
|
|
|
<code class="ruby"> @resources ||= []</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="11">
|
|
|
|
|
|
<code class="ruby"> end</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="12">
|
|
|
|
|
|
<code class="ruby"></code>
|
|
</li>
|
|
|
|
<li class="covered" data-hits="1" data-linenumber="13">
|
|
<span class="hits">1</span>
|
|
|
|
<code class="ruby"> def current_resource</code>
|
|
</li>
|
|
|
|
<li class="covered" data-hits="3" data-linenumber="14">
|
|
<span class="hits">3</span>
|
|
|
|
<code class="ruby"> @current_resource ||= nil</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="15">
|
|
|
|
|
|
<code class="ruby"> end</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="16">
|
|
|
|
|
|
<code class="ruby"></code>
|
|
</li>
|
|
|
|
<li class="covered" data-hits="1" data-linenumber="17">
|
|
<span class="hits">1</span>
|
|
|
|
<code class="ruby"> def resource(type, &block)</code>
|
|
</li>
|
|
|
|
<li class="covered" data-hits="1" data-linenumber="18">
|
|
<span class="hits">1</span>
|
|
|
|
<code class="ruby"> resource = Routes::Resource.new(type)</code>
|
|
</li>
|
|
|
|
<li class="covered" data-hits="1" data-linenumber="19">
|
|
<span class="hits">1</span>
|
|
|
|
<code class="ruby"> with_resource(resource, &block)</code>
|
|
</li>
|
|
|
|
<li class="covered" data-hits="1" data-linenumber="20">
|
|
<span class="hits">1</span>
|
|
|
|
<code class="ruby"> resources << resource</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="21">
|
|
|
|
|
|
<code class="ruby"> end</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="22">
|
|
|
|
|
|
<code class="ruby"></code>
|
|
</li>
|
|
|
|
<li class="covered" data-hits="1" data-linenumber="23">
|
|
<span class="hits">1</span>
|
|
|
|
<code class="ruby"> def with_resource(resource)</code>
|
|
</li>
|
|
|
|
<li class="covered" data-hits="1" data-linenumber="24">
|
|
<span class="hits">1</span>
|
|
|
|
<code class="ruby"> resource_was, @current_resource = current_resource, resource</code>
|
|
</li>
|
|
|
|
<li class="covered" data-hits="1" data-linenumber="25">
|
|
<span class="hits">1</span>
|
|
|
|
<code class="ruby"> yield</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="26">
|
|
|
|
|
|
<code class="ruby"> ensure</code>
|
|
</li>
|
|
|
|
<li class="covered" data-hits="1" data-linenumber="27">
|
|
<span class="hits">1</span>
|
|
|
|
<code class="ruby"> @current_resource = resource_was</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="28">
|
|
|
|
|
|
<code class="ruby"> end</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="29">
|
|
|
|
|
|
<code class="ruby"></code>
|
|
</li>
|
|
|
|
<li class="covered" data-hits="1" data-linenumber="30">
|
|
<span class="hits">1</span>
|
|
|
|
<code class="ruby"> def route(value)</code>
|
|
</li>
|
|
|
|
<li class="covered" data-hits="1" data-linenumber="31">
|
|
<span class="hits">1</span>
|
|
|
|
<code class="ruby"> current_resource.route = value</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="32">
|
|
|
|
|
|
<code class="ruby"> end</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="33">
|
|
|
|
|
|
<code class="ruby"></code>
|
|
</li>
|
|
|
|
<li class="covered" data-hits="1" data-linenumber="34">
|
|
<span class="hits">1</span>
|
|
|
|
<code class="ruby"> def get(*args)</code>
|
|
</li>
|
|
|
|
<li class="covered" data-hits="1" data-linenumber="35">
|
|
<span class="hits">1</span>
|
|
|
|
<code class="ruby"> current_resource.add_service('GET'.freeze, *args)</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="36">
|
|
|
|
|
|
<code class="ruby"> end</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="37">
|
|
|
|
|
|
<code class="ruby"></code>
|
|
</li>
|
|
|
|
<li class="covered" data-hits="1" data-linenumber="38">
|
|
<span class="hits">1</span>
|
|
|
|
<code class="ruby"> def post(*args)</code>
|
|
</li>
|
|
|
|
<li class="missed" data-hits="0" data-linenumber="39">
|
|
|
|
|
|
<code class="ruby"> current_resource.add_service('POST'.freeze, *args)</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="40">
|
|
|
|
|
|
<code class="ruby"> end</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="41">
|
|
|
|
|
|
<code class="ruby"></code>
|
|
</li>
|
|
|
|
<li class="covered" data-hits="1" data-linenumber="42">
|
|
<span class="hits">1</span>
|
|
|
|
<code class="ruby"> def draw_routes</code>
|
|
</li>
|
|
|
|
<li class="covered" data-hits="27" data-linenumber="43">
|
|
<span class="hits">27</span>
|
|
|
|
<code class="ruby"> resources.each do |resource|</code>
|
|
</li>
|
|
|
|
<li class="covered" data-hits="27" data-linenumber="44">
|
|
<span class="hits">27</span>
|
|
|
|
<code class="ruby"> prefix = resource.route</code>
|
|
</li>
|
|
|
|
<li class="covered" data-hits="27" data-linenumber="45">
|
|
<span class="hits">27</span>
|
|
|
|
<code class="ruby"> resource.services.each do |(request_method, sub_route), service|</code>
|
|
</li>
|
|
|
|
<li class="covered" data-hits="27" data-linenumber="46">
|
|
<span class="hits">27</span>
|
|
|
|
<code class="ruby"> route = sub_route ? prefix + sub_route : prefix</code>
|
|
</li>
|
|
|
|
<li class="covered" data-hits="27" data-linenumber="47">
|
|
<span class="hits">27</span>
|
|
|
|
<code class="ruby"> routes[route] ||= {}</code>
|
|
</li>
|
|
|
|
<li class="covered" data-hits="27" data-linenumber="48">
|
|
<span class="hits">27</span>
|
|
|
|
<code class="ruby"> routes[route][request_method] = Services[service]</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="49">
|
|
|
|
|
|
<code class="ruby"> end</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="50">
|
|
|
|
|
|
<code class="ruby"> end</code>
|
|
</li>
|
|
|
|
<li class="covered" data-hits="27" data-linenumber="51">
|
|
<span class="hits">27</span>
|
|
|
|
<code class="ruby"> self.routes.replace(routes)</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="52">
|
|
|
|
|
|
<code class="ruby"> end</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="53">
|
|
|
|
|
|
<code class="ruby"></code>
|
|
</li>
|
|
|
|
<li class="covered" data-hits="1" data-linenumber="54">
|
|
<span class="hits">1</span>
|
|
|
|
<code class="ruby"> def factory_for(request_method, path)</code>
|
|
</li>
|
|
|
|
<li class="covered" data-hits="18" data-linenumber="55">
|
|
<span class="hits">18</span>
|
|
|
|
<code class="ruby"> routes.each do |route, method_map|</code>
|
|
</li>
|
|
|
|
<li class="covered" data-hits="18" data-linenumber="56">
|
|
<span class="hits">18</span>
|
|
|
|
<code class="ruby"> next unless params = route.params(path)</code>
|
|
</li>
|
|
|
|
<li class="covered" data-hits="18" data-linenumber="57">
|
|
<span class="hits">18</span>
|
|
|
|
<code class="ruby"> raise MethodNotAllowed unless factory = method_map[request_method]</code>
|
|
</li>
|
|
|
|
<li class="covered" data-hits="18" data-linenumber="58">
|
|
<span class="hits">18</span>
|
|
|
|
<code class="ruby"> return [factory, params]</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="59">
|
|
|
|
|
|
<code class="ruby"> end</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="60">
|
|
|
|
|
|
<code class="ruby"> nil # nothing matched</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="61">
|
|
|
|
|
|
<code class="ruby"> end</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="62">
|
|
|
|
|
|
<code class="ruby"> end</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="63">
|
|
|
|
|
|
<code class="ruby">end</code>
|
|
</li>
|
|
|
|
</ol>
|
|
</pre>
|
|
</div>
|
|
|
|
<div class="source_table" id="f17bf0ade034477bfdb62ad253c6d587b77e5214">
|
|
<div class="header">
|
|
<h3>lib/travis/api/v3/routes/resource.rb</h3>
|
|
<h4><span class="green">100.0 %</span> covered</h4>
|
|
<div>
|
|
<b>12</b> relevant lines.
|
|
<span class="green"><b>12</b> lines covered</span> and
|
|
<span class="red"><b>0</b> lines missed.</span>
|
|
</div>
|
|
</div>
|
|
|
|
<pre>
|
|
<ol>
|
|
|
|
<li class="covered" data-hits="1" data-linenumber="1">
|
|
<span class="hits">1</span>
|
|
|
|
<code class="ruby">require 'mustermann'</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="2">
|
|
|
|
|
|
<code class="ruby"></code>
|
|
</li>
|
|
|
|
<li class="covered" data-hits="1" data-linenumber="3">
|
|
<span class="hits">1</span>
|
|
|
|
<code class="ruby">module Travis::API::V3</code>
|
|
</li>
|
|
|
|
<li class="covered" data-hits="1" data-linenumber="4">
|
|
<span class="hits">1</span>
|
|
|
|
<code class="ruby"> class Routes::Resource</code>
|
|
</li>
|
|
|
|
<li class="covered" data-hits="1" data-linenumber="5">
|
|
<span class="hits">1</span>
|
|
|
|
<code class="ruby"> attr_accessor :identifier, :route, :services</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="6">
|
|
|
|
|
|
<code class="ruby"></code>
|
|
</li>
|
|
|
|
<li class="covered" data-hits="1" data-linenumber="7">
|
|
<span class="hits">1</span>
|
|
|
|
<code class="ruby"> def initialize(identifier)</code>
|
|
</li>
|
|
|
|
<li class="covered" data-hits="1" data-linenumber="8">
|
|
<span class="hits">1</span>
|
|
|
|
<code class="ruby"> @identifier = identifier</code>
|
|
</li>
|
|
|
|
<li class="covered" data-hits="1" data-linenumber="9">
|
|
<span class="hits">1</span>
|
|
|
|
<code class="ruby"> @services = {}</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="10">
|
|
|
|
|
|
<code class="ruby"> end</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="11">
|
|
|
|
|
|
<code class="ruby"></code>
|
|
</li>
|
|
|
|
<li class="covered" data-hits="1" data-linenumber="12">
|
|
<span class="hits">1</span>
|
|
|
|
<code class="ruby"> def add_service(request_method, service, sub_route = nil)</code>
|
|
</li>
|
|
|
|
<li class="covered" data-hits="1" data-linenumber="13">
|
|
<span class="hits">1</span>
|
|
|
|
<code class="ruby"> sub_route &&= Mustermann.new(sub_route)</code>
|
|
</li>
|
|
|
|
<li class="covered" data-hits="1" data-linenumber="14">
|
|
<span class="hits">1</span>
|
|
|
|
<code class="ruby"> services[[request_method, sub_route]] = service</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="15">
|
|
|
|
|
|
<code class="ruby"> end</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="16">
|
|
|
|
|
|
<code class="ruby"></code>
|
|
</li>
|
|
|
|
<li class="covered" data-hits="1" data-linenumber="17">
|
|
<span class="hits">1</span>
|
|
|
|
<code class="ruby"> def route=(value)</code>
|
|
</li>
|
|
|
|
<li class="covered" data-hits="1" data-linenumber="18">
|
|
<span class="hits">1</span>
|
|
|
|
<code class="ruby"> @route = value ? Mustermann.new(value) : value</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="19">
|
|
|
|
|
|
<code class="ruby"> end</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="20">
|
|
|
|
|
|
<code class="ruby"> end</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="21">
|
|
|
|
|
|
<code class="ruby">end</code>
|
|
</li>
|
|
|
|
</ol>
|
|
</pre>
|
|
</div>
|
|
|
|
<div class="source_table" id="847a0c89fe4c592228989215bbeb1143051d97b6">
|
|
<div class="header">
|
|
<h3>lib/travis/api/v3/service.rb</h3>
|
|
<h4><span class="yellow">85.0 %</span> covered</h4>
|
|
<div>
|
|
<b>20</b> relevant lines.
|
|
<span class="green"><b>17</b> lines covered</span> and
|
|
<span class="red"><b>3</b> lines missed.</span>
|
|
</div>
|
|
</div>
|
|
|
|
<pre>
|
|
<ol>
|
|
|
|
<li class="covered" data-hits="1" data-linenumber="1">
|
|
<span class="hits">1</span>
|
|
|
|
<code class="ruby">module Travis::API::V3</code>
|
|
</li>
|
|
|
|
<li class="covered" data-hits="1" data-linenumber="2">
|
|
<span class="hits">1</span>
|
|
|
|
<code class="ruby"> class Service</code>
|
|
</li>
|
|
|
|
<li class="covered" data-hits="1" data-linenumber="3">
|
|
<span class="hits">1</span>
|
|
|
|
<code class="ruby"> def self.required_params</code>
|
|
</li>
|
|
|
|
<li class="missed" data-hits="0" data-linenumber="4">
|
|
|
|
|
|
<code class="ruby"> @required_params ||= []</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="5">
|
|
|
|
|
|
<code class="ruby"> end</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="6">
|
|
|
|
|
|
<code class="ruby"></code>
|
|
</li>
|
|
|
|
<li class="covered" data-hits="1" data-linenumber="7">
|
|
<span class="hits">1</span>
|
|
|
|
<code class="ruby"> def self.params(*list, optional: false)</code>
|
|
</li>
|
|
|
|
<li class="covered" data-hits="1" data-linenumber="8">
|
|
<span class="hits">1</span>
|
|
|
|
<code class="ruby"> @params ||= []</code>
|
|
</li>
|
|
|
|
<li class="covered" data-hits="1" data-linenumber="9">
|
|
<span class="hits">1</span>
|
|
|
|
<code class="ruby"> list.each do |param|</code>
|
|
</li>
|
|
|
|
<li class="covered" data-hits="3" data-linenumber="10">
|
|
<span class="hits">3</span>
|
|
|
|
<code class="ruby"> param = param.to_s</code>
|
|
</li>
|
|
|
|
<li class="covered" data-hits="39" data-linenumber="11">
|
|
<span class="hits">39</span>
|
|
|
|
<code class="ruby"> define_method(param) { params[param] }</code>
|
|
</li>
|
|
|
|
<li class="covered" data-hits="3" data-linenumber="12">
|
|
<span class="hits">3</span>
|
|
|
|
<code class="ruby"> required_params << param unless optional</code>
|
|
</li>
|
|
|
|
<li class="covered" data-hits="3" data-linenumber="13">
|
|
<span class="hits">3</span>
|
|
|
|
<code class="ruby"> @params << param</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="14">
|
|
|
|
|
|
<code class="ruby"> end</code>
|
|
</li>
|
|
|
|
<li class="covered" data-hits="1" data-linenumber="15">
|
|
<span class="hits">1</span>
|
|
|
|
<code class="ruby"> @params</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="16">
|
|
|
|
|
|
<code class="ruby"> end</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="17">
|
|
|
|
|
|
<code class="ruby"></code>
|
|
</li>
|
|
|
|
<li class="covered" data-hits="1" data-linenumber="18">
|
|
<span class="hits">1</span>
|
|
|
|
<code class="ruby"> attr_accessor :access_control, :params</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="19">
|
|
|
|
|
|
<code class="ruby"></code>
|
|
</li>
|
|
|
|
<li class="covered" data-hits="1" data-linenumber="20">
|
|
<span class="hits">1</span>
|
|
|
|
<code class="ruby"> def initialize(access_control, params)</code>
|
|
</li>
|
|
|
|
<li class="covered" data-hits="18" data-linenumber="21">
|
|
<span class="hits">18</span>
|
|
|
|
<code class="ruby"> @access_control = access_control</code>
|
|
</li>
|
|
|
|
<li class="covered" data-hits="18" data-linenumber="22">
|
|
<span class="hits">18</span>
|
|
|
|
<code class="ruby"> @params = params</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="23">
|
|
|
|
|
|
<code class="ruby"> end</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="24">
|
|
|
|
|
|
<code class="ruby"></code>
|
|
</li>
|
|
|
|
<li class="covered" data-hits="1" data-linenumber="25">
|
|
<span class="hits">1</span>
|
|
|
|
<code class="ruby"> def required_params?</code>
|
|
</li>
|
|
|
|
<li class="missed" data-hits="0" data-linenumber="26">
|
|
|
|
|
|
<code class="ruby"> required_params.all? { |param| params.include? param }</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="27">
|
|
|
|
|
|
<code class="ruby"> end</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="28">
|
|
|
|
|
|
<code class="ruby"></code>
|
|
</li>
|
|
|
|
<li class="covered" data-hits="1" data-linenumber="29">
|
|
<span class="hits">1</span>
|
|
|
|
<code class="ruby"> def required_params</code>
|
|
</li>
|
|
|
|
<li class="missed" data-hits="0" data-linenumber="30">
|
|
|
|
|
|
<code class="ruby"> self.class.required_params</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="31">
|
|
|
|
|
|
<code class="ruby"> end</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="32">
|
|
|
|
|
|
<code class="ruby"> end</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="33">
|
|
|
|
|
|
<code class="ruby">end</code>
|
|
</li>
|
|
|
|
</ol>
|
|
</pre>
|
|
</div>
|
|
|
|
<div class="source_table" id="63648861eabe7693b10dd0f87b899dfb0a4ff38f">
|
|
<div class="header">
|
|
<h3>lib/travis/api/v3/service_index.rb</h3>
|
|
<h4><span class="green">91.53 %</span> covered</h4>
|
|
<div>
|
|
<b>59</b> relevant lines.
|
|
<span class="green"><b>54</b> lines covered</span> and
|
|
<span class="red"><b>5</b> lines missed.</span>
|
|
</div>
|
|
</div>
|
|
|
|
<pre>
|
|
<ol>
|
|
|
|
<li class="covered" data-hits="1" data-linenumber="1">
|
|
<span class="hits">1</span>
|
|
|
|
<code class="ruby">module Travis::API::V3</code>
|
|
</li>
|
|
|
|
<li class="covered" data-hits="1" data-linenumber="2">
|
|
<span class="hits">1</span>
|
|
|
|
<code class="ruby"> class ServiceIndex</code>
|
|
</li>
|
|
|
|
<li class="covered" data-hits="1" data-linenumber="3">
|
|
<span class="hits">1</span>
|
|
|
|
<code class="ruby"> ALLOW_POST = ['application/json', 'application/x-www-form-urlencoded', 'multipart/form-data']</code>
|
|
</li>
|
|
|
|
<li class="covered" data-hits="1" data-linenumber="4">
|
|
<span class="hits">1</span>
|
|
|
|
<code class="ruby"> @index_cache = {}</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="5">
|
|
|
|
|
|
<code class="ruby"></code>
|
|
</li>
|
|
|
|
<li class="covered" data-hits="1" data-linenumber="6">
|
|
<span class="hits">1</span>
|
|
|
|
<code class="ruby"> def self.for(env, routes)</code>
|
|
</li>
|
|
|
|
<li class="covered" data-hits="5" data-linenumber="7">
|
|
<span class="hits">5</span>
|
|
|
|
<code class="ruby"> access_factory = AccessControl.new(env).class</code>
|
|
</li>
|
|
|
|
<li class="covered" data-hits="5" data-linenumber="8">
|
|
<span class="hits">5</span>
|
|
|
|
<code class="ruby"> prefix = env['SCRIPT_NAME'.freeze]</code>
|
|
</li>
|
|
|
|
<li class="covered" data-hits="5" data-linenumber="9">
|
|
<span class="hits">5</span>
|
|
|
|
<code class="ruby"> @index_cache[[access_factory, routes, prefix]] ||= new(access_factory, routes, prefix)</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="10">
|
|
|
|
|
|
<code class="ruby"> end</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="11">
|
|
|
|
|
|
<code class="ruby"></code>
|
|
</li>
|
|
|
|
<li class="covered" data-hits="1" data-linenumber="12">
|
|
<span class="hits">1</span>
|
|
|
|
<code class="ruby"> attr_reader :access_factory, :routes, :json_home_response, :json_response, :prefix</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="13">
|
|
|
|
|
|
<code class="ruby"></code>
|
|
</li>
|
|
|
|
<li class="covered" data-hits="1" data-linenumber="14">
|
|
<span class="hits">1</span>
|
|
|
|
<code class="ruby"> def initialize(access_factory, routes, prefix)</code>
|
|
</li>
|
|
|
|
<li class="covered" data-hits="2" data-linenumber="15">
|
|
<span class="hits">2</span>
|
|
|
|
<code class="ruby"> @prefix = prefix || ''</code>
|
|
</li>
|
|
|
|
<li class="covered" data-hits="2" data-linenumber="16">
|
|
<span class="hits">2</span>
|
|
|
|
<code class="ruby"> @access_factory, @routes = access_factory, routes</code>
|
|
</li>
|
|
|
|
<li class="covered" data-hits="2" data-linenumber="17">
|
|
<span class="hits">2</span>
|
|
|
|
<code class="ruby"> @json_response = V3.response(render_json, content_type: 'application/json'.freeze)</code>
|
|
</li>
|
|
|
|
<li class="covered" data-hits="2" data-linenumber="18">
|
|
<span class="hits">2</span>
|
|
|
|
<code class="ruby"> @json_home_response = V3.response(render_json_home, content_type: 'application/json-home'.freeze)</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="19">
|
|
|
|
|
|
<code class="ruby"> end</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="20">
|
|
|
|
|
|
<code class="ruby"></code>
|
|
</li>
|
|
|
|
<li class="covered" data-hits="1" data-linenumber="21">
|
|
<span class="hits">1</span>
|
|
|
|
<code class="ruby"> def render(env)</code>
|
|
</li>
|
|
|
|
<li class="covered" data-hits="5" data-linenumber="22">
|
|
<span class="hits">5</span>
|
|
|
|
<code class="ruby"> json_home?(env) ? json_home_response : json_response</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="23">
|
|
|
|
|
|
<code class="ruby"> end</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="24">
|
|
|
|
|
|
<code class="ruby"></code>
|
|
</li>
|
|
|
|
<li class="covered" data-hits="1" data-linenumber="25">
|
|
<span class="hits">1</span>
|
|
|
|
<code class="ruby"> def render_json</code>
|
|
</li>
|
|
|
|
<li class="covered" data-hits="2" data-linenumber="26">
|
|
<span class="hits">2</span>
|
|
|
|
<code class="ruby"> resources = { }</code>
|
|
</li>
|
|
|
|
<li class="covered" data-hits="2" data-linenumber="27">
|
|
<span class="hits">2</span>
|
|
|
|
<code class="ruby"> routes.resources.each do |resource|</code>
|
|
</li>
|
|
|
|
<li class="covered" data-hits="2" data-linenumber="28">
|
|
<span class="hits">2</span>
|
|
|
|
<code class="ruby"> resources[resource.identifier] ||= {}</code>
|
|
</li>
|
|
|
|
<li class="covered" data-hits="2" data-linenumber="29">
|
|
<span class="hits">2</span>
|
|
|
|
<code class="ruby"> resource.services.each do |(request_method, sub_route), service|</code>
|
|
</li>
|
|
|
|
<li class="covered" data-hits="2" data-linenumber="30">
|
|
<span class="hits">2</span>
|
|
|
|
<code class="ruby"> service &&= service.to_s.sub(/_#{resource.identifier}$/, ''.freeze)</code>
|
|
</li>
|
|
|
|
<li class="covered" data-hits="2" data-linenumber="31">
|
|
<span class="hits">2</span>
|
|
|
|
<code class="ruby"> list = resources[resource.identifier][service] ||= []</code>
|
|
</li>
|
|
|
|
<li class="covered" data-hits="2" data-linenumber="32">
|
|
<span class="hits">2</span>
|
|
|
|
<code class="ruby"> pattern = sub_route ? resource.route + sub_route : resource.route</code>
|
|
</li>
|
|
|
|
<li class="covered" data-hits="2" data-linenumber="33">
|
|
<span class="hits">2</span>
|
|
|
|
<code class="ruby"> pattern.to_templates.each do |template|</code>
|
|
</li>
|
|
|
|
<li class="covered" data-hits="2" data-linenumber="34">
|
|
<span class="hits">2</span>
|
|
|
|
<code class="ruby"> list << { 'request-method'.freeze => request_method, 'uri-template'.freeze => prefix + template }</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="35">
|
|
|
|
|
|
<code class="ruby"> end</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="36">
|
|
|
|
|
|
<code class="ruby"> end</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="37">
|
|
|
|
|
|
<code class="ruby"> end</code>
|
|
</li>
|
|
|
|
<li class="covered" data-hits="2" data-linenumber="38">
|
|
<span class="hits">2</span>
|
|
|
|
<code class="ruby"> { resources: resources }</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="39">
|
|
|
|
|
|
<code class="ruby"> end</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="40">
|
|
|
|
|
|
<code class="ruby"></code>
|
|
</li>
|
|
|
|
<li class="covered" data-hits="1" data-linenumber="41">
|
|
<span class="hits">1</span>
|
|
|
|
<code class="ruby"> def render_json_home</code>
|
|
</li>
|
|
|
|
<li class="covered" data-hits="2" data-linenumber="42">
|
|
<span class="hits">2</span>
|
|
|
|
<code class="ruby"> relations = {}</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="43">
|
|
|
|
|
|
<code class="ruby"></code>
|
|
</li>
|
|
|
|
<li class="covered" data-hits="2" data-linenumber="44">
|
|
<span class="hits">2</span>
|
|
|
|
<code class="ruby"> routes.resources.each do |resource|</code>
|
|
</li>
|
|
|
|
<li class="covered" data-hits="2" data-linenumber="45">
|
|
<span class="hits">2</span>
|
|
|
|
<code class="ruby"> resource.services.each do |(request_method, sub_route), service|</code>
|
|
</li>
|
|
|
|
<li class="covered" data-hits="2" data-linenumber="46">
|
|
<span class="hits">2</span>
|
|
|
|
<code class="ruby"> service &&= service.to_s.sub(/_#{resource.identifier}$/, ''.freeze)</code>
|
|
</li>
|
|
|
|
<li class="covered" data-hits="2" data-linenumber="47">
|
|
<span class="hits">2</span>
|
|
|
|
<code class="ruby"> pattern = sub_route ? resource.route + sub_route : resource.route</code>
|
|
</li>
|
|
|
|
<li class="covered" data-hits="2" data-linenumber="48">
|
|
<span class="hits">2</span>
|
|
|
|
<code class="ruby"> relation = "http://schema.travis-ci.com/rel/#{resource.identifier}/#{service}"</code>
|
|
</li>
|
|
|
|
<li class="covered" data-hits="2" data-linenumber="49">
|
|
<span class="hits">2</span>
|
|
|
|
<code class="ruby"> pattern.to_templates.each do |template|</code>
|
|
</li>
|
|
|
|
<li class="covered" data-hits="2" data-linenumber="50">
|
|
<span class="hits">2</span>
|
|
|
|
<code class="ruby"> relations[relation] ||= {}</code>
|
|
</li>
|
|
|
|
<li class="covered" data-hits="2" data-linenumber="51">
|
|
<span class="hits">2</span>
|
|
|
|
<code class="ruby"> relations[relation][template] ||= { allow: [], vars: template.scan(/{\+?([^}]+)}/).flatten }</code>
|
|
</li>
|
|
|
|
<li class="covered" data-hits="2" data-linenumber="52">
|
|
<span class="hits">2</span>
|
|
|
|
<code class="ruby"> relations[relation][template][:allow] << request_method</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="53">
|
|
|
|
|
|
<code class="ruby"> end</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="54">
|
|
|
|
|
|
<code class="ruby"> end</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="55">
|
|
|
|
|
|
<code class="ruby"> end</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="56">
|
|
|
|
|
|
<code class="ruby"></code>
|
|
</li>
|
|
|
|
<li class="covered" data-hits="2" data-linenumber="57">
|
|
<span class="hits">2</span>
|
|
|
|
<code class="ruby"> nested_relations = {}</code>
|
|
</li>
|
|
|
|
<li class="covered" data-hits="2" data-linenumber="58">
|
|
<span class="hits">2</span>
|
|
|
|
<code class="ruby"> relations.delete_if do |relation, request_map|</code>
|
|
</li>
|
|
|
|
<li class="covered" data-hits="2" data-linenumber="59">
|
|
<span class="hits">2</span>
|
|
|
|
<code class="ruby"> next if request_map.size < 2</code>
|
|
</li>
|
|
|
|
<li class="missed" data-hits="0" data-linenumber="60">
|
|
|
|
|
|
<code class="ruby"> common_vars = request_map.values.map { |e| e[:vars] }.inject(:&)</code>
|
|
</li>
|
|
|
|
<li class="missed" data-hits="0" data-linenumber="61">
|
|
|
|
|
|
<code class="ruby"> request_map.each do |template, payload|</code>
|
|
</li>
|
|
|
|
<li class="missed" data-hits="0" data-linenumber="62">
|
|
|
|
|
|
<code class="ruby"> special_vars = payload[:vars] - common_vars</code>
|
|
</li>
|
|
|
|
<li class="missed" data-hits="0" data-linenumber="63">
|
|
|
|
|
|
<code class="ruby"> schema = special_vars.any? ? "#{relation}/by_#{special_vars.join(?_)}" : relation</code>
|
|
</li>
|
|
|
|
<li class="missed" data-hits="0" data-linenumber="64">
|
|
|
|
|
|
<code class="ruby"> nested_relations[schema] = { template => payload }</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="65">
|
|
|
|
|
|
<code class="ruby"> end</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="66">
|
|
|
|
|
|
<code class="ruby"> end</code>
|
|
</li>
|
|
|
|
<li class="covered" data-hits="2" data-linenumber="67">
|
|
<span class="hits">2</span>
|
|
|
|
<code class="ruby"> relations.merge! nested_relations</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="68">
|
|
|
|
|
|
<code class="ruby"></code>
|
|
</li>
|
|
|
|
<li class="covered" data-hits="2" data-linenumber="69">
|
|
<span class="hits">2</span>
|
|
|
|
<code class="ruby"> resources = relations.map do |relation, payload|</code>
|
|
</li>
|
|
|
|
<li class="covered" data-hits="2" data-linenumber="70">
|
|
<span class="hits">2</span>
|
|
|
|
<code class="ruby"> template, payload = payload.first</code>
|
|
</li>
|
|
|
|
<li class="covered" data-hits="2" data-linenumber="71">
|
|
<span class="hits">2</span>
|
|
|
|
<code class="ruby"> hints = { 'allow' => payload[:allow] }</code>
|
|
</li>
|
|
|
|
<li class="covered" data-hits="2" data-linenumber="72">
|
|
<span class="hits">2</span>
|
|
|
|
<code class="ruby"> hints['accept-post'] = ALLOW_POST if payload[:allow].include? 'POST'</code>
|
|
</li>
|
|
|
|
<li class="covered" data-hits="2" data-linenumber="73">
|
|
<span class="hits">2</span>
|
|
|
|
<code class="ruby"> hints['accept-patch'] = ALLOW_POST if payload[:allow].include? 'PATCH'</code>
|
|
</li>
|
|
|
|
<li class="covered" data-hits="2" data-linenumber="74">
|
|
<span class="hits">2</span>
|
|
|
|
<code class="ruby"> hints['accept-put'] = ALLOW_POST if payload[:allow].include? 'PUT'</code>
|
|
</li>
|
|
|
|
<li class="covered" data-hits="2" data-linenumber="75">
|
|
<span class="hits">2</span>
|
|
|
|
<code class="ruby"> hints['representations'] = ['application/json', 'application/vnd.travis-ci.3+json']</code>
|
|
</li>
|
|
|
|
<li class="covered" data-hits="2" data-linenumber="76">
|
|
<span class="hits">2</span>
|
|
|
|
<code class="ruby"> [relation, {</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="77">
|
|
|
|
|
|
<code class="ruby"> 'href-template' => prefix + template,</code>
|
|
</li>
|
|
|
|
<li class="covered" data-hits="2" data-linenumber="78">
|
|
<span class="hits">2</span>
|
|
|
|
<code class="ruby"> 'href-vars' => Hash[payload[:vars].map { |var| [var, "http://schema.travis-ci.com/param/#{var}"] }],</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="79">
|
|
|
|
|
|
<code class="ruby"> 'hints' => hints</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="80">
|
|
|
|
|
|
<code class="ruby"> }]</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="81">
|
|
|
|
|
|
<code class="ruby"> end</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="82">
|
|
|
|
|
|
<code class="ruby"></code>
|
|
</li>
|
|
|
|
<li class="covered" data-hits="2" data-linenumber="83">
|
|
<span class="hits">2</span>
|
|
|
|
<code class="ruby"> { resources: Hash[resources] }</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="84">
|
|
|
|
|
|
<code class="ruby"> end</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="85">
|
|
|
|
|
|
<code class="ruby"></code>
|
|
</li>
|
|
|
|
<li class="covered" data-hits="1" data-linenumber="86">
|
|
<span class="hits">1</span>
|
|
|
|
<code class="ruby"> def json_home?(env)</code>
|
|
</li>
|
|
|
|
<li class="covered" data-hits="5" data-linenumber="87">
|
|
<span class="hits">5</span>
|
|
|
|
<code class="ruby"> env['HTTP_ACCEPT'.freeze] == 'application/json-home'.freeze</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="88">
|
|
|
|
|
|
<code class="ruby"> end</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="89">
|
|
|
|
|
|
<code class="ruby"> end</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="90">
|
|
|
|
|
|
<code class="ruby">end</code>
|
|
</li>
|
|
|
|
</ol>
|
|
</pre>
|
|
</div>
|
|
|
|
<div class="source_table" id="4fa3e7e42191523754efec186ec8bfce3291040f">
|
|
<div class="header">
|
|
<h3>lib/travis/api/v3/services.rb</h3>
|
|
<h4><span class="green">100.0 %</span> covered</h4>
|
|
<div>
|
|
<b>5</b> relevant lines.
|
|
<span class="green"><b>5</b> lines covered</span> and
|
|
<span class="red"><b>0</b> lines missed.</span>
|
|
</div>
|
|
</div>
|
|
|
|
<pre>
|
|
<ol>
|
|
|
|
<li class="covered" data-hits="1" data-linenumber="1">
|
|
<span class="hits">1</span>
|
|
|
|
<code class="ruby">module Travis::API::V3</code>
|
|
</li>
|
|
|
|
<li class="covered" data-hits="1" data-linenumber="2">
|
|
<span class="hits">1</span>
|
|
|
|
<code class="ruby"> module Services</code>
|
|
</li>
|
|
|
|
<li class="covered" data-hits="1" data-linenumber="3">
|
|
<span class="hits">1</span>
|
|
|
|
<code class="ruby"> def self.[](key)</code>
|
|
</li>
|
|
|
|
<li class="covered" data-hits="27" data-linenumber="4">
|
|
<span class="hits">27</span>
|
|
|
|
<code class="ruby"> return key if key.respond_to? :new</code>
|
|
</li>
|
|
|
|
<li class="covered" data-hits="27" data-linenumber="5">
|
|
<span class="hits">27</span>
|
|
|
|
<code class="ruby"> const_get(key.to_s.camelize)</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="6">
|
|
|
|
|
|
<code class="ruby"> end</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="7">
|
|
|
|
|
|
<code class="ruby"> end</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="8">
|
|
|
|
|
|
<code class="ruby">end</code>
|
|
</li>
|
|
|
|
</ol>
|
|
</pre>
|
|
</div>
|
|
|
|
<div class="source_table" id="a6bb60f0c77473ac7b1a29920833a93a5c2cd7f7">
|
|
<div class="header">
|
|
<h3>lib/travis/api/v3/services/find_repository.rb</h3>
|
|
<h4><span class="red">78.57 %</span> covered</h4>
|
|
<div>
|
|
<b>14</b> relevant lines.
|
|
<span class="green"><b>11</b> lines covered</span> and
|
|
<span class="red"><b>3</b> lines missed.</span>
|
|
</div>
|
|
</div>
|
|
|
|
<pre>
|
|
<ol>
|
|
|
|
<li class="covered" data-hits="1" data-linenumber="1">
|
|
<span class="hits">1</span>
|
|
|
|
<code class="ruby">module Travis::API::V3</code>
|
|
</li>
|
|
|
|
<li class="covered" data-hits="1" data-linenumber="2">
|
|
<span class="hits">1</span>
|
|
|
|
<code class="ruby"> class Services::FindRepository < Service</code>
|
|
</li>
|
|
|
|
<li class="covered" data-hits="1" data-linenumber="3">
|
|
<span class="hits">1</span>
|
|
|
|
<code class="ruby"> params :id, :github_id, :slug, optional: true</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="4">
|
|
|
|
|
|
<code class="ruby"></code>
|
|
</li>
|
|
|
|
<li class="covered" data-hits="1" data-linenumber="5">
|
|
<span class="hits">1</span>
|
|
|
|
<code class="ruby"> def run</code>
|
|
</li>
|
|
|
|
<li class="covered" data-hits="18" data-linenumber="6">
|
|
<span class="hits">18</span>
|
|
|
|
<code class="ruby"> raise NotFound, :repository unless repository and access_control.visible? repository</code>
|
|
</li>
|
|
|
|
<li class="covered" data-hits="8" data-linenumber="7">
|
|
<span class="hits">8</span>
|
|
|
|
<code class="ruby"> Result.new(:repository, repository)</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="8">
|
|
|
|
|
|
<code class="ruby"> end</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="9">
|
|
|
|
|
|
<code class="ruby"></code>
|
|
</li>
|
|
|
|
<li class="covered" data-hits="1" data-linenumber="10">
|
|
<span class="hits">1</span>
|
|
|
|
<code class="ruby"> def repository</code>
|
|
</li>
|
|
|
|
<li class="covered" data-hits="42" data-linenumber="11">
|
|
<span class="hits">42</span>
|
|
|
|
<code class="ruby"> raise EntityMissing, :repository if defined?(@repository) and @repository.nil?</code>
|
|
</li>
|
|
|
|
<li class="covered" data-hits="42" data-linenumber="12">
|
|
<span class="hits">42</span>
|
|
|
|
<code class="ruby"> @repository ||= find_repository</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="13">
|
|
|
|
|
|
<code class="ruby"> end</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="14">
|
|
|
|
|
|
<code class="ruby"></code>
|
|
</li>
|
|
|
|
<li class="covered" data-hits="1" data-linenumber="15">
|
|
<span class="hits">1</span>
|
|
|
|
<code class="ruby"> def find_repository</code>
|
|
</li>
|
|
|
|
<li class="covered" data-hits="18" data-linenumber="16">
|
|
<span class="hits">18</span>
|
|
|
|
<code class="ruby"> return ::Repository.find_by_id(id) if id</code>
|
|
</li>
|
|
|
|
<li class="missed" data-hits="0" data-linenumber="17">
|
|
|
|
|
|
<code class="ruby"> return ::Repository.find_by_github_id(github_id) if github_id</code>
|
|
</li>
|
|
|
|
<li class="missed" data-hits="0" data-linenumber="18">
|
|
|
|
|
|
<code class="ruby"> return ::Repository.by_slug(slug).first if slug</code>
|
|
</li>
|
|
|
|
<li class="missed" data-hits="0" data-linenumber="19">
|
|
|
|
|
|
<code class="ruby"> raise WrongParams</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="20">
|
|
|
|
|
|
<code class="ruby"> end</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="21">
|
|
|
|
|
|
<code class="ruby"> end</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="22">
|
|
|
|
|
|
<code class="ruby">end</code>
|
|
</li>
|
|
|
|
</ol>
|
|
</pre>
|
|
</div>
|
|
|
|
<div class="source_table" id="dc5349ac13a7e081565d2ad293a276d468fd8b0b">
|
|
<div class="header">
|
|
<h3>lib/travis/private_key.rb</h3>
|
|
<h4><span class="red">50.0 %</span> covered</h4>
|
|
<div>
|
|
<b>10</b> relevant lines.
|
|
<span class="green"><b>5</b> lines covered</span> and
|
|
<span class="red"><b>5</b> lines missed.</span>
|
|
</div>
|
|
</div>
|
|
|
|
<pre>
|
|
<ol>
|
|
|
|
<li class="covered" data-hits="1" data-linenumber="1">
|
|
<span class="hits">1</span>
|
|
|
|
<code class="ruby">class PrivateKey</code>
|
|
</li>
|
|
|
|
<li class="covered" data-hits="1" data-linenumber="2">
|
|
<span class="hits">1</span>
|
|
|
|
<code class="ruby"> attr_reader :key</code>
|
|
</li>
|
|
|
|
<li class="covered" data-hits="1" data-linenumber="3">
|
|
<span class="hits">1</span>
|
|
|
|
<code class="ruby"> def initialize(key)</code>
|
|
</li>
|
|
|
|
<li class="missed" data-hits="0" data-linenumber="4">
|
|
|
|
|
|
<code class="ruby"> @key = key</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="5">
|
|
|
|
|
|
<code class="ruby"> end</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="6">
|
|
|
|
|
|
<code class="ruby"></code>
|
|
</li>
|
|
|
|
<li class="covered" data-hits="1" data-linenumber="7">
|
|
<span class="hits">1</span>
|
|
|
|
<code class="ruby"> def fingerprint</code>
|
|
</li>
|
|
|
|
<li class="missed" data-hits="0" data-linenumber="8">
|
|
|
|
|
|
<code class="ruby"> rsa_key = OpenSSL::PKey::RSA.new(key)</code>
|
|
</li>
|
|
|
|
<li class="missed" data-hits="0" data-linenumber="9">
|
|
|
|
|
|
<code class="ruby"> public_ssh_rsa = "\x00\x00\x00\x07ssh-rsa" + rsa_key.e.to_s(0) + rsa_key.n.to_s(0)</code>
|
|
</li>
|
|
|
|
<li class="missed" data-hits="0" data-linenumber="10">
|
|
|
|
|
|
<code class="ruby"> OpenSSL::Digest::MD5.new(public_ssh_rsa).hexdigest.scan(/../).join(':')</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="11">
|
|
|
|
|
|
<code class="ruby"> end</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="12">
|
|
|
|
|
|
<code class="ruby"></code>
|
|
</li>
|
|
|
|
<li class="covered" data-hits="1" data-linenumber="13">
|
|
<span class="hits">1</span>
|
|
|
|
<code class="ruby"> def inspect</code>
|
|
</li>
|
|
|
|
<li class="missed" data-hits="0" data-linenumber="14">
|
|
|
|
|
|
<code class="ruby"> "<PrivateKey #{fingerprint}>"</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="15">
|
|
|
|
|
|
<code class="ruby"> end</code>
|
|
</li>
|
|
|
|
<li class="never" data-hits="" data-linenumber="16">
|
|
|
|
|
|
<code class="ruby">end</code>
|
|
</li>
|
|
|
|
</ol>
|
|
</pre>
|
|
</div>
|
|
|
|
</div>
|
|
</div>
|
|
</body>
|
|
</html>
|