Skip to content

Commit c98deac

Browse files
authored
Merge pull request #583 from arturCwiklinsky/master
Version 3.50
2 parents 781b000 + c63a6b1 commit c98deac

4 files changed

Lines changed: 87 additions & 40 deletions

File tree

pom.xml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@
33
<modelVersion>4.0.0</modelVersion>
44
<groupId>com.testdroid</groupId>
55
<artifactId>testdroid-api</artifactId>
6-
<version>3.49.0</version>
6+
<version>3.50.0</version>
77
<packaging>jar</packaging>
88
<name>Bitbar API v2</name>
99
<url>https://github.com/bitbar/testdroid-api</url>
@@ -19,7 +19,7 @@
1919
<jacoco-maven-plugin.skip>true</jacoco-maven-plugin.skip>
2020
<!-- disable default deployment -->
2121
<maven.deploy.skip>true</maven.deploy.skip>
22-
<org.springframework.boot.spring-boot-dependencies>3.5.7</org.springframework.boot.spring-boot-dependencies>
22+
<org.springframework.boot.spring-boot-dependencies>3.5.9</org.springframework.boot.spring-boot-dependencies>
2323
<org.apache.commons.collections4.version>4.5.0</org.apache.commons.collections4.version>
2424
<org.apache.commons.commons-rng-simple.version>1.6</org.apache.commons.commons-rng-simple.version>
2525
<org.apache.commons.commons-text.version>1.15.0</org.apache.commons.commons-text.version>

src/main/java/com/testdroid/api/dto/MappingKey.java

Lines changed: 2 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@ private MappingKey() {
99
}
1010

1111
// @formatter:off
12+
public static final String ABORT_TIME = "abortTime";
1213
public static final String ABORTED_DEVICE_COUNT = "abortedDeviceCount";
1314
public static final String ACCEPT = "accept";
1415
public static final String ACCESS_GROUP_ID = "accessGroupId";
@@ -33,7 +34,6 @@ private MappingKey() {
3334
public static final String ALWAYS_VALID = "alwaysValid";
3435
public static final String ANDROID_DEVICE_LIMIT = "androidDeviceLimit";
3536
public static final String ANDROID_ENABLED = "androidEnabled";
36-
public static final String ANDROID_PROJECT_LIMIT = "androidProjectLimit";
3737
public static final String API_KEY = "apiKey";
3838
public static final String API_LEVEL = "apiLevel";
3939
public static final String ARCHITECTURE = "architecture";
@@ -98,7 +98,6 @@ private MappingKey() {
9898
public static final String DESCRIPTION = "description";
9999
public static final String DESKTOP_DEVICE_LIMIT = "desktopDeviceLimit";
100100
public static final String DESKTOP_ENABLED = "desktopEnabled";
101-
public static final String DESKTOP_PROJECT_LIMIT = "desktopProjectLimit";
102101
public static final String DESTINATION = "destination";
103102
public static final String DEVICE_CLEANUP_CONFIGURATION_ID = "deviceCleanupConfigurationId";
104103
public static final String DEVICES = "devices";
@@ -163,8 +162,6 @@ private MappingKey() {
163162
public static final String FREE_TRIAL = "freeTrial";
164163
public static final String FROM_TIME = "fromTime";
165164
public static final String GLOBAL = "global";
166-
public static final String GLOBAL_DEVICE_LIMIT = "globalDeviceLimit";
167-
public static final String GLOBAL_PROJECT_LIMIT = "globalProjectLimit";
168165
public static final String GROUPING = "grouping";
169166
public static final String GROUP_ID = "groupId";
170167
public static final String HASH = "hash";
@@ -184,14 +181,12 @@ private MappingKey() {
184181
public static final String INCLUDE_FRAMEWORKS = "includeFrameworks";
185182
public static final String INIT_STEP = "initStep";
186183
public static final String INPUT_TYPE = "inputType";
187-
public static final String INSPECTOR_ENABLED = "inspectorEnabled";
188184
public static final String INSTALL_URL = "installUrl";
189185
public static final String INTERNAL_STORAGE = "internalStorage";
190186
public static final String INTERNET_ACCESS = "internetAccess";
191187
public static final String IN_USE = "inUse";
192188
public static final String IOS_DEVICE_LIMIT = "iosDeviceLimit";
193189
public static final String IOS_ENABLED = "iosEnabled";
194-
public static final String IOS_PROJECT_LIMIT = "iosProjectLimit";
195190
public static final String IP_ADDRESS = "ipAddress";
196191
public static final String IS_ACCOUNT_OWNER = "isAccountOwner";
197192
public static final String IS_ADMIN = "isAdmin";
@@ -216,6 +211,7 @@ private MappingKey() {
216211
public static final String LAST_PAYMENT_DATE = "lastPaymentDate";
217212
public static final String LAST_PAYMENT_TIME = "lastPaymentTime";
218213
public static final String LAST_RETRY_TIME = "lastRetryTime";
214+
public static final String LEGACY = "legacy";
219215
public static final String LEVEL = "level";
220216
public static final String LIVE_TESTING_ONLY= "liveTestingOnly";
221217
public static final String LOCATION = "location";

src/main/java/com/testdroid/api/model/APIDeviceSession.java

Lines changed: 21 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -120,6 +120,8 @@ public boolean isSettable() {
120120

121121
private Date endTime;
122122

123+
private Date abortTime;
124+
123125
private String excludeReason;
124126

125127
private String externalId;
@@ -173,15 +175,15 @@ public APIDeviceSession() {
173175
public APIDeviceSession(
174176
Long id, String externalId, String clientSideId, Long userId, String userEmail, Long accountId,
175177
APIDeviceSession.Type type, LocalDateTime createTime, LocalDateTime startTime, LocalDateTime installTime,
176-
LocalDateTime endTime, Long timeLimit, APIDeviceSession.State state, Integer testCasePassedCount,
177-
Integer testCaseFailedCount, Integer testCaseSkippedCount, Long deviceModelId, String displayName,
178-
String deviceManufacturer, Integer creditsPrice, String imagePrefix, Integer imageTop, Integer imageLeft,
179-
Integer imageWidth, Integer imageHeight, Integer imageCornerRadius, Integer frameExtraWidth,
180-
APIDevice.OsType osType, APIDevice.Platform platform, Boolean locked, Boolean enabled,
181-
String releaseVersion, Integer apiLevel, ExcludeReason excludeReason, Long deviceInstanceId,
182-
RetryState retryState, Integer autoRetriesLeftCount, Long duration, Long projectId, String projectName,
183-
Long testRunId, String testRunName, Float successRatio, String name, APIDeviceSessionConfig config,
184-
Boolean biometricInstrumentation, String location, Boolean retryable) {
178+
LocalDateTime endTime, LocalDateTime abortTime, Long timeLimit, APIDeviceSession.State state,
179+
Integer testCasePassedCount, Integer testCaseFailedCount, Integer testCaseSkippedCount, Long deviceModelId,
180+
String displayName, String deviceManufacturer, Integer creditsPrice, String imagePrefix, Integer imageTop,
181+
Integer imageLeft, Integer imageWidth, Integer imageHeight, Integer imageCornerRadius,
182+
Integer frameExtraWidth, APIDevice.OsType osType, APIDevice.Platform platform, Boolean locked,
183+
Boolean enabled, String releaseVersion, Integer apiLevel, ExcludeReason excludeReason,
184+
Long deviceInstanceId, RetryState retryState, Integer autoRetriesLeftCount, Long duration, Long projectId,
185+
String projectName, Long testRunId, String testRunName, Float successRatio, String name,
186+
APIDeviceSessionConfig config, Boolean biometricInstrumentation, String location, Boolean retryable) {
185187
super(id);
186188
this.externalId = externalId;
187189
this.clientSideId = clientSideId;
@@ -193,6 +195,7 @@ public APIDeviceSession(
193195
this.startTime = TimeConverter.toDate(startTime);
194196
this.installTime = TimeConverter.toDate(installTime);
195197
this.endTime = TimeConverter.toDate(endTime);
198+
this.abortTime = TimeConverter.toDate(abortTime);
196199
this.device = new APIDevice(deviceModelId, displayName, deviceManufacturer, releaseVersion,
197200
apiLevel, creditsPrice, imagePrefix, imageTop, imageLeft, imageWidth, imageHeight, imageCornerRadius,
198201
frameExtraWidth, osType, platform, null, locked, enabled, location, null, null, null, null);
@@ -273,10 +276,18 @@ public Date getEndTime() {
273276
return endTime;
274277
}
275278

279+
public Date getAbortTime() {
280+
return abortTime;
281+
}
282+
276283
public void setEndTime(Date endTime) {
277284
this.endTime = endTime;
278285
}
279286

287+
public void setAbortTime(Date abortTime) {
288+
this.abortTime = abortTime;
289+
}
290+
280291
public Long getTimeLimit() {
281292
return timeLimit;
282293
}
@@ -538,6 +549,7 @@ protected <T extends APIEntity> void clone(T from) {
538549
this.startTime = apiDeviceSession.startTime;
539550
this.installTime = apiDeviceSession.installTime;
540551
this.endTime = apiDeviceSession.endTime;
552+
this.abortTime = apiDeviceSession.abortTime;
541553
this.type = apiDeviceSession.type;
542554
this.device = apiDeviceSession.device;
543555
this.timeLimit = apiDeviceSession.timeLimit;

src/main/java/com/testdroid/api/model/APILicense.java

Lines changed: 62 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -3,12 +3,13 @@
33
import com.fasterxml.jackson.annotation.JsonIgnore;
44
import com.testdroid.api.APIEntity;
55
import com.testdroid.api.util.TimeConverter;
6+
import jakarta.xml.bind.annotation.XmlType;
67
import org.apache.commons.lang3.EnumUtils;
78
import org.apache.commons.lang3.StringUtils;
89

9-
import jakarta.xml.bind.annotation.XmlType;
1010
import java.time.LocalDateTime;
1111
import java.util.Date;
12+
import java.util.Optional;
1213

1314
import static org.apache.commons.lang3.StringUtils.EMPTY;
1415

@@ -46,6 +47,8 @@ public enum Status {
4647

4748
private boolean privateInstance;
4849

50+
private boolean legacy;
51+
4952
private Long userId;
5053

5154
private RecorderLicense recorder;
@@ -65,30 +68,26 @@ public APILicense() {
6568

6669
@SuppressWarnings("squid:S107")
6770
public APILicense(
68-
Long id, Long userId, String userEmail, boolean privateInstance, LocalDateTime activateTime,
69-
LocalDateTime expireTime, Integer androidDeviceLimit, Boolean androidEnabled, Boolean serverAndroidEnabled,
70-
Boolean uiautomatorEnabled, Boolean recorderEnabled, Integer iosProjectLimit, Boolean serverIosEnabled,
71-
Integer recorderLimit, Boolean ctsEnabled, Integer androidProjectLimit, Boolean serverEnabled,
72-
Boolean inspectorEnabled, Boolean iosEnabled, Integer iosDeviceLimit, LocalDateTime closeTime,
73-
String status, Boolean buildEnabled, Integer buildLimit, Boolean desktopEnabled,
74-
Integer desktopDeviceLimit, Integer desktopProjectLimit, Integer globalDeviceLimit,
75-
Integer globalProjectLimit) {
71+
Long id, Long userId, String userEmail, boolean privateInstance, boolean legacy, LocalDateTime activateTime,
72+
LocalDateTime expireTime, Integer androidDeviceLimit, Boolean androidEnabled, Boolean iosEnabled,
73+
Integer iosDeviceLimit, LocalDateTime closeTime, String status, Boolean desktopEnabled,
74+
Integer desktopDeviceLimit) {
7675
super(id);
7776
this.privateInstance = privateInstance;
77+
this.legacy = legacy;
7878
this.activateTime = TimeConverter.toDate(activateTime);
7979
this.expireTime = TimeConverter.toDate(expireTime);
8080
this.userEmail = userEmail;
8181
this.userId = userId;
82-
this.android = new AndroidLicense(androidDeviceLimit, androidProjectLimit,
83-
new AndroidLicense.CTSLicense(ctsEnabled), new AndroidLicense.UIAutomatorLicense(uiautomatorEnabled),
84-
androidEnabled);
85-
this.ios = new IOSLicense(iosDeviceLimit, iosProjectLimit, iosEnabled);
86-
this.build = new BuildLicense(buildLimit, buildEnabled);
87-
this.recorder = new RecorderLicense(recorderLimit, recorderEnabled);
88-
this.server = new ServerLicense(serverAndroidEnabled, serverIosEnabled, serverEnabled);
89-
this.inspector = new InspectorLicense(inspectorEnabled);
90-
this.desktop = new DesktopLicense(desktopDeviceLimit, desktopProjectLimit, desktopEnabled);
91-
this.global = new GlobalLicense(globalDeviceLimit, globalProjectLimit);
82+
this.android = new AndroidLicense(androidDeviceLimit, null,
83+
new AndroidLicense.CTSLicense(true), new AndroidLicense.UIAutomatorLicense(true), androidEnabled);
84+
this.ios = new IOSLicense(iosDeviceLimit, null, iosEnabled);
85+
this.build = new BuildLicense(null, true);
86+
this.recorder = new RecorderLicense(null, true);
87+
this.server = new ServerLicense(true, true, true);
88+
this.inspector = new InspectorLicense(true);
89+
this.desktop = new DesktopLicense(desktopDeviceLimit, null, desktopEnabled);
90+
this.global = new GlobalLicense(null, null);
9291
this.closeTime = TimeConverter.toDate(closeTime);
9392
this.status = EnumUtils.getEnum(Status.class, status);
9493
}
@@ -111,6 +110,16 @@ public APILicense(
111110
this.global = global;
112111
}
113112

113+
public APILicense(
114+
boolean privateInstance, LocalDateTime expireTime, AndroidLicense android, IOSLicense ios,
115+
DesktopLicense desktop) {
116+
this.privateInstance = privateInstance;
117+
this.expireTime = TimeConverter.toDate(expireTime);
118+
this.android = android;
119+
this.ios = ios;
120+
this.desktop = desktop;
121+
}
122+
114123
private static String getTextValue(Integer i) {
115124
return i != null ? Integer.toString(i) : EMPTY;
116125
}
@@ -249,10 +258,23 @@ public void setGlobal(GlobalLicense global) {
249258
this.global = global;
250259
}
251260

261+
public boolean isLegacy() {
262+
return legacy;
263+
}
264+
265+
public void setLegacy(boolean legacy) {
266+
this.legacy = legacy;
267+
}
268+
252269
public String generateSignContent() {
253270
return StringUtils.joinWith(":", getTextValue(privateInstance), userEmail,
254-
StringUtils.join(android.generateSignContent(), ios.generateSignContent(),
255-
recorder.generateSignContent(), server.generateSignContent()));
271+
StringUtils.join(
272+
Optional.ofNullable(android).map(AndroidLicense::generateSignContent).orElse(EMPTY),
273+
Optional.ofNullable(ios).map(IOSLicense::generateSignContent).orElse(EMPTY),
274+
Optional.ofNullable(recorder).map(RecorderLicense::generateSignContent).orElse(EMPTY),
275+
Optional.ofNullable(server).map(ServerLicense::generateSignContent).orElse(EMPTY)
276+
)
277+
);
256278
}
257279

258280
public static class GlobalLicense {
@@ -330,6 +352,11 @@ public static class AndroidLicense extends FeatureLicense {
330352
public AndroidLicense() {
331353
}
332354

355+
public AndroidLicense(boolean enabled, Integer deviceLimit) {
356+
super(enabled);
357+
this.deviceLimit = deviceLimit;
358+
}
359+
333360
public AndroidLicense(
334361
Integer deviceLimit, Integer projectLimit, CTSLicense cts, UIAutomatorLicense uiAutomator,
335362
boolean enabled) {
@@ -382,8 +409,10 @@ public boolean isProjectLimited() {
382409

383410
@Override
384411
public String generateSignContent() {
385-
return StringUtils.join(getTextValue(enabled), getTextValue(projectLimit),
386-
getTextValue(deviceLimit), cts.generateSignContent(), uiAutomator.generateSignContent());
412+
return StringUtils.join(getTextValue(enabled), getTextValue(projectLimit), getTextValue(deviceLimit),
413+
Optional.ofNullable(cts).map(CTSLicense::generateSignContent).orElse(EMPTY),
414+
Optional.ofNullable(uiAutomator).map(UIAutomatorLicense::generateSignContent).orElse(EMPTY)
415+
);
387416
}
388417

389418
public static class CTSLicense extends FeatureLicense {
@@ -458,6 +487,11 @@ public static class IOSLicense extends FeatureLicense {
458487
public IOSLicense() {
459488
}
460489

490+
public IOSLicense(boolean enabled, Integer deviceLimit) {
491+
super(enabled);
492+
this.deviceLimit = deviceLimit;
493+
}
494+
461495
public IOSLicense(Integer deviceLimit, Integer projectLimit, boolean enabled) {
462496
super(enabled);
463497
this.deviceLimit = deviceLimit;
@@ -504,6 +538,11 @@ public static class DesktopLicense extends FeatureLicense {
504538
public DesktopLicense() {
505539
}
506540

541+
public DesktopLicense(boolean enabled, Integer deviceLimit) {
542+
super(enabled);
543+
this.deviceLimit = deviceLimit;
544+
}
545+
507546
public DesktopLicense(Integer deviceLimit, Integer projectLimit, boolean enabled) {
508547
super(enabled);
509548
this.deviceLimit = deviceLimit;

0 commit comments

Comments
 (0)