Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion Dockerfile
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
FROM gradle:9.2.1-jdk17
FROM gradle:8.14.3-jdk17

# Install system dependencies
RUN apt-get update -qq && apt-get install -qq -y --no-install-recommends \
Expand Down
2 changes: 1 addition & 1 deletion build-apk.sh
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@
rm -rf _artifacts

docker compose build && docker compose run --rm -v "$(pwd)":/src -w /src -u "$(id -u)":"$(id -g)" gradle \
:projectBlueWater:test \
:projectBlueWater:testReleaseUnitTest \
:projectBlueWater:assembleRelease \
:projectBlueWater:assembleDebug

Expand Down
2 changes: 1 addition & 1 deletion build-github-pr.sh
Original file line number Diff line number Diff line change
Expand Up @@ -4,5 +4,5 @@
# running this on a local machine will leave artifacts that have root ownership.

docker compose build && docker compose run --rm -v "$(pwd)":/src -w /src gradle \
:projectBlueWater:test \
:projectBlueWater:testReleaseUnitTest \
:projectBlueWater:bundleRelease
2 changes: 1 addition & 1 deletion build-github-release.sh
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,7 @@ docker compose build && docker compose run --rm \
-v "$(pwd)":/src -w /src \
# -u "$(id -u)":"$(id -g)" \
gradle \
:projectBlueWater:test \
:projectBlueWater:testReleaseUnitTest \
:projectBlueWater:assembleRelease

mkdir -p _artifacts
Expand Down
2 changes: 1 addition & 1 deletion build.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -9,8 +9,8 @@ buildscript {

plugins {
alias(libs.plugins.androidApplication) apply false
alias(libs.plugins.kotlinPluginCompose) apply false
alias(libs.plugins.kotlinAndroid) apply false
alias(libs.plugins.kotlinPluginCompose) apply false
}

allprojects {
Expand Down
10 changes: 0 additions & 10 deletions gradle.properties
Original file line number Diff line number Diff line change
Expand Up @@ -16,13 +16,3 @@ android.useAndroidX=true
android.nonTransitiveRClass=true
android.nonFinalResIds=true
org.gradle.configuration-cache=true
android.defaults.buildfeatures.resvalues=true
android.sdk.defaultTargetSdkToCompileSdkIfUnset=false
android.enableAppCompileTimeRClass=false
android.usesSdkInManifest.disallowed=false
android.uniquePackageNames=false
android.dependency.useConstraints=true
android.r8.strictFullModeForKeepRules=false
android.r8.optimizedResourceShrinking=false
android.builtInKotlin=false
android.newDsl=false
6 changes: 2 additions & 4 deletions gradle/libs.versions.toml
Original file line number Diff line number Diff line change
@@ -1,10 +1,9 @@
[versions]
activityCompose = "1.12.4"
agp = "9.0.1"
agp = "8.13.2"
androidJunit5 = "2.0.1"
annotation = "1.9.1"
assertjCore = "3.27.7"
commonsCodec = "1.21.0"
commonsIo = "2.21.0"
compose = "1.10.3"
coreKtx = "1.17.0"
Expand Down Expand Up @@ -65,7 +64,6 @@ androidx-test-core = { module = "androidx.test:core", version.ref = "runner" }
androidx-test-runner = { module = "androidx.test:runner", version.ref = "runner" }
androidx-work-runtime = { module = "androidx.work:work-runtime", version.ref = "workRuntime" }
assertj-core = { module = "org.assertj:assertj-core", version.ref = "assertjCore" }
commons-codec = { module = "commons-codec:commons-codec", version.ref = "commonsCodec" }
commons-io = { module = "commons-io:commons-io", version.ref = "commonsIo" }
desugar_jdk_libs = { module = "com.android.tools:desugar_jdk_libs", version.ref = "desugar_jdk_libs" }
gson = { module = "com.google.code.gson:gson", version.ref = "gson" }
Expand Down Expand Up @@ -98,6 +96,6 @@ slf4j-api = { module = "org.slf4j:slf4j-api", version.ref = "slf4jApi" }
[plugins]
androidApplication = { id = "com.android.application", version.ref = "agp" }
androidJUnit5 = { id = "de.mannodermaus.android-junit5", version.ref = "androidJunit5" }
kotlinAndroid = { id = "org.jetbrains.kotlin.android", version.ref = "kotlin" }
kotlinPluginCompose = { id = "org.jetbrains.kotlin.plugin.compose", version.ref = "kotlin" }
kotlinSerialization = { id = "org.jetbrains.kotlin.plugin.serialization", version.ref = "kotlin" }
kotlinAndroid = { id = "org.jetbrains.kotlin.android", version.ref = "kotlin" }
2 changes: 1 addition & 1 deletion gradle/wrapper/gradle-wrapper.properties
Original file line number Diff line number Diff line change
Expand Up @@ -3,4 +3,4 @@ distributionBase=GRADLE_USER_HOME
distributionPath=wrapper/dists
zipStoreBase=GRADLE_USER_HOME
zipStorePath=wrapper/dists
distributionUrl=https\://services.gradle.org/distributions/gradle-9.2.1-all.zip
distributionUrl=https\://services.gradle.org/distributions/gradle-8.14.2-all.zip
13 changes: 7 additions & 6 deletions projectBlueWater/build.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -3,10 +3,11 @@ import org.jetbrains.kotlin.gradle.tasks.KotlinCompile
plugins {
alias(libs.plugins.androidJUnit5)
alias(libs.plugins.kotlinSerialization)
alias(libs.plugins.kotlinAndroid)
}

apply plugin: 'com.android.application'
apply plugin: 'kotlin-android'
apply plugin: 'org.jetbrains.kotlin.android'
apply plugin: 'kotlin-parcelize'
apply plugin: 'org.jetbrains.kotlin.plugin.compose'

Expand Down Expand Up @@ -73,6 +74,10 @@ android {
coreLibraryDesugaringEnabled = true
}

kotlinOptions {
jvmTarget = '11'
}

sourceSets {
main {
res.srcDirs += copyDependencyList.map { it.temporaryDir }
Expand All @@ -87,7 +92,7 @@ android {
release {
minifyEnabled true
shrinkResources true
proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
signingConfig (isSignedExternally() ? signingConfigs.release : signingConfig)
ndk {
debugSymbolLevel = 'SYMBOL_TABLE'
Expand Down Expand Up @@ -129,9 +134,6 @@ android {
}

namespace 'com.lasthopesoftware.bluewater'
kotlinOptions {
jvmTarget = '11'
}
}

tasks.withType(KotlinCompile).configureEach {
Expand Down Expand Up @@ -223,7 +225,6 @@ dependencies {
testImplementation libs.androidx.junit.ktx
testImplementation libs.androidx.test.core
testImplementation libs.androidx.test.runner
testImplementation libs.commons.codec
testImplementation libs.junit.jupiter.api
testImplementation libs.assertj.core
testImplementation libs.robolectric
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,6 @@ import com.lasthopesoftware.resources.strings.JsonEncoderDecoder
import com.namehillsoftware.handoff.promises.Promise
import io.mockk.every
import io.mockk.mockk
import org.apache.commons.codec.binary.Hex
import org.assertj.core.api.Assertions.assertThat
import org.junit.jupiter.api.BeforeAll
import org.junit.jupiter.api.Test
Expand All @@ -37,7 +36,7 @@ class `When Getting The Live Connection` {
"53.24.19.245",
"192.168.1.56"
), emptySet(),
Hex.decodeHex("2386166660562C5AAA1253B2BED7C2483F9C2D45")
"2386166660562C5AAA1253B2BED7C2483F9C2D45".hexToByteArray()
)
)

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,6 @@ import com.lasthopesoftware.resources.strings.JsonEncoderDecoder
import com.namehillsoftware.handoff.promises.Promise
import io.mockk.every
import io.mockk.mockk
import org.apache.commons.codec.binary.Hex
import org.assertj.core.api.Assertions.assertThat
import org.junit.jupiter.api.BeforeAll
import org.junit.jupiter.api.Test
Expand All @@ -36,7 +35,7 @@ class `When Getting The Live Connection` {
"53.24.19.245",
"192.168.1.56"
), emptySet(),
Hex.decodeHex("2386166660562C5AAA1253B2BED7C2483F9C2D45")
"2386166660562C5AAA1253B2BED7C2483F9C2D45".hexToByteArray()
)
)

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,6 @@ import com.lasthopesoftware.resources.strings.JsonEncoderDecoder
import com.namehillsoftware.handoff.promises.Promise
import io.mockk.every
import io.mockk.mockk
import org.apache.commons.codec.binary.Hex
import org.assertj.core.api.Assertions.assertThat
import org.junit.jupiter.api.Test
import java.net.URL
Expand All @@ -33,7 +32,7 @@ class `When Cancelling During Lookup` {
setOf("1.2.3.4"),
emptySet(),
emptySet(),
Hex.decodeHex("2386166660562C5AAA1253B2BED7C2483F9C2D45")
"2386166660562C5AAA1253B2BED7C2483F9C2D45".hexToByteArray()
)
)

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,6 @@ import com.lasthopesoftware.resources.strings.JsonEncoderDecoder
import com.namehillsoftware.handoff.promises.Promise
import io.mockk.every
import io.mockk.mockk
import org.apache.commons.codec.binary.Hex
import org.assertj.core.api.Assertions.assertThat
import org.junit.jupiter.api.BeforeAll
import org.junit.jupiter.api.Test
Expand All @@ -34,7 +33,7 @@ class `When Getting The Live Connection` {
setOf("1.2.3.4"),
emptySet(),
emptySet(),
Hex.decodeHex("2386166660562C5AAA1253B2BED7C2483F9C2D45")
"2386166660562C5AAA1253B2BED7C2483F9C2D45".hexToByteArray()
)
)

Expand Down Expand Up @@ -108,6 +107,6 @@ class `When Getting The Live Connection` {
@Test
fun `then the certificate fingerprint is correct`() {
assertThat(selectedConnectionDetails?.certificateFingerprint)
.isEqualTo(Hex.decodeHex("2386166660562C5AAA1253B2BED7C2483F9C2D45"))
.isEqualTo("2386166660562C5AAA1253B2BED7C2483F9C2D45".hexToByteArray())
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,6 @@ import com.lasthopesoftware.resources.strings.JsonEncoderDecoder
import com.namehillsoftware.handoff.promises.Promise
import io.mockk.every
import io.mockk.mockk
import org.apache.commons.codec.binary.Hex
import org.assertj.core.api.Assertions.assertThat
import org.junit.jupiter.api.Test
import java.util.concurrent.TimeUnit
Expand All @@ -34,7 +33,7 @@ class `When Cancelling During Connection Test` {
setOf("LD1kt8LI7aC"),
emptySet(),
emptySet(),
Hex.decodeHex("3e29389b9409419180eae3159dbb1ecc")
"3e29389b9409419180eae3159dbb1ecc".hexToByteArray()
)
)

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -19,7 +19,6 @@ import com.lasthopesoftware.resources.strings.JsonEncoderDecoder
import com.namehillsoftware.handoff.promises.Promise
import io.mockk.every
import io.mockk.mockk
import org.apache.commons.codec.binary.Hex
import org.assertj.core.api.Assertions.assertThat
import org.junit.jupiter.api.BeforeAll
import org.junit.jupiter.api.Test
Expand All @@ -35,7 +34,7 @@ class `When Getting The Live Connection` {
setOf("dR7ft3qmY99"),
emptySet(),
emptySet(),
Hex.decodeHex("ae16487d40f24abb8c61f49bf4540076")
"ae16487d40f24abb8c61f49bf4540076".hexToByteArray()
)
)

Expand Down Expand Up @@ -95,7 +94,7 @@ class `When Getting The Live Connection` {
@Test
fun `then the certificate fingerprint is correct`() {
assertThat(selectedConnectionDetails?.certificateFingerprint)
.isEqualTo(Hex.decodeHex("ae16487d40f24abb8c61f49bf4540076"))
.isEqualTo("ae16487d40f24abb8c61f49bf4540076".hexToByteArray())
}

@Test
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,6 @@ import com.lasthopesoftware.promises.extensions.toPromise
import com.namehillsoftware.handoff.promises.Promise
import io.mockk.every
import io.mockk.mockk
import org.apache.commons.codec.binary.Hex
import org.assertj.core.api.Assertions.assertThat
import org.junit.jupiter.api.BeforeAll
import org.junit.jupiter.api.Test
Expand All @@ -22,7 +21,7 @@ class `When Getting the Server Info` {
mockk {
every { promiseConnectionSettings(LibraryId(com.lasthopesoftware.bluewater.client.connection.lookup.mediacenter.GivenAnAccessCodeThatIsAValidServer.AndAnHttpsScheme.libraryId)) } returns MediaCenterConnectionSettings(
accessCode = "https://b7XpyOQv:63389",
sslCertificateFingerprint = Hex.decodeHex("d0a3e4bf62221422a2e5dc9c479c2b36")
sslCertificateFingerprint = "d0a3e4bf62221422a2e5dc9c479c2b36".hexToByteArray()
).toPromise()
},
mockk {
Expand All @@ -47,7 +46,7 @@ class `When Getting the Server Info` {
remoteHosts = setOf("b7XpyOQv"),
macAddresses = emptySet(),
localHosts = emptySet(),
certificateFingerprint = Hex.decodeHex("d0a3e4bf62221422a2e5dc9c479c2b36"),
certificateFingerprint = "d0a3e4bf62221422a2e5dc9c479c2b36".hexToByteArray(),
)
)
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -8,29 +8,30 @@ import com.lasthopesoftware.bluewater.shared.promises.extensions.toExpiringFutur
import com.namehillsoftware.handoff.promises.Promise
import io.mockk.every
import io.mockk.mockk
import org.apache.commons.codec.binary.Hex
import org.assertj.core.api.Assertions.assertThat
import org.junit.jupiter.api.Test

private const val libraryId = 601

class WhenParsingTheServerInfo {

companion object {
private const val libraryId = 601
}

private val serverInfo by lazy {
val serverLookup = ServerLookup(
mockk {
every { promiseConnectionSettings(LibraryId(com.lasthopesoftware.bluewater.client.connection.lookup.mediacenter.GivenNoServerInfoXml.libraryId)) } returns Promise(
every { promiseConnectionSettings(LibraryId(libraryId)) } returns Promise(
MediaCenterConnectionSettings(
accessCode = "JcMHkVt5mty",
sslCertificateFingerprint = Hex.decodeHex("2386166660562C5AAA1253B2BED7C2483F9C2D45")
sslCertificateFingerprint = "2386166660562C5AAA1253B2BED7C2483F9C2D45".hexToByteArray()
)
)
},
mockk {
every { promiseServerInfoXml(any()) } returns Promise.empty()
},
)
serverLookup.promiseServerInformation(LibraryId(com.lasthopesoftware.bluewater.client.connection.lookup.mediacenter.GivenNoServerInfoXml.libraryId)).toExpiringFuture().get()
serverLookup.promiseServerInformation(LibraryId(libraryId)).toExpiringFuture().get()
}

@Test
Expand All @@ -39,7 +40,7 @@ class WhenParsingTheServerInfo {
ServerInfo(
httpsPort = 443,
remoteHosts = setOf("JcMHkVt5mty"),
certificateFingerprint = Hex.decodeHex("2386166660562C5AAA1253B2BED7C2483F9C2D45"),
certificateFingerprint = "2386166660562C5AAA1253B2BED7C2483F9C2D45".hexToByteArray(),
)
)
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -9,26 +9,27 @@ import com.lasthopesoftware.promises.extensions.toPromise
import com.namehillsoftware.handoff.promises.Promise
import io.mockk.every
import io.mockk.mockk
import org.apache.commons.codec.binary.Hex
import org.assertj.core.api.Assertions.assertThat
import org.jsoup.Jsoup
import org.jsoup.parser.Parser
import org.junit.jupiter.api.BeforeAll
import org.junit.jupiter.api.Test

private const val libraryId = 206

class `When Getting the Server Info` {
companion object {
private const val libraryId = 206
}

private val services by lazy {
ServerLookup(
mockk {
every { promiseConnectionSettings(LibraryId(com.lasthopesoftware.bluewater.client.connection.lookup.mediacenter.GivenServerInfoXml.AndASavedCertificate.libraryId)) } returns MediaCenterConnectionSettings(
every { promiseConnectionSettings(LibraryId(libraryId)) } returns MediaCenterConnectionSettings(
accessCode = "W8JjaYq4YqJ",
sslCertificateFingerprint = Hex.decodeHex("2386166660562C5AAA1253B2BED7C2483F9C2D45")
sslCertificateFingerprint = "2386166660562C5AAA1253B2BED7C2483F9C2D45".hexToByteArray()
).toPromise()
},
mockk {
every { promiseServerInfoXml(LibraryId(com.lasthopesoftware.bluewater.client.connection.lookup.mediacenter.GivenServerInfoXml.AndASavedCertificate.libraryId)) } returns Promise(
every { promiseServerInfoXml(LibraryId(libraryId)) } returns Promise(
Jsoup.parse(
"""<?xml version="1.0" encoding="UTF-8"?>
<Response Status="OK">
Expand All @@ -54,7 +55,7 @@ class `When Getting the Server Info` {

@BeforeAll
fun act() {
serverInfo = services.promiseServerInformation(LibraryId(com.lasthopesoftware.bluewater.client.connection.lookup.mediacenter.GivenServerInfoXml.AndASavedCertificate.libraryId)).toExpiringFuture().get()
serverInfo = services.promiseServerInformation(LibraryId(libraryId)).toExpiringFuture().get()
}

@Test
Expand All @@ -66,7 +67,7 @@ class `When Getting the Server Info` {
remoteHosts = setOf("108.491.23.154"),
macAddresses = setOf("5c-f3-70-8b-db-e9", "16-15-f4-b9-cd-15"),
localHosts = setOf("169.254.72.216", "192.940.1.817"),
certificateFingerprint = Hex.decodeHex("2386166660562C5AAA1253B2BED7C2483F9C2D45"),
certificateFingerprint = "2386166660562C5AAA1253B2BED7C2483F9C2D45".hexToByteArray(),
)
)
}
Expand Down
Loading