Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Fix #1903 added regex check to ensure analytics/crashlytics is explicitly disab… #4995

Merged
merged 7 commits into from
May 31, 2023
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
8 changes: 2 additions & 6 deletions app/src/main/AndroidManifest.xml
Original file line number Diff line number Diff line change
Expand Up @@ -16,12 +16,8 @@
android:supportsRtl="true"
android:theme="@style/OppiaTheme">
<!-- NOTE TO DEVELOPER: You can enable debug logs for fast upload & better inspection in Firebase console using https://support.google.com/analytics/answer/7201382. -->
<meta-data
android:name="firebase_analytics_collection_deactivated"
android:value="true" />
<meta-data
android:name="firebase_crashlytics_collection_enabled"
android:value="false" />
<meta-data android:name="firebase_analytics_collection_deactivated" android:value="true" />
<meta-data android:name="firebase_crashlytics_collection_enabled" android:value="false" />
<meta-data
android:name="automatic_app_expiration_enabled"
android:value="false" />
Expand Down
10 changes: 10 additions & 0 deletions scripts/assets/file_content_validation_checks.textproto
Original file line number Diff line number Diff line change
Expand Up @@ -440,3 +440,13 @@ file_content_checks {
exempted_file_name: "scripts/src/javatests/org/oppia/android/scripts/regex/RegexPatternValidationCheckTest.kt"
exempted_file_name: "utility/src/main/java/org/oppia/android/util/parser/image/UrlImageParser.kt"
}
file_content_checks {
file_path_regex: "app/src/main/AndroidManifest.xml"
required_content_regex: "\\s*<meta-data\\s*android:name\\s*=\\s*\"firebase_analytics_collection_deactivated\"\\s*android:value\\s*=\\s*\"true\"\\s*/>\\s*"
failure_message: "Firebase analytics collection should always be explicitly deactivated in develop."
}
file_content_checks {
file_path_regex: "app/src/main/AndroidManifest.xml"
required_content_regex: "\\s*<meta-data\\s*android:name\\s*=\\s*\"firebase_crashlytics_collection_enabled\"\\s*android:value\\s*=\\s*\"false\"\\s*/>\\s*"
failure_message: "Firebase crashlytics collection should always be explicitly deactivated in develop."
}
Original file line number Diff line number Diff line change
Expand Up @@ -106,6 +106,10 @@ class RegexPatternValidationCheckTest {
"Never explicitly handle configuration changes. Instead, use saved instance states for" +
" retaining state across rotations. For other types of configuration changes, follow up" +
" with the developer mailing list with how to proceed if you think this is a legitimate case."
private val androidManifestFirebaseAnalyticsEnabledErrorMessage =
"Firebase analytics collection should always be explicitly deactivated in develop."
private val androidManifestFirebaseCrashlyticsEnabledErrorMessage =
"Firebase crashlytics collection should always be explicitly deactivated in develop."
private val nonCompatDrawableUsedErrorMessage =
"Drawable start/end/top/bottom & image source should use the compat versions, instead, e.g.:" +
" app:drawableStartCompat or app:srcCompat, to ensure that vector drawables can load" +
Expand Down Expand Up @@ -1480,6 +1484,8 @@ class RegexPatternValidationCheckTest {
<?xml version="1.0" encoding="utf-8"?>
<manifest package="org.oppia.android">
<application android:name=".app.application.OppiaApplication">
<meta-data android:name="firebase_crashlytics_collection_enabled" android:value="false" />
<meta-data android:name="firebase_analytics_collection_deactivated" android:value="true" />
<activity
android:name=".app.ExampleActivity"
android:configChanges="orientation" />
Expand All @@ -1498,7 +1504,67 @@ class RegexPatternValidationCheckTest {
assertThat(outContent.toString().trim())
.isEqualTo(
"""
$stringFilePath:6: $androidActivityConfigChangesErrorMessage
$stringFilePath:8: $androidActivityConfigChangesErrorMessage
$wikiReferenceNote
""".trimIndent()
)
}

@Test
fun testFileContent_manifestWithFirebaseCrashlyticsEnabled_fileContentIsNotCorrect() {
val prohibitedContent =
"""
<?xml version="1.0" encoding="utf-8"?>
<manifest package="org.oppia.android">
<application android:name=".app.application.OppiaApplication">
<meta-data android:name="firebase_crashlytics_collection_enabled" android:value="true" />
<meta-data android:name="firebase_analytics_collection_deactivated" android:value="true" />
</application>
</manifest>
""".trimIndent()
tempFolder.newFolder("testfiles", "app", "src", "main")
val stringFilePath = "app/src/main/AndroidManifest.xml"
tempFolder.newFile("testfiles/$stringFilePath").writeText(prohibitedContent)

val exception = assertThrows(Exception::class) {
runScript()
}

assertThat(exception).hasMessageThat().contains(REGEX_CHECK_FAILED_OUTPUT_INDICATOR)
assertThat(outContent.toString().trim())
.isEqualTo(
"""
$stringFilePath: $androidManifestFirebaseCrashlyticsEnabledErrorMessage
$wikiReferenceNote
""".trimIndent()
)
}

@Test
fun testFileContent_manifestWithFirebaseAnalyticsEnabled_fileContentIsNotCorrect() {
val prohibitedContent =
"""
<?xml version="1.0" encoding="utf-8"?>
<manifest package="org.oppia.android">
<application android:name=".app.application.OppiaApplication">
<meta-data android:name="firebase_crashlytics_collection_enabled" android:value="false" />
<meta-data android:name="firebase_analytics_collection_deactivated" android:value="false" />
</application>
</manifest>
""".trimIndent()
tempFolder.newFolder("testfiles", "app", "src", "main")
val stringFilePath = "app/src/main/AndroidManifest.xml"
tempFolder.newFile("testfiles/$stringFilePath").writeText(prohibitedContent)

val exception = assertThrows(Exception::class) {
runScript()
}

assertThat(exception).hasMessageThat().contains(REGEX_CHECK_FAILED_OUTPUT_INDICATOR)
assertThat(outContent.toString().trim())
.isEqualTo(
"""
$stringFilePath: $androidManifestFirebaseAnalyticsEnabledErrorMessage
$wikiReferenceNote
""".trimIndent()
)
Expand Down