some tests on the logins of nuget packages
[teamcity/dotNetPackagesSupport.git] / nuget-tests / src / jetbrains / buildServer / nuget / tests / server / tools / ToolPackerTest.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.tools;\r
18 \r
19 import jetbrains.buildServer.BaseTestCase;\r
20 import jetbrains.buildServer.nuget.server.toolRegistry.impl.ToolPacker;\r
21 import jetbrains.buildServer.util.FileUtil;\r
22 import org.jetbrains.annotations.NotNull;\r
23 import org.testng.Assert;\r
24 import org.testng.annotations.BeforeMethod;\r
25 import org.testng.annotations.Test;\r
26 \r
27 import java.io.*;\r
28 import java.util.Arrays;\r
29 import java.util.Set;\r
30 import java.util.TreeSet;\r
31 import java.util.zip.ZipEntry;\r
32 import java.util.zip.ZipInputStream;\r
33 \r
34 /**\r
35  * Created by Eugene Petrenko (eugene.petrenko@gmail.com)\r
36  * Date: 16.08.11 1:50\r
37  */\r
38 public class ToolPackerTest extends BaseTestCase {\r
39   private ToolPacker myPacker;\r
40 \r
41   @BeforeMethod\r
42   @Override\r
43   protected void setUp() throws Exception {\r
44     super.setUp();\r
45     myPacker = new ToolPacker();\r
46   }\r
47 \r
48   @Test\r
49   public void testPack() throws IOException {\r
50     final String toolId = "3.4.56.3";\r
51     final File root = createTempDir();\r
52     final File plugin = myPacker.packTool(toolId, root);\r
53 \r
54     assertZip(plugin, "teamcity-plugin.xml");\r
55   }\r
56 \r
57   @Test\r
58   public void testPack_oneFile() throws IOException {\r
59     final String toolId = "3.4.56.3";\r
60     final File root = createTempDir();\r
61     FileUtil.writeFile(new File(root, "aaa.txt"), "content");\r
62     final File plugin = myPacker.packTool(toolId, root);\r
63 \r
64     assertZip(plugin, "teamcity-plugin.xml", "aaa.txt");\r
65   }\r
66 \r
67   @Test\r
68   public void testPack_oneFile2() throws IOException {\r
69     final String toolId = "3.4.56.3";\r
70     final File root = createTempDir();\r
71     FileUtil.writeFile(new File(root, "a/b/c/d/aaa.txt"){{getParentFile().mkdirs();}}, "content");\r
72     final File plugin = myPacker.packTool(toolId, root);\r
73 \r
74     assertZip(plugin, "teamcity-plugin.xml", "a/b/c/d/aaa.txt");\r
75   }\r
76 \r
77   private void assertZip(@NotNull final File zip, @NotNull String... paths) throws IOException {\r
78     Set<String> pathsToContain = new TreeSet<String>(Arrays.asList(paths));\r
79     Set<String> actualPaths = new TreeSet<String>();\r
80     ZipInputStream zis = new ZipInputStream(new BufferedInputStream(new FileInputStream(zip)));\r
81     try {\r
82       ZipEntry e;\r
83       while((e = zis.getNextEntry()) != null) {\r
84         pathsToContain.remove(e.getName());\r
85         actualPaths.add(e.getName());\r
86       }\r
87     } finally {\r
88       FileUtil.close(zis);\r
89     }\r
90 \r
91     Assert.assertTrue(pathsToContain.isEmpty(), "Should contain: " + pathsToContain + ", but was: " + actualPaths);\r
92   }\r
93 \r
94 \r
95 }\r