implement feed xml parser + tests
[teamcity/dotNetPackagesSupport.git] / nuget-tests / src / jetbrains / buildServer / nuget / tests / server / FeedPackagesParserTest.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.server;\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.PackagesFeedParser;\r
22 import jetbrains.buildServer.nuget.tests.integration.Paths;\r
23 import jetbrains.buildServer.util.FileUtil;\r
24 import org.jdom.Element;\r
25 import org.jdom.JDOMException;\r
26 import org.testng.Assert;\r
27 import org.testng.annotations.Test;\r
28 \r
29 import java.io.IOException;\r
30 import java.util.Collection;\r
31 \r
32 /**\r
33  * Created by Eugene Petrenko (eugene.petrenko@gmail.com)\r
34  * Date: 12.08.11 13:44\r
35  */\r
36 public class FeedPackagesParserTest extends BaseTestCase {\r
37   private PackagesFeedParser myParser = new PackagesFeedParser();\r
38 \r
39   @Test\r
40   public void test_ParseRealFeed() throws JDOMException, IOException {\r
41     final Element doc = FileUtil.parseDocument(Paths.getTestDataPath("feed/reader/feed-response.xml"));\r
42     boolean hasLatest = false;\r
43     final Collection<FeedPackage> feedPackages = myParser.readPackages(doc);\r
44     for (FeedPackage feedPackage : feedPackages) {\r
45       Assert.assertFalse(hasLatest && feedPackage.isLatestVersion(), "There could be only one latest");\r
46       hasLatest |= feedPackage.isLatestVersion();\r
47       System.out.println("feedPackage = " + feedPackage);\r
48     }\r
49   }\r
50 \r
51   @Test\r
52   public void test_ParseOnePackage() throws JDOMException, IOException {\r
53     final Element doc = FileUtil.parseDocument(Paths.getTestDataPath("feed/reader/feed-one.xml"));\r
54     final Collection<FeedPackage> packages = myParser.readPackages(doc);\r
55 \r
56     Assert.assertEquals(packages.size(), 1);\r
57     final FeedPackage pkg = packages.iterator().next();\r
58 \r
59     Assert.assertEquals(pkg.getAtomId(), "http://packages.nuget.org/v1/FeedService.svc/Packages(Id='NuGet.CommandLine',Version='1.0.11220.26')");\r
60     Assert.assertEquals(pkg.getDownloadUrl(), "http://packages.nuget.org/v1/Package/Download/NuGet.CommandLine/1.0.11220.26");\r
61     Assert.assertEquals(pkg.getInfo().getId(), "NuGet.CommandLine");\r
62     Assert.assertEquals(pkg.getInfo().getVersion(), "1.0.11220.26");\r
63     Assert.assertEquals(pkg.isLatestVersion(), false);\r
64     Assert.assertTrue(pkg.getDescription().length() > 0, "package should have deseciription");\r
65   }\r
66 \r
67   @Test\r
68   public void test_broken() {\r
69     Element el = new Element("broken");\r
70     final Collection<FeedPackage> feedPackages = myParser.readPackages(el);\r
71     Assert.assertTrue(feedPackages.isEmpty());\r
72   }\r
73 }\r