6f19462e75a9992bd1e74969c5ba727167036a4c
[teamcity/dotNetPackagesSupport.git] / nuget-tests / src / jetbrains / buildServer / nuget / tests / integration / FeedReaderTest.java
1 /*\r
2  * Copyright 2000-2011 JetBrains s.r.o.\r
3  *\r
4  * Licensed under the Apache License, Version 2.0 (the "License");\r
5  * you may not use this file except in compliance with the License.\r
6  * You may obtain a copy of the License at\r
7  *\r
8  * http://www.apache.org/licenses/LICENSE-2.0\r
9  *\r
10  * Unless required by applicable law or agreed to in writing, software\r
11  * distributed under the License is distributed on an "AS IS" BASIS,\r
12  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r
13  * See the License for the specific language governing permissions and\r
14  * limitations under the License.\r
15  */\r
16 \r
17 package jetbrains.buildServer.nuget.tests.integration;\r
18 \r
19 import jetbrains.buildServer.BaseTestCase;\r
20 import jetbrains.buildServer.nuget.server.feed.reader.FeedConstants;\r
21 import jetbrains.buildServer.nuget.server.feed.reader.FeedPackage;\r
22 import jetbrains.buildServer.nuget.server.feed.reader.NuGetFeedReader;\r
23 import jetbrains.buildServer.nuget.server.feed.reader.impl.*;\r
24 import jetbrains.buildServer.util.FileUtil;\r
25 import org.testng.Assert;\r
26 import org.testng.annotations.AfterMethod;\r
27 import org.testng.annotations.BeforeMethod;\r
28 import org.testng.annotations.Test;\r
29 \r
30 import java.io.BufferedInputStream;\r
31 import java.io.File;\r
32 import java.io.FileInputStream;\r
33 import java.io.IOException;\r
34 import java.util.Collection;\r
35 import java.util.zip.ZipEntry;\r
36 import java.util.zip.ZipInputStream;\r
37 \r
38 /**\r
39  * Created by Eugene Petrenko (eugene.petrenko@gmail.com)\r
40  * Date: 11.08.11 16:04\r
41  */\r
42 public class FeedReaderTest extends BaseTestCase {\r
43   private NuGetFeedReader myReader;\r
44   private FeedHttpClientHolder myClient;\r
45 \r
46   @BeforeMethod\r
47   @Override\r
48   protected void setUp() throws Exception {\r
49     super.setUp();\r
50     myClient = new FeedHttpClientHolder();\r
51     final FeedGetMethodFactory methods = new FeedGetMethodFactory();\r
52     myReader = new NuGetFeedReaderImpl(myClient, new UrlResolverImpl(myClient, methods), methods, new PackagesFeedParserImpl());\r
53   }\r
54 \r
55   @AfterMethod\r
56   @Override\r
57   protected void tearDown() throws Exception {\r
58     super.tearDown();\r
59     myClient.dispose();\r
60   }\r
61 \r
62   @Test\r
63   public void testRead() throws IOException {\r
64     final Collection<FeedPackage> feedPackages = myReader.queryPackageVersions(FeedConstants.FEED_URL, "NuGet.CommandLine");\r
65     Assert.assertTrue(feedPackages.size() > 0);\r
66 \r
67     boolean hasLatest = false;\r
68     for (FeedPackage feedPackage : feedPackages) {\r
69       Assert.assertFalse(hasLatest && feedPackage.isLatestVersion(), "There could be only one latest");\r
70       hasLatest |= feedPackage.isLatestVersion();\r
71       System.out.println("feedPackage = " + feedPackage);\r
72     }\r
73   }\r
74 \r
75   @Test\r
76   public void testDownloadLatest() throws IOException {\r
77     final Collection<FeedPackage> packages = myReader.queryPackageVersions(FeedConstants.FEED_URL, "NuGet.CommandLine");\r
78     FeedPackage latest = null;\r
79     for (FeedPackage aPackage : packages) {\r
80       if (aPackage.isLatestVersion()) {\r
81         latest = aPackage;\r
82       }\r
83     }\r
84     Assert.assertNotNull(latest, "there should be the latest package");\r
85 \r
86     final File pkd = createTempFile();\r
87     myReader.downloadPackage(latest, pkd);\r
88 \r
89     Assert.assertTrue(pkd.length() > 100);\r
90     boolean hasNuGetExe = false;\r
91     ZipInputStream zip = new ZipInputStream(new BufferedInputStream(new FileInputStream(pkd)));\r
92     try {\r
93       for (ZipEntry ze = zip.getNextEntry(); ze != null; ze = zip.getNextEntry()) {\r
94         String name = ze.getName();\r
95         System.out.println("ze = " + name);\r
96         name = name.toLowerCase();\r
97         hasNuGetExe |= name.endsWith("/NuGet.exe".toLowerCase());\r
98         hasNuGetExe |= name.endsWith("\\NuGet.exe".toLowerCase());\r
99       }\r
100     } finally {\r
101       FileUtil.close(zip);\r
102     }\r
103 \r
104     Assert.assertTrue(hasNuGetExe, "package should contain nuget.exe");\r
105   }\r
106 }\r