polish integration test
[teamcity/dotNetPackagesSupport.git] / nuget-tests / src / jetbrains / buildServer / nuget / tests / integration / PackagesPublishIntegrationTest.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 com.intellij.execution.configurations.GeneralCommandLine;\r
20 import jetbrains.buildServer.ExecResult;\r
21 import jetbrains.buildServer.RunBuildException;\r
22 import jetbrains.buildServer.SimpleCommandLineProcessRunner;\r
23 import jetbrains.buildServer.agent.BuildFinishedStatus;\r
24 import jetbrains.buildServer.agent.BuildProcess;\r
25 import jetbrains.buildServer.nuget.agent.commands.impl.CommandFactoryImpl;\r
26 import jetbrains.buildServer.nuget.agent.commands.impl.NuGetActionFactoryImpl;\r
27 import jetbrains.buildServer.nuget.agent.install.PackageUsages;\r
28 import jetbrains.buildServer.nuget.agent.install.impl.NuGetPackagesCollectorImpl;\r
29 import jetbrains.buildServer.nuget.agent.install.impl.NuGetPackagesConfigParser;\r
30 import jetbrains.buildServer.nuget.agent.install.impl.PackageUsagesImpl;\r
31 import jetbrains.buildServer.nuget.agent.publish.PackagesPublishRunner;\r
32 import jetbrains.buildServer.util.FileUtil;\r
33 import org.jetbrains.annotations.NotNull;\r
34 import org.jmock.Expectations;\r
35 import org.testng.Assert;\r
36 import org.testng.annotations.Test;\r
37 \r
38 import java.io.File;\r
39 import java.io.IOException;\r
40 import java.util.Arrays;\r
41 \r
42 /**\r
43  * Created by Eugene Petrenko (eugene.petrenko@gmail.com)\r
44  * Date: 22.07.11 1:25\r
45  */\r
46 public class PackagesPublishIntegrationTest extends IntegrationTestBase {\r
47 \r
48   @Test\r
49   public void test_publish_packages() throws IOException, RunBuildException {\r
50     final File pkg = preparePackage();\r
51     callPublishRunner(pkg);\r
52 \r
53     Assert.assertTrue(getCommandsOutput().contains("Your package was uploaded"));\r
54   }\r
55 \r
56   @Test\r
57   public void test_create_mock_package() throws IOException {\r
58     final File file = preparePackage();\r
59     System.out.println(file);\r
60   }\r
61 \r
62 \r
63   private File preparePackage() throws IOException {\r
64     @NotNull final File root = createTempDir();\r
65     final File spec = new File(root, "SamplePackage.nuspec");\r
66     FileUtil.copy(getTestDataPath("SamplePackage.nuspec"), spec);\r
67 \r
68     GeneralCommandLine cmd = new GeneralCommandLine();\r
69     cmd.setExePath(Paths.getPathToNuGet().getPath());\r
70     cmd.setWorkingDirectory(root);\r
71     cmd.addParameter("pack");\r
72     cmd.addParameter(spec.getPath());\r
73     cmd.addParameter("-Version");\r
74     long time = System.currentTimeMillis();\r
75     final long max = 65536;\r
76     String build = "";\r
77     for(int i = 0; i <4; i++) {\r
78       build = (Math.max(1, time % max)) + (build.length() == 0 ? "" : "." + build);\r
79       time /= max;\r
80     }\r
81     cmd.addParameter(build);\r
82     cmd.addParameter("-Verbose");\r
83 \r
84     final ExecResult result = SimpleCommandLineProcessRunner.runCommand(cmd, new byte[0]);\r
85     System.out.println(result.getStdout());\r
86     System.out.println(result.getStderr());\r
87 \r
88     Assert.assertEquals(0, result.getExitCode());\r
89 \r
90     File pkg = new File(root, "SamplePackage." + build + ".nupkg");\r
91     Assert.assertTrue(pkg.isFile());\r
92     return pkg;\r
93   }\r
94 \r
95   private void callPublishRunner(@NotNull final File pkg) throws RunBuildException {\r
96 \r
97     m.checking(new Expectations(){{\r
98       allowing(myPublishParameters).getFiles(); will(returnValue(Arrays.asList(pkg.getPath())));\r
99       allowing(myPublishParameters).getCreateOnly(); will(returnValue(true));\r
100       allowing(myPublishParameters).getNuGetExeFile(); will(returnValue(Paths.getPathToNuGet()));\r
101       allowing(myPublishParameters).getPublishSource(); will(returnValue(null));\r
102       allowing(myPublishParameters).getApiKey(); will(returnValue(getQ()));\r
103 \r
104       allowing(myParametersFactory).loadPublishParameters(myContext);will(returnValue(myPublishParameters));\r
105     }});\r
106 \r
107     NuGetPackagesCollectorImpl collector = new NuGetPackagesCollectorImpl();\r
108         PackageUsages pu = new PackageUsagesImpl(\r
109                 collector,\r
110                 new NuGetPackagesConfigParser()\r
111         );\r
112 \r
113     final PackagesPublishRunner runner = new PackagesPublishRunner(\r
114             new NuGetActionFactoryImpl(executingFactory(), pu, new CommandFactoryImpl()), myParametersFactory);\r
115 \r
116     final BuildProcess proc = runner.createBuildProcess(myBuild, myContext);\r
117     assertRunSuccessfully(proc, BuildFinishedStatus.FINISHED_SUCCESS);\r
118   }\r
119 \r
120   private String getQ() {\r
121     final int i1 = 88001628;\r
122     final int universe = 42;\r
123     final int num = 4015;\r
124     final String nuget = 91 + "be" + "-" + num + "cf638bcf";\r
125     return (i1 + "-" + "cb" + universe + "-" + 4 + "c") + 35 + "-" + nuget;\r
126   }\r
127 }\r