Skip to content

Commit

Permalink
DCB-56 DCB-54 Add support for Android APKs
Browse files Browse the repository at this point in the history
(cherry picked from commit 439e3cb9116c40532a686730d266c0ed2eeb1d25)
  • Loading branch information
Adrian Nowak authored and lukasz-andrzejak committed Oct 13, 2023
1 parent 7e0a947 commit a5df48f
Show file tree
Hide file tree
Showing 6 changed files with 36 additions and 10 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -34,13 +34,17 @@ public static boolean isSupported(String applicationType) {
}

public static boolean isNativeApplication(String applicationType, Collection<ApplicationType> webApplications) {
return fromValue(applicationType).map(e -> !webApplications.contains(e)).orElse(false);
return !isWebApplication(applicationType, webApplications) && !isAndroidApplication(applicationType);
}

public static boolean isWebApplication(String applicationType, Collection<ApplicationType> webApplications) {
return fromValue(applicationType).map(webApplications::contains).orElse(false);
}

public static boolean isAndroidApplication(String applicationType) {
return fromValue(applicationType).map(ApplicationType.ANDROID::equals).orElse(false);
}

private static Optional<ApplicationType> fromValue(String applicationType) {
if (applicationType == null) {
return Optional.empty();
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -34,11 +34,16 @@ public ApplicationUrlService(ApplicationUrlCreator urlCreator, Collection<Applic
}

public String createApplicationUrlFromApplicationRecord(ApplicationUrlParams applicationUrlParams) {
return ApplicationTypeHelper.isWebApplication(applicationUrlParams.type, webApplications) ?
return isWebOrAndroidApplication(applicationUrlParams) ?
urlCreator.createApplicationUrl(applicationUrlParams.webApp()) :
urlCreator.createApplicationUrl(applicationUrlParams.nativeApp());
}

private boolean isWebOrAndroidApplication(ApplicationUrlParams applicationUrlParams) {
return ApplicationTypeHelper.isWebApplication(applicationUrlParams.type, webApplications)
|| ApplicationTypeHelper.isAndroidApplication(applicationUrlParams.type);
}

public static class ApplicationUrlParams {
private final String platformName;
private final String firmwareVersion;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -1072,9 +1072,11 @@ components:
- application/vnd.rdk-app.lightning
- application/vnd.rdk-app.dac.native
- application/dac.native
- application/apk
x-enum-varnames:
- HTML5
- LIGHTNING
- DAC_NATIVE
- RDK_DAC_NATIVE
- ANDROID
description: Application type
Original file line number Diff line number Diff line change
Expand Up @@ -224,20 +224,21 @@ void applicationTypeIsCopiedFromDB(String type) throws Exception {
assertThat(applicationType.get().getApplicationType()).isEqualTo(type);
}

@Test
void shouldReturnSourceUrlForWebApplication() throws Exception {
@ParameterizedTest
@ValueSource(strings = {"application/vnd.rdk-app.html5", "application/apk"})
void shouldReturnSourceUrlForWebAndAndroidApplication(String applicationType) throws Exception {
// GIVEN
final var randomMaintainerRecord = createRandomMaintainerRecord();
final var applicationId = UUID.randomUUID().toString();
final var latestVersion = "500";
final var randomApplicationRecord = createRandomApplicationRecord(randomMaintainerRecord, applicationId, latestVersion, "application/vnd.rdk-app.html5", false);
final var randomApplicationRecord = createRandomApplicationRecord(randomMaintainerRecord, applicationId, latestVersion, applicationType, false);

// WHEN
final var applicationType = appsService.getApplicationDetails(applicationId, latestVersion,null, null).orElse(null);
final var applicationDetails = appsService.getApplicationDetails(applicationId, latestVersion,null, null).orElse(null);

// THEN
assertThat(applicationType).isNotNull();
assertThat(applicationType.getHeader().getUrl()).isEqualTo(randomApplicationRecord.get(Application.APPLICATION.OCI_IMAGE_URL));
assertThat(applicationDetails.getHeader().getUrl()).isEqualTo(randomApplicationRecord.get(Application.APPLICATION.OCI_IMAGE_URL));
}

@Test
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -83,4 +83,15 @@ void canReturnWebApplication() {
// THEN
assertThat(webApplication).isTrue();
}

@Test
void shouldReturnAndroidApplication() {
// GIVEN
// WHEN
final var androidApplication = ApplicationTypeHelper.isAndroidApplication("application/apk");

// THEN
assertThat(androidApplication).isTrue();
}

}
Original file line number Diff line number Diff line change
Expand Up @@ -21,6 +21,8 @@

import com.lgi.appstore.metadata.model.ApplicationType;
import org.junit.jupiter.api.Test;
import org.junit.jupiter.params.ParameterizedTest;
import org.junit.jupiter.params.provider.ValueSource;
import org.mockito.Mockito;

import java.util.List;
Expand All @@ -33,10 +35,11 @@ class ApplicationUrlServiceTest {
private final ApplicationUrlCreator urlCreator = Mockito.mock(ApplicationUrlCreator.class);
private final ApplicationUrlService applicationUrlService = new ApplicationUrlService(urlCreator, WEB_APPLICATIONS);

@Test
void shouldGetUrlForWebApplication() {
@ParameterizedTest
@ValueSource(strings = {"application/vnd.rdk-app.html5", "application/apk"})
void shouldGetUrlForWebAndAndroidApplication(String applicationType) {
// GIVEN
final var applicationUrlParams = createApplicationParams("application/vnd.rdk-app.html5");
final var applicationUrlParams = createApplicationParams(applicationType);
doReturn("http://web").when(urlCreator).createApplicationUrl(Mockito.any(ApplicationUrlCreator.WebAppParams.class));

// WHEN
Expand Down

0 comments on commit a5df48f

Please sign in to comment.