-
Notifications
You must be signed in to change notification settings - Fork 46
/
Copy pathGetOctopusToolVersionTests.cs
132 lines (103 loc) · 4.59 KB
/
GetOctopusToolVersionTests.cs
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Management.Automation;
using System.Management.Automation.Runspaces;
using System.Reflection;
using NUnit.Framework;
using Octoposh.Cmdlets;
using Octoposh.Model;
using Octopus.Client.Model;
namespace Octoposh.Tests
{
[TestFixture]
public class GetOctopusToolVersionTests
{
private static readonly string CmdletName = "Get-OctopusToolVersion";
private static readonly Type CmdletType = typeof(GetOctopusToolVersion);
private static readonly string Version1 = "1.0.0";
private static readonly string FakeVersion = "9000.0.0";
private static readonly string HighestVersion = "4.0.0";
private static readonly string AssetsPath = @"TestAssets\OctopusTools";
private static readonly string EmptyPath = @"TestAssets\EmptyFolder";
private static readonly string FakePath = @"AbsolutelyAFakePath\MoreFake";
[Test]
public void NotPassingAParameterReturnsMultipleVersions()
{
OctoposhEnvVariables.OctopusToolsFolder = Path.Combine(TestUtilities.TestsPath,AssetsPath);
var powershell = new CmdletRunspace().CreatePowershellcmdlet(CmdletName, CmdletType);
var results = powershell.Invoke<OctopusToolVersion>();
Assert.IsTrue(results.Count > 1);
}
[Test]
public void PassingLatestParameterReturnsHighestVersion()
{
OctoposhEnvVariables.OctopusToolsFolder = Path.Combine(TestUtilities.TestsPath, AssetsPath);
var parameters = new List<CmdletParameter>
{
new CmdletParameter()
{
Name = "Latest"
}
};
var powershell = new CmdletRunspace().CreatePowershellcmdlet(CmdletName, CmdletType,parameters);
var results = powershell.Invoke<OctopusToolVersion>();
Assert.IsTrue(results.Count == 1);
Assert.IsTrue(results[0].Version == Version.Parse(HighestVersion));
}
[Test]
public void GetToolVersionByVersion()
{
OctoposhEnvVariables.OctopusToolsFolder = Path.Combine(TestUtilities.TestsPath, AssetsPath);
var version = Version1;
var parameters = new List<CmdletParameter>
{
new CmdletParameter()
{
Name = "Version",
SingleValue = version
}
};
var powershell = new CmdletRunspace().CreatePowershellcmdlet(CmdletName, CmdletType, parameters);
var results = powershell.Invoke<OctopusToolVersion>();
Assert.IsTrue(results.Count == 1);
Assert.IsTrue(results[0].Version == Version.Parse(version));
}
[Test]
public void ThrowIfItCantFindSpecificVersion()
{
OctoposhEnvVariables.OctopusToolsFolder = Path.Combine(TestUtilities.TestsPath, AssetsPath);
var version = FakeVersion;
var parameters = new List<CmdletParameter>
{
new CmdletParameter()
{
Name = "Version",
SingleValue = version
}
};
var powershell = new CmdletRunspace().CreatePowershellcmdlet(CmdletName, CmdletType, parameters);
var ex = Assert.Throws<CmdletInvocationException>(() => powershell.Invoke<List<OctopusToolVersion>>());
StringAssert.StartsWith("Octo.exe version", ex.Message);
}
[Test]
public void ThrowIfItToolsFolderDoesNotExist()
{
OctoposhEnvVariables.OctopusToolsFolder = Path.Combine(TestUtilities.TestsPath, FakePath);
var powershell = new CmdletRunspace().CreatePowershellcmdlet(CmdletName, CmdletType);
var ex = Assert.Throws<CmdletInvocationException>(() => powershell.Invoke<List<OctopusToolVersion>>());
StringAssert.StartsWith("Could not find a part of the path", ex.Message);
}
[Test]
public void ThrowIfCantFindAnyOctoExeVersionsInFolder()
{
OctoposhEnvVariables.OctopusToolsFolder = Path.Combine(TestUtilities.TestsPath, EmptyPath);
var powershell = new CmdletRunspace().CreatePowershellcmdlet(CmdletName, CmdletType);
var ex = Assert.Throws<CmdletInvocationException>(() => powershell.Invoke<List<OctopusToolVersion>>());
StringAssert.StartsWith("No version of [Octo.exe] was found",ex.Message);
}
}
}