download nuget package test
[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.FeedPackage;\r
21 import jetbrains.buildServer.nuget.server.feed.reader.NuGetFeedReader;\r
22 import jetbrains.buildServer.nuget.server.feed.reader.impl.*;\r
23 import jetbrains.buildServer.util.FileUtil;\r
24 import org.testng.Assert;\r
25 import org.testng.annotations.AfterMethod;\r
26 import org.testng.annotations.BeforeMethod;\r
27 import org.testng.annotations.Test;\r
28 \r
29 import java.io.BufferedInputStream;\r
30 import java.io.File;\r
31 import java.io.FileInputStream;\r
32 import java.io.IOException;\r
33 import java.util.Collection;\r
34 import java.util.zip.ZipEntry;\r
35 import java.util.zip.ZipInputStream;\r
36 \r
37 /**\r
38  * Created by Eugene Petrenko (eugene.petrenko@gmail.com)\r
39  * Date: 11.08.11 16:04\r
40  */\r
41 public class FeedReaderTest extends BaseTestCase {\r
42   private NuGetFeedReader myReader;\r
43   private FeedClient myClient;\r
44 \r
45   @BeforeMethod\r
46   @Override\r
47   protected void setUp() throws Exception {\r
48     super.setUp();\r
49     myClient = new FeedClient();\r
50     final FeedGetMethodFactory methods = new FeedGetMethodFactory();\r
51     myReader = new NuGetFeedReaderImpl(myClient, new UrlResolver(myClient, methods), methods, new PackagesFeedParser());\r
52   }\r
53 \r
54   @AfterMethod\r
55   @Override\r
56   protected void tearDown() throws Exception {\r
57     super.tearDown();\r
58     myClient.dispose();\r
59   }\r
60 \r
61   @Test\r
62   public void testRead() throws IOException {\r
63     final Collection<FeedPackage> feedPackages = myReader.queryPackageVersions(FeedConstants.FEED_URL, "NuGet.CommandLine");\r
64     Assert.assertTrue(feedPackages.size() > 0);\r
65 \r
66     boolean hasLatest = false;\r
67     for (FeedPackage feedPackage : feedPackages) {\r
68       Assert.assertFalse(hasLatest && feedPackage.isLatestVersion(), "There could be only one latest");\r
69       hasLatest |= feedPackage.isLatestVersion();\r
70       System.out.println("feedPackage = " + feedPackage);\r
71     }\r
72   }\r
73 \r
74   @Test\r
75   public void testDownloadLatest() throws IOException {\r
76     final Collection<FeedPackage> packages = myReader.queryPackageVersions(FeedConstants.FEED_URL, "NuGet.CommandLine");\r
77     FeedPackage latest = null;\r
78     for (FeedPackage aPackage : packages) {\r
79       if (aPackage.isLatestVersion()) {\r
80         latest = aPackage;\r
81       }\r
82     }\r
83     Assert.assertNotNull(latest, "there should be the latest package");\r
84 \r
85     final File pkd = createTempFile();\r
86     myReader.downloadPackage(latest, pkd);\r
87 \r
88     Assert.assertTrue(pkd.length() > 100);\r
89     boolean hasNuGetExe = false;\r
90     ZipInputStream zip = new ZipInputStream(new BufferedInputStream(new FileInputStream(pkd)));\r
91     try {\r
92       for (ZipEntry ze = zip.getNextEntry(); ze != null; ze = zip.getNextEntry()) {\r
93         String name = ze.getName();\r
94         System.out.println("ze = " + name);\r
95         name = name.toLowerCase();\r
96         hasNuGetExe |= name.endsWith("/NuGet.exe".toLowerCase());\r
97         hasNuGetExe |= name.endsWith("\\NuGet.exe".toLowerCase());\r
98       }\r
99     } finally {\r
100       FileUtil.close(zip);\r
101     }\r
102 \r
103     Assert.assertTrue(hasNuGetExe, "package should contain nuget.exe");\r
104   }\r
105 }\r