-
-
Notifications
You must be signed in to change notification settings - Fork 197
/
Copy pathexport-options-plist-service.ts
111 lines (101 loc) · 4.62 KB
/
export-options-plist-service.ts
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
import { Yok } from "../../../lib/common/yok";
import { ExportOptionsPlistService } from "../../../lib/services/ios/export-options-plist-service";
import { assert } from "chai";
import { EOL } from "os";
let actualPlistTemplate: string = null;
const projectName = "myProjectName";
const projectRoot = "/my/test/project/platforms/ios";
const archivePath = "/my/test/archive/path";
function createTestInjector() {
const injector = new Yok();
injector.register("fs", {
writeFile: (exportPath: string, plistTemplate: string) => {
actualPlistTemplate = plistTemplate;
}
});
injector.register("exportOptionsPlistService", ExportOptionsPlistService);
return injector;
}
describe("ExportOptionsPlistService", () => {
describe("createDevelopmentExportOptionsPlist", () => {
const testCases = [
{
name: "should create default export options plist",
buildConfig: {}
},
{
name: "should create export options plist with provision",
buildConfig: { provision: "myTestProvision" },
expectedPlist: "<key>provisioningProfiles</key> <dict> <key>org.nativescript.myTestApp</key> <string>myTestProvision</string> </dict>"
},
{
name: "should create export options plist with mobileProvisionIdentifier",
buildConfig: { mobileProvisionIdentifier: "myTestProvision" },
expectedPlist: "<key>provisioningProfiles</key> <dict> <key>org.nativescript.myTestApp</key> <string>myTestProvision</string> </dict>"
},
{
name: "should create export options plist with Production iCloudContainerEnvironment",
buildConfig: { iCloudContainerEnvironment: "Production" },
expectedPlist: "<key>iCloudContainerEnvironment</key> <string>Production</string>"
}
];
_.each(testCases, testCase => {
_.each(["Development", "AdHoc", "Distribution", "Enterprise"], provisionType => {
it(testCase.name, () => {
const injector = createTestInjector();
const exportOptionsPlistService = injector.resolve("exportOptionsPlistService");
exportOptionsPlistService.getExportOptionsMethod = () => provisionType;
const projectData = { projectName, projectIdentifiers: { ios: "org.nativescript.myTestApp" }};
exportOptionsPlistService.createDevelopmentExportOptionsPlist(archivePath, projectData, testCase.buildConfig);
const template = actualPlistTemplate.split(EOL).join(" ");
assert.isTrue(template.indexOf(`<key>method</key> <string>${provisionType}</string>`) > 0);
assert.isTrue(template.indexOf("<key>uploadBitcode</key> <false/>") > 0);
assert.isTrue(template.indexOf("<key>compileBitcode</key> <false/>") > 0);
if (testCase.expectedPlist) {
assert.isTrue(template.indexOf(testCase.expectedPlist) > 0);
}
});
});
});
});
describe("createDistributionExportOptionsPlist", () => {
const testCases = [
{
name: "should create default export options plist",
buildConfig: {}
},
{
name: "should create export options plist with provision",
buildConfig: { provision: "myTestProvision" },
expectedPlist: "<key>provisioningProfiles</key> <dict> <key>org.nativescript.myTestApp</key> <string>myTestProvision</string> </dict>"
},
{
name: "should create export options plist with mobileProvisionIdentifier",
buildConfig: { mobileProvisionIdentifier: "myTestProvision" },
expectedPlist: "<key>provisioningProfiles</key> <dict> <key>org.nativescript.myTestApp</key> <string>myTestProvision</string> </dict>"
},
{
name: "should create export options plist with teamID",
buildConfig: { teamId: "myTeamId" },
expectedPlist: "<key>teamID</key> <string>myTeamId</string>"
}
];
_.each(testCases, testCase => {
it(testCase.name, () => {
const injector = createTestInjector();
const exportOptionsPlistService = injector.resolve("exportOptionsPlistService");
exportOptionsPlistService.getExportOptionsMethod = () => "app-store";
const projectData = { projectName, projectIdentifiers: { ios: "org.nativescript.myTestApp" }};
exportOptionsPlistService.createDistributionExportOptionsPlist(projectRoot, projectData, testCase.buildConfig);
const template = actualPlistTemplate.split(EOL).join(" ");
assert.isTrue(template.indexOf("<key>method</key> <string>app-store</string>") > 0);
assert.isTrue(template.indexOf("<key>uploadBitcode</key> <false/>") > 0);
assert.isTrue(template.indexOf("<key>compileBitcode</key> <false/>") > 0);
assert.isTrue(template.indexOf("<key>uploadSymbols</key> <false/>") > 0);
if (testCase.expectedPlist) {
assert.isTrue(template.indexOf(testCase.expectedPlist) > 0);
}
});
});
});
});