<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
<head>
<meta http-equiv="content-type" content="text/html; charset=UTF-8" />
<title>RepositoryServletRepositoryGroupTest xref</title>
<link type="text/css" rel="stylesheet" href="../../../../stylesheet.css" />
</head>
<body>
<div id="overview"><a href="../../../../../testapidocs/org/apache/archiva/webdav/RepositoryServletRepositoryGroupTest.html">View Javadoc</a></div><pre>

<a class="jxr_linenumber" name="1" href="#1">1</a>   <strong class="jxr_keyword">package</strong> org.apache.archiva.webdav;
<a class="jxr_linenumber" name="2" href="#2">2</a>   
<a class="jxr_linenumber" name="3" href="#3">3</a>   <em class="jxr_comment">/*</em>
<a class="jxr_linenumber" name="4" href="#4">4</a>   <em class="jxr_comment"> * Licensed to the Apache Software Foundation (ASF) under one</em>
<a class="jxr_linenumber" name="5" href="#5">5</a>   <em class="jxr_comment"> * or more contributor license agreements.  See the NOTICE file</em>
<a class="jxr_linenumber" name="6" href="#6">6</a>   <em class="jxr_comment"> * distributed with this work for additional information</em>
<a class="jxr_linenumber" name="7" href="#7">7</a>   <em class="jxr_comment"> * regarding copyright ownership.  The ASF licenses this file</em>
<a class="jxr_linenumber" name="8" href="#8">8</a>   <em class="jxr_comment"> * to you under the Apache License, Version 2.0 (the</em>
<a class="jxr_linenumber" name="9" href="#9">9</a>   <em class="jxr_comment"> * "License"); you may not use this file except in compliance</em>
<a class="jxr_linenumber" name="10" href="#10">10</a>  <em class="jxr_comment"> * with the License.  You may obtain a copy of the License at</em>
<a class="jxr_linenumber" name="11" href="#11">11</a>  <em class="jxr_comment"> *</em>
<a class="jxr_linenumber" name="12" href="#12">12</a>  <em class="jxr_comment"> *  <a href="http://www.apache.org/licenses/LICENSE-2.0" target="alexandria_uri">http://www.apache.org/licenses/LICENSE-2.0</a></em>
<a class="jxr_linenumber" name="13" href="#13">13</a>  <em class="jxr_comment"> *</em>
<a class="jxr_linenumber" name="14" href="#14">14</a>  <em class="jxr_comment"> * Unless required by applicable law or agreed to in writing,</em>
<a class="jxr_linenumber" name="15" href="#15">15</a>  <em class="jxr_comment"> * software distributed under the License is distributed on an</em>
<a class="jxr_linenumber" name="16" href="#16">16</a>  <em class="jxr_comment"> * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY</em>
<a class="jxr_linenumber" name="17" href="#17">17</a>  <em class="jxr_comment"> * KIND, either express or implied.  See the License for the</em>
<a class="jxr_linenumber" name="18" href="#18">18</a>  <em class="jxr_comment"> * specific language governing permissions and limitations</em>
<a class="jxr_linenumber" name="19" href="#19">19</a>  <em class="jxr_comment"> * under the License.</em>
<a class="jxr_linenumber" name="20" href="#20">20</a>  <em class="jxr_comment"> */</em>
<a class="jxr_linenumber" name="21" href="#21">21</a>  
<a class="jxr_linenumber" name="22" href="#22">22</a>  <strong class="jxr_keyword">import</strong> com.meterware.httpunit.GetMethodWebRequest;
<a class="jxr_linenumber" name="23" href="#23">23</a>  <strong class="jxr_keyword">import</strong> com.meterware.httpunit.PutMethodWebRequest;
<a class="jxr_linenumber" name="24" href="#24">24</a>  <strong class="jxr_keyword">import</strong> com.meterware.httpunit.WebRequest;
<a class="jxr_linenumber" name="25" href="#25">25</a>  <strong class="jxr_keyword">import</strong> com.meterware.httpunit.WebResponse;
<a class="jxr_linenumber" name="26" href="#26">26</a>  <strong class="jxr_keyword">import</strong> org.apache.archiva.configuration.Configuration;
<a class="jxr_linenumber" name="27" href="#27">27</a>  <strong class="jxr_keyword">import</strong> org.apache.archiva.configuration.ManagedRepositoryConfiguration;
<a class="jxr_linenumber" name="28" href="#28">28</a>  <strong class="jxr_keyword">import</strong> org.apache.archiva.configuration.RepositoryGroupConfiguration;
<a class="jxr_linenumber" name="29" href="#29">29</a>  <strong class="jxr_keyword">import</strong> org.apache.archiva.maven2.metadata.MavenMetadataReader;
<a class="jxr_linenumber" name="30" href="#30">30</a>  <strong class="jxr_keyword">import</strong> org.apache.archiva.model.ArchivaRepositoryMetadata;
<a class="jxr_linenumber" name="31" href="#31">31</a>  <strong class="jxr_keyword">import</strong> org.apache.commons.io.FileUtils;
<a class="jxr_linenumber" name="32" href="#32">32</a>  <strong class="jxr_keyword">import</strong> org.apache.commons.lang.StringUtils;
<a class="jxr_linenumber" name="33" href="#33">33</a>  <strong class="jxr_keyword">import</strong> org.junit.After;
<a class="jxr_linenumber" name="34" href="#34">34</a>  <strong class="jxr_keyword">import</strong> org.junit.Before;
<a class="jxr_linenumber" name="35" href="#35">35</a>  <strong class="jxr_keyword">import</strong> org.junit.Test;
<a class="jxr_linenumber" name="36" href="#36">36</a>  
<a class="jxr_linenumber" name="37" href="#37">37</a>  <strong class="jxr_keyword">import</strong> javax.servlet.http.HttpServletResponse;
<a class="jxr_linenumber" name="38" href="#38">38</a>  <strong class="jxr_keyword">import</strong> java.io.File;
<a class="jxr_linenumber" name="39" href="#39">39</a>  <strong class="jxr_keyword">import</strong> java.io.InputStream;
<a class="jxr_linenumber" name="40" href="#40">40</a>  <strong class="jxr_keyword">import</strong> java.nio.charset.Charset;
<a class="jxr_linenumber" name="41" href="#41">41</a>  <strong class="jxr_keyword">import</strong> java.util.ArrayList;
<a class="jxr_linenumber" name="42" href="#42">42</a>  <strong class="jxr_keyword">import</strong> java.util.List;
<a class="jxr_linenumber" name="43" href="#43">43</a>  
<a class="jxr_linenumber" name="44" href="#44">44</a>  
<a class="jxr_linenumber" name="45" href="#45">45</a>  <em class="jxr_javadoccomment">/**</em>
<a class="jxr_linenumber" name="46" href="#46">46</a>  <em class="jxr_javadoccomment"> * RepositoryServletRepositoryGroupTest</em>
<a class="jxr_linenumber" name="47" href="#47">47</a>  <em class="jxr_javadoccomment"> * &lt;p/&gt;</em>
<a class="jxr_linenumber" name="48" href="#48">48</a>  <em class="jxr_javadoccomment"> * Test Case 1.  Accessing a valid repository group root url (e.g. <a href="http://machine.com/repository/repository-group/)" target="alexandria_uri">http://machine.com/repository/repository-group/)</a> returns a Bad Request (HTTP 400)</em>
<a class="jxr_linenumber" name="49" href="#49">49</a>  <em class="jxr_javadoccomment"> * Test Case 2.  Accessing an invalid repository group root url is forwarded to managed repository checking (this is not covered here)</em>
<a class="jxr_linenumber" name="50" href="#50">50</a>  <em class="jxr_javadoccomment"> * Test Case 3.  Accessing an artifact in a valid repository group will iterate over the managed repositories in the repository group</em>
<a class="jxr_linenumber" name="51" href="#51">51</a>  <em class="jxr_javadoccomment"> * Test Case 3.a.  If an invalid managed repository is encountered (managed repository doesn't exist),</em>
<a class="jxr_linenumber" name="52" href="#52">52</a>  <em class="jxr_javadoccomment"> * a Not Found (HTTP 404) is returned and the iteration is broken</em>
<a class="jxr_linenumber" name="53" href="#53">53</a>  <em class="jxr_javadoccomment"> * Test Case 3.b.  If an artifact is not found in a valid managed repository (after proxying, etc.),</em>
<a class="jxr_linenumber" name="54" href="#54">54</a>  <em class="jxr_javadoccomment"> * a Not Found (HTTP 404) is set but not returned yet, the iteration continues to the next managed repository.</em>
<a class="jxr_linenumber" name="55" href="#55">55</a>  <em class="jxr_javadoccomment"> * The Not Found (HTTP 404) is returned after exhausting all valid managed repositories</em>
<a class="jxr_linenumber" name="56" href="#56">56</a>  <em class="jxr_javadoccomment"> * Test Case 3.c.  If an artifact is found in a valid managed repository,</em>
<a class="jxr_linenumber" name="57" href="#57">57</a>  <em class="jxr_javadoccomment"> * the artifact is returned, the iteration is broken and any Not Found (HTTP 404) is disregarded</em>
<a class="jxr_linenumber" name="58" href="#58">58</a>  <em class="jxr_javadoccomment"> * Test Case 4.  Accessing a valid repository group with any http write method returns a Bad Request (HTTP 400)</em>
<a class="jxr_linenumber" name="59" href="#59">59</a>  <em class="jxr_javadoccomment"> */</em>
<a class="jxr_linenumber" name="60" href="#60">60</a>  <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">class</strong> <a href="../../../../org/apache/archiva/webdav/RepositoryServletRepositoryGroupTest.html">RepositoryServletRepositoryGroupTest</a>
<a class="jxr_linenumber" name="61" href="#61">61</a>      <strong class="jxr_keyword">extends</strong> <a href="../../../../org/apache/archiva/webdav/AbstractRepositoryServletTestCase.html">AbstractRepositoryServletTestCase</a>
<a class="jxr_linenumber" name="62" href="#62">62</a>  {
<a class="jxr_linenumber" name="63" href="#63">63</a>      <strong class="jxr_keyword">protected</strong> File repoRootFirst;
<a class="jxr_linenumber" name="64" href="#64">64</a>  
<a class="jxr_linenumber" name="65" href="#65">65</a>      <strong class="jxr_keyword">protected</strong> File repoRootLast;
<a class="jxr_linenumber" name="66" href="#66">66</a>  
<a class="jxr_linenumber" name="67" href="#67">67</a>      <strong class="jxr_keyword">protected</strong> File repoRootInvalid;
<a class="jxr_linenumber" name="68" href="#68">68</a>  
<a class="jxr_linenumber" name="69" href="#69">69</a>      <strong class="jxr_keyword">protected</strong> <strong class="jxr_keyword">static</strong> <strong class="jxr_keyword">final</strong> String MANAGED_REPO_FIRST = <span class="jxr_string">"first"</span>;
<a class="jxr_linenumber" name="70" href="#70">70</a>  
<a class="jxr_linenumber" name="71" href="#71">71</a>      <strong class="jxr_keyword">protected</strong> <strong class="jxr_keyword">static</strong> <strong class="jxr_keyword">final</strong> String MANAGED_REPO_LAST = <span class="jxr_string">"last"</span>;
<a class="jxr_linenumber" name="72" href="#72">72</a>  
<a class="jxr_linenumber" name="73" href="#73">73</a>      <strong class="jxr_keyword">protected</strong> <strong class="jxr_keyword">static</strong> <strong class="jxr_keyword">final</strong> String MANAGED_REPO_INVALID = <span class="jxr_string">"invalid"</span>;
<a class="jxr_linenumber" name="74" href="#74">74</a>  
<a class="jxr_linenumber" name="75" href="#75">75</a>      <strong class="jxr_keyword">protected</strong> <strong class="jxr_keyword">static</strong> <strong class="jxr_keyword">final</strong> String REPO_GROUP_WITH_VALID_REPOS = <span class="jxr_string">"group-with-valid-repos"</span>;
<a class="jxr_linenumber" name="76" href="#76">76</a>  
<a class="jxr_linenumber" name="77" href="#77">77</a>      <strong class="jxr_keyword">protected</strong> <strong class="jxr_keyword">static</strong> <strong class="jxr_keyword">final</strong> String REPO_GROUP_WITH_INVALID_REPOS = <span class="jxr_string">"group-with-invalid-repos"</span>;
<a class="jxr_linenumber" name="78" href="#78">78</a>  
<a class="jxr_linenumber" name="79" href="#79">79</a>  
<a class="jxr_linenumber" name="80" href="#80">80</a>      @Override
<a class="jxr_linenumber" name="81" href="#81">81</a>      @Before
<a class="jxr_linenumber" name="82" href="#82">82</a>      <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">void</strong> setUp()
<a class="jxr_linenumber" name="83" href="#83">83</a>          <strong class="jxr_keyword">throws</strong> Exception
<a class="jxr_linenumber" name="84" href="#84">84</a>      {
<a class="jxr_linenumber" name="85" href="#85">85</a>          <strong class="jxr_keyword">super</strong>.setUp();
<a class="jxr_linenumber" name="86" href="#86">86</a>  
<a class="jxr_linenumber" name="87" href="#87">87</a>          String appserverBase = System.getProperty( <span class="jxr_string">"appserver.base"</span> );
<a class="jxr_linenumber" name="88" href="#88">88</a>  
<a class="jxr_linenumber" name="89" href="#89">89</a>          Configuration configuration = archivaConfiguration.getConfiguration();
<a class="jxr_linenumber" name="90" href="#90">90</a>  
<a class="jxr_linenumber" name="91" href="#91">91</a>          repoRootFirst = <strong class="jxr_keyword">new</strong> File( appserverBase, <span class="jxr_string">"data/repositories/"</span> + MANAGED_REPO_FIRST );
<a class="jxr_linenumber" name="92" href="#92">92</a>          repoRootLast = <strong class="jxr_keyword">new</strong> File( appserverBase, <span class="jxr_string">"data/repositories/"</span> + MANAGED_REPO_LAST );
<a class="jxr_linenumber" name="93" href="#93">93</a>  
<a class="jxr_linenumber" name="94" href="#94">94</a>          configuration.addManagedRepository(
<a class="jxr_linenumber" name="95" href="#95">95</a>              createManagedRepository( MANAGED_REPO_FIRST, <span class="jxr_string">"First Test Repo"</span>, repoRootFirst, <strong class="jxr_keyword">true</strong> ) );
<a class="jxr_linenumber" name="96" href="#96">96</a>          configuration.addManagedRepository(
<a class="jxr_linenumber" name="97" href="#97">97</a>              createManagedRepository( MANAGED_REPO_LAST, <span class="jxr_string">"Last Test Repo"</span>, repoRootLast, <strong class="jxr_keyword">true</strong> ) );
<a class="jxr_linenumber" name="98" href="#98">98</a>  
<a class="jxr_linenumber" name="99" href="#99">99</a>          List&lt;String&gt; managedRepoIds = <strong class="jxr_keyword">new</strong> ArrayList&lt;String&gt;();
<a class="jxr_linenumber" name="100" href="#100">100</a>         managedRepoIds.add( MANAGED_REPO_FIRST );
<a class="jxr_linenumber" name="101" href="#101">101</a>         managedRepoIds.add( MANAGED_REPO_LAST );
<a class="jxr_linenumber" name="102" href="#102">102</a> 
<a class="jxr_linenumber" name="103" href="#103">103</a>         configuration.addRepositoryGroup( createRepositoryGroup( REPO_GROUP_WITH_VALID_REPOS, managedRepoIds ) );
<a class="jxr_linenumber" name="104" href="#104">104</a> 
<a class="jxr_linenumber" name="105" href="#105">105</a>         <em class="jxr_comment">// Create the repository group with an invalid managed repository</em>
<a class="jxr_linenumber" name="106" href="#106">106</a>         repoRootInvalid = <strong class="jxr_keyword">new</strong> File( appserverBase, <span class="jxr_string">"data/repositories/"</span> + MANAGED_REPO_INVALID );
<a class="jxr_linenumber" name="107" href="#107">107</a>         ManagedRepositoryConfiguration managedRepositoryConfiguration =
<a class="jxr_linenumber" name="108" href="#108">108</a>             createManagedRepository( MANAGED_REPO_INVALID, <span class="jxr_string">"Invalid Test Repo"</span>, repoRootInvalid, <strong class="jxr_keyword">true</strong> );
<a class="jxr_linenumber" name="109" href="#109">109</a> 
<a class="jxr_linenumber" name="110" href="#110">110</a>         configuration.addManagedRepository(
<a class="jxr_linenumber" name="111" href="#111">111</a>             createManagedRepository( MANAGED_REPO_FIRST, <span class="jxr_string">"First Test Repo"</span>, repoRootFirst, <strong class="jxr_keyword">true</strong> ) );
<a class="jxr_linenumber" name="112" href="#112">112</a>         configuration.addManagedRepository( managedRepositoryConfiguration );
<a class="jxr_linenumber" name="113" href="#113">113</a>         configuration.addManagedRepository(
<a class="jxr_linenumber" name="114" href="#114">114</a>             createManagedRepository( MANAGED_REPO_LAST, <span class="jxr_string">"Last Test Repo"</span>, repoRootLast, <strong class="jxr_keyword">true</strong> ) );
<a class="jxr_linenumber" name="115" href="#115">115</a> 
<a class="jxr_linenumber" name="116" href="#116">116</a>         List&lt;String&gt; invalidManagedRepoIds = <strong class="jxr_keyword">new</strong> ArrayList&lt;String&gt;();
<a class="jxr_linenumber" name="117" href="#117">117</a>         invalidManagedRepoIds.add( MANAGED_REPO_FIRST );
<a class="jxr_linenumber" name="118" href="#118">118</a>         invalidManagedRepoIds.add( MANAGED_REPO_INVALID );
<a class="jxr_linenumber" name="119" href="#119">119</a>         invalidManagedRepoIds.add( MANAGED_REPO_LAST );
<a class="jxr_linenumber" name="120" href="#120">120</a> 
<a class="jxr_linenumber" name="121" href="#121">121</a>         configuration.addRepositoryGroup(
<a class="jxr_linenumber" name="122" href="#122">122</a>             createRepositoryGroup( REPO_GROUP_WITH_INVALID_REPOS, invalidManagedRepoIds ) );
<a class="jxr_linenumber" name="123" href="#123">123</a> 
<a class="jxr_linenumber" name="124" href="#124">124</a>         configuration.removeManagedRepository( managedRepositoryConfiguration );
<a class="jxr_linenumber" name="125" href="#125">125</a>         FileUtils.deleteDirectory( repoRootInvalid );
<a class="jxr_linenumber" name="126" href="#126">126</a> 
<a class="jxr_linenumber" name="127" href="#127">127</a>         saveConfiguration( archivaConfiguration );
<a class="jxr_linenumber" name="128" href="#128">128</a>     }
<a class="jxr_linenumber" name="129" href="#129">129</a> 
<a class="jxr_linenumber" name="130" href="#130">130</a>     @Override
<a class="jxr_linenumber" name="131" href="#131">131</a>     @After
<a class="jxr_linenumber" name="132" href="#132">132</a>     <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">void</strong> tearDown()
<a class="jxr_linenumber" name="133" href="#133">133</a>         <strong class="jxr_keyword">throws</strong> Exception
<a class="jxr_linenumber" name="134" href="#134">134</a>     {
<a class="jxr_linenumber" name="135" href="#135">135</a>         setupCleanRepo( repoRootFirst );
<a class="jxr_linenumber" name="136" href="#136">136</a>         setupCleanRepo( repoRootLast );
<a class="jxr_linenumber" name="137" href="#137">137</a> 
<a class="jxr_linenumber" name="138" href="#138">138</a>         <strong class="jxr_keyword">super</strong>.tearDown();
<a class="jxr_linenumber" name="139" href="#139">139</a>     }
<a class="jxr_linenumber" name="140" href="#140">140</a> 
<a class="jxr_linenumber" name="141" href="#141">141</a>     <em class="jxr_comment">/*</em>
<a class="jxr_linenumber" name="142" href="#142">142</a> <em class="jxr_comment">    * Test Case 3.c</em>
<a class="jxr_linenumber" name="143" href="#143">143</a> <em class="jxr_comment">    */</em>
<a class="jxr_linenumber" name="144" href="#144">144</a>     @Test
<a class="jxr_linenumber" name="145" href="#145">145</a>     <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">void</strong> testGetFromFirstManagedRepositoryReturnOk()
<a class="jxr_linenumber" name="146" href="#146">146</a>         <strong class="jxr_keyword">throws</strong> Exception
<a class="jxr_linenumber" name="147" href="#147">147</a>     {
<a class="jxr_linenumber" name="148" href="#148">148</a>         String resourceName = <span class="jxr_string">"dummy/dummy-first-resource/1.0/dummy-first-resource-1.0.txt"</span>;
<a class="jxr_linenumber" name="149" href="#149">149</a> 
<a class="jxr_linenumber" name="150" href="#150">150</a>         File dummyInternalResourceFile = <strong class="jxr_keyword">new</strong> File( repoRootFirst, resourceName );
<a class="jxr_linenumber" name="151" href="#151">151</a>         dummyInternalResourceFile.getParentFile().mkdirs();
<a class="jxr_linenumber" name="152" href="#152">152</a>         FileUtils.writeStringToFile( dummyInternalResourceFile, <span class="jxr_string">"first"</span>, Charset.defaultCharset() );
<a class="jxr_linenumber" name="153" href="#153">153</a> 
<a class="jxr_linenumber" name="154" href="#154">154</a>         WebRequest request = <strong class="jxr_keyword">new</strong> GetMethodWebRequest(
<a class="jxr_linenumber" name="155" href="#155">155</a>             <span class="jxr_string">"http://machine.com/repository/"</span> + REPO_GROUP_WITH_VALID_REPOS + <span class="jxr_string">"/"</span> + resourceName );
<a class="jxr_linenumber" name="156" href="#156">156</a>         WebResponse response = getServletUnitClient().getResponse( request );
<a class="jxr_linenumber" name="157" href="#157">157</a> 
<a class="jxr_linenumber" name="158" href="#158">158</a>         assertResponseOK( response );
<a class="jxr_linenumber" name="159" href="#159">159</a>         assertEquals( <span class="jxr_string">"Expected file contents"</span>, <span class="jxr_string">"first"</span>, response.getText() );
<a class="jxr_linenumber" name="160" href="#160">160</a>     }
<a class="jxr_linenumber" name="161" href="#161">161</a> 
<a class="jxr_linenumber" name="162" href="#162">162</a>     <em class="jxr_comment">/*</em>
<a class="jxr_linenumber" name="163" href="#163">163</a> <em class="jxr_comment">    * Test Case 3.c</em>
<a class="jxr_linenumber" name="164" href="#164">164</a> <em class="jxr_comment">    */</em>
<a class="jxr_linenumber" name="165" href="#165">165</a>     @Test
<a class="jxr_linenumber" name="166" href="#166">166</a>     <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">void</strong> testGetFromLastManagedRepositoryReturnOk()
<a class="jxr_linenumber" name="167" href="#167">167</a>         <strong class="jxr_keyword">throws</strong> Exception
<a class="jxr_linenumber" name="168" href="#168">168</a>     {
<a class="jxr_linenumber" name="169" href="#169">169</a>         String resourceName = <span class="jxr_string">"dummy/dummy-last-resource/1.0/dummy-last-resource-1.0.txt"</span>;
<a class="jxr_linenumber" name="170" href="#170">170</a> 
<a class="jxr_linenumber" name="171" href="#171">171</a>         File dummyReleasesResourceFile = <strong class="jxr_keyword">new</strong> File( repoRootLast, resourceName );
<a class="jxr_linenumber" name="172" href="#172">172</a>         dummyReleasesResourceFile.getParentFile().mkdirs();
<a class="jxr_linenumber" name="173" href="#173">173</a>         FileUtils.writeStringToFile( dummyReleasesResourceFile, <span class="jxr_string">"last"</span>, Charset.defaultCharset() );
<a class="jxr_linenumber" name="174" href="#174">174</a> 
<a class="jxr_linenumber" name="175" href="#175">175</a>         WebRequest request = <strong class="jxr_keyword">new</strong> GetMethodWebRequest(
<a class="jxr_linenumber" name="176" href="#176">176</a>             <span class="jxr_string">"http://machine.com/repository/"</span> + REPO_GROUP_WITH_VALID_REPOS + <span class="jxr_string">"/"</span> + resourceName );
<a class="jxr_linenumber" name="177" href="#177">177</a>         WebResponse response = getServletUnitClient().getResponse( request );
<a class="jxr_linenumber" name="178" href="#178">178</a> 
<a class="jxr_linenumber" name="179" href="#179">179</a>         assertResponseOK( response );
<a class="jxr_linenumber" name="180" href="#180">180</a>         assertEquals( <span class="jxr_string">"Expected file contents"</span>, <span class="jxr_string">"last"</span>, response.getText() );
<a class="jxr_linenumber" name="181" href="#181">181</a>     }
<a class="jxr_linenumber" name="182" href="#182">182</a> 
<a class="jxr_linenumber" name="183" href="#183">183</a>     <em class="jxr_comment">/*</em>
<a class="jxr_linenumber" name="184" href="#184">184</a> <em class="jxr_comment">    * Test Case 3.b</em>
<a class="jxr_linenumber" name="185" href="#185">185</a> <em class="jxr_comment">    */</em>
<a class="jxr_linenumber" name="186" href="#186">186</a>     @Test
<a class="jxr_linenumber" name="187" href="#187">187</a>     <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">void</strong> testGetFromValidRepositoryGroupReturnNotFound()
<a class="jxr_linenumber" name="188" href="#188">188</a>         <strong class="jxr_keyword">throws</strong> Exception
<a class="jxr_linenumber" name="189" href="#189">189</a>     {
<a class="jxr_linenumber" name="190" href="#190">190</a>         String resourceName = <span class="jxr_string">"dummy/dummy-no-resource/1.0/dummy-no-resource-1.0.txt"</span>;
<a class="jxr_linenumber" name="191" href="#191">191</a> 
<a class="jxr_linenumber" name="192" href="#192">192</a>         WebRequest request = <strong class="jxr_keyword">new</strong> GetMethodWebRequest(
<a class="jxr_linenumber" name="193" href="#193">193</a>             <span class="jxr_string">"http://machine.com/repository/"</span> + REPO_GROUP_WITH_VALID_REPOS + <span class="jxr_string">"/"</span> + resourceName );
<a class="jxr_linenumber" name="194" href="#194">194</a>         WebResponse response = getServletUnitClient().getResponse( request );
<a class="jxr_linenumber" name="195" href="#195">195</a> 
<a class="jxr_linenumber" name="196" href="#196">196</a>         assertResponseNotFound( response );
<a class="jxr_linenumber" name="197" href="#197">197</a>     }
<a class="jxr_linenumber" name="198" href="#198">198</a> 
<a class="jxr_linenumber" name="199" href="#199">199</a>     <em class="jxr_comment">/*</em>
<a class="jxr_linenumber" name="200" href="#200">200</a> <em class="jxr_comment">    * Test Case 3.a</em>
<a class="jxr_linenumber" name="201" href="#201">201</a> <em class="jxr_comment">    */</em>
<a class="jxr_linenumber" name="202" href="#202">202</a>     @Test
<a class="jxr_linenumber" name="203" href="#203">203</a>     <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">void</strong> testGetInvalidManagedRepositoryInGroupReturnNotFound()
<a class="jxr_linenumber" name="204" href="#204">204</a>         <strong class="jxr_keyword">throws</strong> Exception
<a class="jxr_linenumber" name="205" href="#205">205</a>     {
<a class="jxr_linenumber" name="206" href="#206">206</a>         String resourceName = <span class="jxr_string">"dummy/dummy-no-resource/1.0/dummy-no-resource-1.0.txt"</span>;
<a class="jxr_linenumber" name="207" href="#207">207</a> 
<a class="jxr_linenumber" name="208" href="#208">208</a>         WebRequest request = <strong class="jxr_keyword">new</strong> GetMethodWebRequest(
<a class="jxr_linenumber" name="209" href="#209">209</a>             <span class="jxr_string">"http://machine.com/repository/"</span> + REPO_GROUP_WITH_INVALID_REPOS + <span class="jxr_string">"/"</span> + resourceName );
<a class="jxr_linenumber" name="210" href="#210">210</a>         WebResponse response = getServletUnitClient().getResponse( request );
<a class="jxr_linenumber" name="211" href="#211">211</a> 
<a class="jxr_linenumber" name="212" href="#212">212</a>         assertResponseInternalServerError( response );
<a class="jxr_linenumber" name="213" href="#213">213</a>     }
<a class="jxr_linenumber" name="214" href="#214">214</a> 
<a class="jxr_linenumber" name="215" href="#215">215</a>     <em class="jxr_comment">/*</em>
<a class="jxr_linenumber" name="216" href="#216">216</a> <em class="jxr_comment">    * Test Case 4</em>
<a class="jxr_linenumber" name="217" href="#217">217</a> <em class="jxr_comment">    */</em>
<a class="jxr_linenumber" name="218" href="#218">218</a>     @Test
<a class="jxr_linenumber" name="219" href="#219">219</a>     <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">void</strong> testPutValidRepositoryGroupReturnBadRequest()
<a class="jxr_linenumber" name="220" href="#220">220</a>         <strong class="jxr_keyword">throws</strong> Exception
<a class="jxr_linenumber" name="221" href="#221">221</a>     {
<a class="jxr_linenumber" name="222" href="#222">222</a>         String resourceName = <span class="jxr_string">"dummy/dummy-put-resource/1.0/dummy-put-resource-1.0.txt"</span>;
<a class="jxr_linenumber" name="223" href="#223">223</a>         String putUrl = <span class="jxr_string">"http://machine.com/repository/"</span> + REPO_GROUP_WITH_VALID_REPOS + <span class="jxr_string">"/"</span> + resourceName;
<a class="jxr_linenumber" name="224" href="#224">224</a>         InputStream is = getClass().getResourceAsStream( <span class="jxr_string">"/artifact.jar"</span> );
<a class="jxr_linenumber" name="225" href="#225">225</a> 
<a class="jxr_linenumber" name="226" href="#226">226</a>         WebRequest request = <strong class="jxr_keyword">new</strong> PutMethodWebRequest( putUrl, is, <span class="jxr_string">"text/plain"</span> );
<a class="jxr_linenumber" name="227" href="#227">227</a>         WebResponse response = getServletUnitClient().getResponse( request );
<a class="jxr_linenumber" name="228" href="#228">228</a> 
<a class="jxr_linenumber" name="229" href="#229">229</a>         assertResponseMethodNotAllowed( response );
<a class="jxr_linenumber" name="230" href="#230">230</a>     }
<a class="jxr_linenumber" name="231" href="#231">231</a> 
<a class="jxr_linenumber" name="232" href="#232">232</a>     <em class="jxr_comment">// MRM-872</em>
<a class="jxr_linenumber" name="233" href="#233">233</a>     @Test
<a class="jxr_linenumber" name="234" href="#234">234</a>     <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">void</strong> testGetMergedMetadata()
<a class="jxr_linenumber" name="235" href="#235">235</a>         <strong class="jxr_keyword">throws</strong> Exception
<a class="jxr_linenumber" name="236" href="#236">236</a>     {
<a class="jxr_linenumber" name="237" href="#237">237</a>         <em class="jxr_comment">// first metadata file        </em>
<a class="jxr_linenumber" name="238" href="#238">238</a>         String resourceName = <span class="jxr_string">"dummy/dummy-merged-metadata-resource/maven-metadata.xml"</span>;
<a class="jxr_linenumber" name="239" href="#239">239</a> 
<a class="jxr_linenumber" name="240" href="#240">240</a>         File dummyInternalResourceFile = <strong class="jxr_keyword">new</strong> File( repoRootFirst, resourceName );
<a class="jxr_linenumber" name="241" href="#241">241</a>         dummyInternalResourceFile.getParentFile().mkdirs();
<a class="jxr_linenumber" name="242" href="#242">242</a>         FileUtils.writeStringToFile( dummyInternalResourceFile, <span class="jxr_string">"&lt;?xml version=\&quot;1.0\&quot; encoding=\&quot;UTF-8\&quot;?&gt;\n"</span>
<a class="jxr_linenumber" name="243" href="#243">243</a>             + <span class="jxr_string">"&lt;metadata&gt;\n&lt;groupId&gt;dummy&lt;/groupId&gt;\n&lt;artifactId&gt;dummy-merged-metadata-resource&lt;/artifactId&gt;\n"</span>
<a class="jxr_linenumber" name="244" href="#244">244</a>             + <span class="jxr_string">"&lt;versioning&gt;\n&lt;latest&gt;1.0&lt;/latest&gt;\n&lt;release&gt;1.0&lt;/release&gt;\n&lt;versions&gt;\n&lt;version&gt;1.0&lt;/version&gt;\n"</span>
<a class="jxr_linenumber" name="245" href="#245">245</a>             + <span class="jxr_string">"&lt;version&gt;2.5&lt;/version&gt;\n&lt;/versions&gt;\n&lt;lastUpdated&gt;20080708095554&lt;/lastUpdated&gt;\n&lt;/versioning&gt;\n&lt;/metadata&gt;"</span>,
<a class="jxr_linenumber" name="246" href="#246">246</a>                                      Charset.defaultCharset() );
<a class="jxr_linenumber" name="247" href="#247">247</a> 
<a class="jxr_linenumber" name="248" href="#248">248</a>         <em class="jxr_comment">//second metadata file</em>
<a class="jxr_linenumber" name="249" href="#249">249</a>         resourceName = <span class="jxr_string">"dummy/dummy-merged-metadata-resource/maven-metadata.xml"</span>;
<a class="jxr_linenumber" name="250" href="#250">250</a>         dummyInternalResourceFile = <strong class="jxr_keyword">new</strong> File( repoRootLast, resourceName );
<a class="jxr_linenumber" name="251" href="#251">251</a>         dummyInternalResourceFile.getParentFile().mkdirs();
<a class="jxr_linenumber" name="252" href="#252">252</a>         FileUtils.writeStringToFile( dummyInternalResourceFile, <span class="jxr_string">"&lt;?xml version=\&quot;1.0\&quot; encoding=\&quot;UTF-8\&quot;?&gt;"</span>
<a class="jxr_linenumber" name="253" href="#253">253</a>             + <span class="jxr_string">"&lt;metadata&gt;&lt;groupId&gt;dummy&lt;/groupId&gt;&lt;artifactId&gt;dummy-merged-metadata-resource&lt;/artifactId&gt;"</span>
<a class="jxr_linenumber" name="254" href="#254">254</a>             + <span class="jxr_string">"&lt;versioning&gt;&lt;latest&gt;2.0&lt;/latest&gt;&lt;release&gt;2.0&lt;/release&gt;&lt;versions&gt;&lt;version&gt;1.0&lt;/version&gt;"</span>
<a class="jxr_linenumber" name="255" href="#255">255</a>             + <span class="jxr_string">"&lt;version&gt;1.5&lt;/version&gt;&lt;version&gt;2.0&lt;/version&gt;&lt;/versions&gt;&lt;lastUpdated&gt;20080709095554&lt;/lastUpdated&gt;"</span>
<a class="jxr_linenumber" name="256" href="#256">256</a>             + <span class="jxr_string">"&lt;/versioning&gt;&lt;/metadata&gt;"</span>, Charset.defaultCharset() );
<a class="jxr_linenumber" name="257" href="#257">257</a> 
<a class="jxr_linenumber" name="258" href="#258">258</a>         WebRequest request = <strong class="jxr_keyword">new</strong> GetMethodWebRequest(
<a class="jxr_linenumber" name="259" href="#259">259</a>             <span class="jxr_string">"http://machine.com/repository/"</span> + REPO_GROUP_WITH_VALID_REPOS + <span class="jxr_string">"/dummy/"</span>
<a class="jxr_linenumber" name="260" href="#260">260</a>                 + <span class="jxr_string">"dummy-merged-metadata-resource/maven-metadata.xml"</span> );
<a class="jxr_linenumber" name="261" href="#261">261</a>         WebResponse response = getServletUnitClient().getResource( request );
<a class="jxr_linenumber" name="262" href="#262">262</a> 
<a class="jxr_linenumber" name="263" href="#263">263</a>         File returnedMetadata = <strong class="jxr_keyword">new</strong> File( <span class="jxr_string">"target/test-classes/retrievedMetadataFile.xml"</span> );
<a class="jxr_linenumber" name="264" href="#264">264</a>         FileUtils.writeStringToFile( returnedMetadata, response.getText() );
<a class="jxr_linenumber" name="265" href="#265">265</a>         ArchivaRepositoryMetadata metadata = MavenMetadataReader.read( returnedMetadata );
<a class="jxr_linenumber" name="266" href="#266">266</a> 
<a class="jxr_linenumber" name="267" href="#267">267</a>         assertResponseOK( response );
<a class="jxr_linenumber" name="268" href="#268">268</a>         assertEquals( <span class="jxr_string">"Versions list size"</span>, 4, metadata.getAvailableVersions().size() );
<a class="jxr_linenumber" name="269" href="#269">269</a>         assertTrue( <span class="jxr_string">"Versions list contains version 1.0"</span>, metadata.getAvailableVersions().contains( <span class="jxr_string">"1.0"</span> ) );
<a class="jxr_linenumber" name="270" href="#270">270</a>         assertTrue( <span class="jxr_string">"Versions list contains version 1.5"</span>, metadata.getAvailableVersions().contains( <span class="jxr_string">"1.5"</span> ) );
<a class="jxr_linenumber" name="271" href="#271">271</a>         assertTrue( <span class="jxr_string">"Versions list contains version 2.0"</span>, metadata.getAvailableVersions().contains( <span class="jxr_string">"2.0"</span> ) );
<a class="jxr_linenumber" name="272" href="#272">272</a>         assertTrue( <span class="jxr_string">"Versions list contains version 2.5"</span>, metadata.getAvailableVersions().contains( <span class="jxr_string">"2.5"</span> ) );
<a class="jxr_linenumber" name="273" href="#273">273</a> 
<a class="jxr_linenumber" name="274" href="#274">274</a>         <em class="jxr_comment">//check if the checksum files were generated</em>
<a class="jxr_linenumber" name="275" href="#275">275</a>         File checksumFileSha1 = <strong class="jxr_keyword">new</strong> File( repoRootFirst, resourceName + <span class="jxr_string">".sha1"</span> );
<a class="jxr_linenumber" name="276" href="#276">276</a>         checksumFileSha1.getParentFile().mkdirs();
<a class="jxr_linenumber" name="277" href="#277">277</a>         FileUtils.writeStringToFile( checksumFileSha1, <span class="jxr_string">"3290853214d3687134"</span>, Charset.defaultCharset() );
<a class="jxr_linenumber" name="278" href="#278">278</a> 
<a class="jxr_linenumber" name="279" href="#279">279</a>         File checksumFileMd5 = <strong class="jxr_keyword">new</strong> File( repoRootFirst, resourceName + <span class="jxr_string">".md5"</span> );
<a class="jxr_linenumber" name="280" href="#280">280</a>         checksumFileMd5.getParentFile().mkdirs();
<a class="jxr_linenumber" name="281" href="#281">281</a>         FileUtils.writeStringToFile( checksumFileMd5, <span class="jxr_string">"98745897234eda12836423"</span>, Charset.defaultCharset() );
<a class="jxr_linenumber" name="282" href="#282">282</a> 
<a class="jxr_linenumber" name="283" href="#283">283</a>         <em class="jxr_comment">// request the sha1 checksum of the metadata</em>
<a class="jxr_linenumber" name="284" href="#284">284</a>         request = <strong class="jxr_keyword">new</strong> GetMethodWebRequest( <span class="jxr_string">"http://machine.com/repository/"</span> + REPO_GROUP_WITH_VALID_REPOS + <span class="jxr_string">"/dummy/"</span>
<a class="jxr_linenumber" name="285" href="#285">285</a>                                                + <span class="jxr_string">"dummy-merged-metadata-resource/maven-metadata.xml.sha1"</span> );
<a class="jxr_linenumber" name="286" href="#286">286</a>         response = getServletUnitClient().getResource( request );
<a class="jxr_linenumber" name="287" href="#287">287</a> 
<a class="jxr_linenumber" name="288" href="#288">288</a>         assertResponseOK( response );
<a class="jxr_linenumber" name="289" href="#289">289</a>         assertEquals( <span class="jxr_string">"add113b0d7f8c6adb92a5015a7a3701081edf998  maven-metadata-group-with-valid-repos.xml"</span>,
<a class="jxr_linenumber" name="290" href="#290">290</a>                       response.getText() );
<a class="jxr_linenumber" name="291" href="#291">291</a> 
<a class="jxr_linenumber" name="292" href="#292">292</a>         <em class="jxr_comment">// request the md5 checksum of the metadata</em>
<a class="jxr_linenumber" name="293" href="#293">293</a>         request = <strong class="jxr_keyword">new</strong> GetMethodWebRequest( <span class="jxr_string">"http://machine.com/repository/"</span> + REPO_GROUP_WITH_VALID_REPOS + <span class="jxr_string">"/dummy/"</span>
<a class="jxr_linenumber" name="294" href="#294">294</a>                                                + <span class="jxr_string">"dummy-merged-metadata-resource/maven-metadata.xml.md5"</span> );
<a class="jxr_linenumber" name="295" href="#295">295</a>         response = getServletUnitClient().getResource( request );
<a class="jxr_linenumber" name="296" href="#296">296</a> 
<a class="jxr_linenumber" name="297" href="#297">297</a>         assertResponseOK( response );
<a class="jxr_linenumber" name="298" href="#298">298</a>         assertEquals( <span class="jxr_string">"5b85ea4aa5f52bb76760041a52f98de8  maven-metadata-group-with-valid-repos.xml"</span>,
<a class="jxr_linenumber" name="299" href="#299">299</a>                       response.getText().trim() );
<a class="jxr_linenumber" name="300" href="#300">300</a>     }
<a class="jxr_linenumber" name="301" href="#301">301</a> 
<a class="jxr_linenumber" name="302" href="#302">302</a>     <em class="jxr_comment">// MRM-901</em>
<a class="jxr_linenumber" name="303" href="#303">303</a>     @Test
<a class="jxr_linenumber" name="304" href="#304">304</a>     <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">void</strong> testBrowseWithTwoArtifactsWithSameGroupIdInRepos()
<a class="jxr_linenumber" name="305" href="#305">305</a>         <strong class="jxr_keyword">throws</strong> Exception
<a class="jxr_linenumber" name="306" href="#306">306</a>     {
<a class="jxr_linenumber" name="307" href="#307">307</a>         String resourceName = <span class="jxr_string">"dummy/dummy-artifact/1.0/dummy-artifact-1.0.txt"</span>;
<a class="jxr_linenumber" name="308" href="#308">308</a> 
<a class="jxr_linenumber" name="309" href="#309">309</a>         File dummyInternalResourceFile = <strong class="jxr_keyword">new</strong> File( repoRootFirst, resourceName );
<a class="jxr_linenumber" name="310" href="#310">310</a>         dummyInternalResourceFile.getParentFile().mkdirs();
<a class="jxr_linenumber" name="311" href="#311">311</a>         FileUtils.writeStringToFile( dummyInternalResourceFile, <span class="jxr_string">"first"</span>, Charset.defaultCharset() );
<a class="jxr_linenumber" name="312" href="#312">312</a> 
<a class="jxr_linenumber" name="313" href="#313">313</a>         resourceName = <span class="jxr_string">"dummy/dummy-artifact/2.0/dummy-artifact-2.0.txt"</span>;
<a class="jxr_linenumber" name="314" href="#314">314</a> 
<a class="jxr_linenumber" name="315" href="#315">315</a>         File dummyReleasesResourceFile = <strong class="jxr_keyword">new</strong> File( repoRootLast, resourceName );
<a class="jxr_linenumber" name="316" href="#316">316</a>         dummyReleasesResourceFile.getParentFile().mkdirs();
<a class="jxr_linenumber" name="317" href="#317">317</a>         FileUtils.writeStringToFile( dummyReleasesResourceFile, <span class="jxr_string">"last"</span>, Charset.defaultCharset() );
<a class="jxr_linenumber" name="318" href="#318">318</a> 
<a class="jxr_linenumber" name="319" href="#319">319</a>         WebRequest request = <strong class="jxr_keyword">new</strong> GetMethodWebRequest(
<a class="jxr_linenumber" name="320" href="#320">320</a>             <span class="jxr_string">"http://machine.com/repository/"</span> + REPO_GROUP_WITH_VALID_REPOS + <span class="jxr_string">"/dummy/dummy-artifact/"</span> );
<a class="jxr_linenumber" name="321" href="#321">321</a>         WebResponse response = getServletUnitClient().getResource( request );
<a class="jxr_linenumber" name="322" href="#322">322</a> 
<a class="jxr_linenumber" name="323" href="#323">323</a>         assertResponseOK( response );
<a class="jxr_linenumber" name="324" href="#324">324</a>         assertTrue( StringUtils.contains( response.getText(), <span class="jxr_string">"Collection"</span> ) );
<a class="jxr_linenumber" name="325" href="#325">325</a>         assertTrue( StringUtils.contains( response.getText(), <span class="jxr_string">"dummy/dummy-artifact"</span> ) );
<a class="jxr_linenumber" name="326" href="#326">326</a>         assertTrue( StringUtils.contains( response.getText(), <span class="jxr_string">"1.0"</span> ) );
<a class="jxr_linenumber" name="327" href="#327">327</a>         assertTrue( StringUtils.contains( response.getText(), <span class="jxr_string">"2.0"</span> ) );
<a class="jxr_linenumber" name="328" href="#328">328</a>     }
<a class="jxr_linenumber" name="329" href="#329">329</a> 
<a class="jxr_linenumber" name="330" href="#330">330</a>     <strong class="jxr_keyword">protected</strong> <strong class="jxr_keyword">void</strong> assertResponseMethodNotAllowed( WebResponse response )
<a class="jxr_linenumber" name="331" href="#331">331</a>     {
<a class="jxr_linenumber" name="332" href="#332">332</a>         assertNotNull( <span class="jxr_string">"Should have recieved a response"</span>, response );
<a class="jxr_linenumber" name="333" href="#333">333</a>         assertEquals( <span class="jxr_string">"Should have been an 405/Method Not Allowed response code."</span>,
<a class="jxr_linenumber" name="334" href="#334">334</a>                       HttpServletResponse.SC_METHOD_NOT_ALLOWED, response.getResponseCode() );
<a class="jxr_linenumber" name="335" href="#335">335</a>     }
<a class="jxr_linenumber" name="336" href="#336">336</a> 
<a class="jxr_linenumber" name="337" href="#337">337</a>     <strong class="jxr_keyword">protected</strong> RepositoryGroupConfiguration createRepositoryGroup( String id, List&lt;String&gt; repositories )
<a class="jxr_linenumber" name="338" href="#338">338</a>     {
<a class="jxr_linenumber" name="339" href="#339">339</a>         RepositoryGroupConfiguration repoGroupConfiguration = <strong class="jxr_keyword">new</strong> RepositoryGroupConfiguration();
<a class="jxr_linenumber" name="340" href="#340">340</a>         repoGroupConfiguration.setId( id );
<a class="jxr_linenumber" name="341" href="#341">341</a>         repoGroupConfiguration.setRepositories( repositories );
<a class="jxr_linenumber" name="342" href="#342">342</a>         <strong class="jxr_keyword">return</strong> repoGroupConfiguration;
<a class="jxr_linenumber" name="343" href="#343">343</a>     }
<a class="jxr_linenumber" name="344" href="#344">344</a> }
</pre>
<hr/><div id="footer">This page was automatically generated by <a href="http://maven.apache.org/">Maven</a></div></body>
</html>
