ccc3f6c0352ae64cf630139c2cee79c38ede6081
[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 \r
54   @Test\r
55   public void test_create_mock_package() throws IOException {\r
56     final File file = preparePackage();\r
57     System.out.println(file);\r
58   }\r
59 \r
60 \r
61   private File preparePackage() throws IOException {\r
62     @NotNull final File root = createTempDir();\r
63     final File spec = new File(root, "SamplePackage.nuspec");\r
64     FileUtil.copy(getTestDataPath("SamplePackage.nuspec"), spec);\r
65 \r
66     GeneralCommandLine cmd = new GeneralCommandLine();\r
67     cmd.setExePath(Paths.getPathToNuGet().getPath());\r
68     cmd.setWorkingDirectory(root);\r
69     cmd.addParameter("pack");\r
70     cmd.addParameter(spec.getPath());\r
71     cmd.addParameter("-Version");\r
72     long time = System.currentTimeMillis();\r
73     final long max = 65536;\r
74     String build = "";\r
75     for(int i = 0; i <4; i++) {\r
76       build = (Math.max(1, time % max)) + (build.length() == 0 ? "" : "." + build);\r
77       time /= max;\r
78     }\r
79     cmd.addParameter(build);\r
80     cmd.addParameter("-Verbose");\r
81 \r
82     final ExecResult result = SimpleCommandLineProcessRunner.runCommand(cmd, new byte[0]);\r
83     System.out.println(result.getStdout());\r
84     System.out.println(result.getStderr());\r
85 \r
86     Assert.assertEquals(0, result.getExitCode());\r
87 \r
88     File pkg = new File(root, "SamplePackage." + build + ".nupkg");\r
89     Assert.assertTrue(pkg.isFile());\r
90     return pkg;\r
91   }\r
92 \r
93   private void callPublishRunner(@NotNull final File pkg) throws RunBuildException {\r
94 \r
95     m.checking(new Expectations(){{\r
96       allowing(myPublishParameters).getFiles(); will(returnValue(Arrays.asList(pkg.getPath())));\r
97       allowing(myPublishParameters).getCreateOnly(); will(returnValue(true));\r
98       allowing(myPublishParameters).getNuGetExeFile(); will(returnValue(Paths.getPathToNuGet()));\r
99       allowing(myPublishParameters).getPublishSource(); will(returnValue(null));\r
100       allowing(myPublishParameters).getApiKey(); will(returnValue("88001628-cb42-4c35-91be-4015cf638bcf"));\r
101 \r
102       allowing(myParametersFactory).loadPublishParameters(myContext);will(returnValue(myPublishParameters));\r
103     }});\r
104 \r
105     NuGetPackagesCollectorImpl collector = new NuGetPackagesCollectorImpl();\r
106         PackageUsages pu = new PackageUsagesImpl(\r
107                 collector,\r
108                 new NuGetPackagesConfigParser()\r
109         );\r
110 \r
111     final PackagesPublishRunner runner = new PackagesPublishRunner(\r
112             new NuGetActionFactoryImpl(executingFactory(), pu, new CommandFactoryImpl()), myParametersFactory);\r
113 \r
114     final BuildProcess proc = runner.createBuildProcess(myBuild, myContext);\r
115     assertRunSuccessfully(proc, BuildFinishedStatus.FINISHED_SUCCESS);\r
116   }\r
117 }\r