____ __ ____
/ __ \____ _____ ____/ /_ ____ / / /_
/ /_/ / __ `/ ___/ ___/ __ \/ __ \/ / __/
/ ____/ /_/ (__ |__ ) /_/ / /_/ / / /_
/_/ \__,_/____/____/_.___/\____/_/\__/
Open source password manager for teams
(c) 2021 Passbolt SA
https://www.passbolt.com
Passbolt - Open source password manager for teams
(c) 2021 Passbolt SA
This program is free software: you can redistribute it and/or modify it under the terms of the GNU Affero General Public License (AGPL) as published by the Free Software Foundation version 3.
The name "Passbolt" is a registered trademark of Passbolt SA, and Passbolt SA hereby declines to grant a trademark license to "Passbolt" pursuant to the GNU Affero General Public License version 3 Section 7(e), without a separate agreement with Passbolt SA.
This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See GNU Affero General Public License for more details.
You should have received a copy of the GNU Affero General Public License along with this program. If not, see GNU Affero General Public License v3.
This repository contains the code of the Android mobile application.
If you've found a security related issue in Passbolt, please don't open an issue in GitHub. Instead contact us at security@passbolt.com. In the spirit of responsible disclosure we ask that the reporter keep the issue confidential until we announce it.
The passbolt team will take the following actions:
- Try to first reproduce the issue and confirm the vulnerability.
- Acknowledge to the reporter that we’ve received the issue and are working on a fix.
- Get a fix/patch prepared and create associated automated tests.
- Prepare a post describing the vulnerability, and the possible exploits.
- Release new versions of all affected major versions.
- Prominently feature the problem in the release announcement.
- Provide credits in the release announcement to the reporter if they so desire.
- Launch Android Studio and open the cloned project
- Make sure that Android SDK with version
30
is installed to compile the project - Wait until project configuration finishes (couple of minutes) and click
Sync with Gradle files
icon (top right toolbar - elephant with blue arrow) - Open the
Build Variants
tab (bottom left vertical pane) and under the:app
module selectActive Build Variant
asdebug
- Prepare a device for launch - at minimum
Android 10 (API 30)
is required - Hit the
Run
arrow (green play icon in the top center)
- Download Android build tools - scroll to
Command line tools only
- Using the downloaded command line
tools install the build tools for
API 30
required to compile the project - Open terminal and navigate to cloned project root directory
- Use Gradle Wrapper to build the project from
terminal
./gradlew assembleDebug
(during first build the Wrapper will also download and setup Gradle if not present) - the built application will be available at{project-dir}/app/build/outputs/apk/debug
- To install on a connected device (see above section 4.1 or 4.2) execute
./gradlew installDebug
- Navigate to project root directory
- Execute
./gradlew detekt ktlint lintDebug unitTest koverMergedHtmlReport licenseeRelease dependencyUpdates buildHealth
You can also run each check individually if needed:
detekt
andktlint
- run static analysis for kotlinlintRelease
- run Android linterunitTest
- execute all unit testskoverMergedHtmlReport
- generate unit test coverage reportlicenseeRelease
- check if all dependencies have appropriate licensesdependencyUpdates
- check if any dependencies have updates in the release channelbuildHealth
- produce a report about unused dependencies or incorrect dependency declaration
To execute Android instrumented tests connect your device and execute:
./gradlew connectedAndroidTest
Note for instrumented tests run a set of environment variables with test user must be set on the machine that builds the application:
PASSBOLT_TEST_USERNAME
- ID of the user on the serverPASSBOLT_TEST_USER_ID
- username of the user on the serverPASSBOLT_TEST_DOMAIN
- server domainPASSBOLT_TEST_FIRST_NAME
- first name of the userPASSBOLT_TEST_LAST_NAME
- last name of the userPASSBOLT_TEST_AVATAR_URL
- URL of the user avatar (optional)PASSBOLT_TEST_KEY_FINGERPRINT
- user's key fingerprintPASSBOLT_TEST_ARMORED_KEY_BASE_64
- base64 of user's armored keyPASSBOLT_TEST_PASSPHRASE
- user's key passphrasePASSBOLT_TEST_LOCAL_USER_UUID
- a random uuid
Example running saucectl
with espresso.
The steps below illustrate one of the quickest ways to get set up. If you'd like a more in-depth guide, please check out SauceLabs documentation.
curl -L https://saucelabs.github.io/saucectl/install | bash
brew tap saucelabs/saucectl
brew install saucectl
⚠ Make sure saucectl version is newer than v0.44.0
saucectl configure
./gradlew --no-daemon --build-cache assembleDebug assembleAndroidTest
saucectl run
Espresso only works on sauce cloud for both Android Emulators and Real Devices.
Docker mode is not supported.
Go to .sauce/config.yml
if you'd like to see how saucectl is configured for this repository.