diff --git a/README.md b/README.md index fc79af300..a93392c8a 100644 --- a/README.md +++ b/README.md @@ -1,6 +1,7 @@ # Wulkanowy -[![Codacy Badge](https://api.codacy.com/project/badge/Grade/b0365aa6584a4c1abf36141204bc8de3)](https://www.codacy.com/app/mklkj/wulkanowy?utm_source=github.com&utm_medium=referral&utm_content=wulkanowy/wulkanowy&utm_campaign=badger) +[![Codacy Grade Badge](https://api.codacy.com/project/badge/Grade/b0365aa6584a4c1abf36141204bc8de3)](https://www.codacy.com/app/wulkanowy/wulkanowy) +[![Codacy Coverage Badge](https://api.codacy.com/project/badge/Coverage/b0365aa6584a4c1abf36141204bc8de3)](https://www.codacy.com/app/wulkanowy/wulkanowy) [![Build Status](https://www.bitrise.io/app/daeff1893f3c8128.svg?token=Hjm1ACamk86JDeVVJHOeqQ&branch=master)](https://www.bitrise.io/app/daeff1893f3c8128) [![CircleCI](https://circleci.com/gh/wulkanowy/wulkanowy.svg?style=svg)](https://circleci.com/gh/wulkanowy/wulkanowy) diff --git a/app/build.gradle b/app/build.gradle index e0600d51e..6c1390af1 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -1,4 +1,6 @@ apply plugin: 'com.android.application' +apply plugin: 'jacoco-android' +apply plugin: "io.github.ddimtirov.codacy" android { compileSdkVersion 25 @@ -17,6 +19,9 @@ android { minifyEnabled false proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro' } + debug { + testCoverageEnabled = true + } } } diff --git a/app/src/main/java/io/github/wulkanowy/activity/main/CheckPass.java b/app/src/main/java/io/github/wulkanowy/activity/main/CheckPass.java index e03cd3665..ace010f80 100644 --- a/app/src/main/java/io/github/wulkanowy/activity/main/CheckPass.java +++ b/app/src/main/java/io/github/wulkanowy/activity/main/CheckPass.java @@ -1,30 +1,19 @@ package io.github.wulkanowy.activity.main; -import org.jsoup.Connection; import org.jsoup.nodes.Document; -import org.jsoup.select.Elements; +import org.jsoup.nodes.Element; -import java.io.IOException; +class CheckPass { -public class CheckPass { + private Document document; - Connection.Response page; - - public CheckPass (Connection.Response pageT){ - page = pageT; + CheckPass(Document doc) { + document = doc; } - public String start (){ - try{ - Document document = page.parse(); - Elements mesageAlert = document.getElementsByClass("ErrorMessage center"); - return mesageAlert.text(); - } - catch (IOException e){ - return e.toString(); - } - + boolean isLogged() { + Element messageAlert = document.select(".ErrorMessage").first(); + return null == messageAlert; } - } diff --git a/app/src/main/java/io/github/wulkanowy/activity/main/Login.java b/app/src/main/java/io/github/wulkanowy/activity/main/Login.java index 1e33985b5..fe0acd936 100644 --- a/app/src/main/java/io/github/wulkanowy/activity/main/Login.java +++ b/app/src/main/java/io/github/wulkanowy/activity/main/Login.java @@ -72,6 +72,7 @@ public class Login extends AsyncTask { try { if (!stepOne()) { + userMesage = activity.getString(R.string.login_bad_credentials); return null; } @@ -106,10 +107,9 @@ public class Login extends AsyncTask { loginCookies = initial.cookies(); - CheckPass checkPass = new CheckPass(initial); - userMesage = checkPass.start(); + Document document = initial.parse(); - return userMesage.isEmpty(); + return new CheckPass(document).isLogged(); } private Document stepTwo() throws IOException { diff --git a/app/src/main/res/values-pl/strings.xml b/app/src/main/res/values-pl/strings.xml index 5ff807d4c..f32c6b7ed 100644 --- a/app/src/main/res/values-pl/strings.xml +++ b/app/src/main/res/values-pl/strings.xml @@ -11,6 +11,7 @@ Brak danych logowania Funkcja którą chciałeś uruchomić nie działa Pomyślnie zalogowano + Zła nazwa użytkownika lub hasło Logowanie nie powiodło się Proszę czekać… Aktywność dashboard diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index f7a631f38..decc6b078 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -11,6 +11,7 @@ No login data The function you wanted to run does not work Login is successful + Bad username or password Login is failed Please wait… Dashboard Activity diff --git a/app/src/test/java/io/github/wulkanowy/ExampleUnitTest.java b/app/src/test/java/io/github/wulkanowy/ExampleUnitTest.java deleted file mode 100644 index 4868407c8..000000000 --- a/app/src/test/java/io/github/wulkanowy/ExampleUnitTest.java +++ /dev/null @@ -1,17 +0,0 @@ -package io.github.wulkanowy; - -import org.junit.Test; - -import static org.junit.Assert.*; - -/** - * Example local unit test, which will execute on the development machine (host). - * - * @see Testing documentation - */ -public class ExampleUnitTest { - @Test - public void addition_isCorrect() throws Exception { - assertEquals(4, 2 + 2); - } -} \ No newline at end of file diff --git a/app/src/test/java/io/github/wulkanowy/activity/main/CheckPassTest.java b/app/src/test/java/io/github/wulkanowy/activity/main/CheckPassTest.java new file mode 100644 index 000000000..089b8e414 --- /dev/null +++ b/app/src/test/java/io/github/wulkanowy/activity/main/CheckPassTest.java @@ -0,0 +1,28 @@ +package io.github.wulkanowy.activity.main; + +import org.jsoup.Jsoup; +import org.jsoup.nodes.Document; +import org.junit.Test; + +import static org.junit.Assert.*; + +public class CheckPassTest { + + @Test + public void testFailureLogin() throws Exception { + String html = "
Zła nazwa użytkownika lub hasło
"; + Document doc = Jsoup.parse(html); + CheckPass obj = new CheckPass(doc); + + assertFalse(obj.isLogged()); + } + + @Test + public void testSuccessfulLogin() throws Exception { + String html = "Working..."; + Document doc = Jsoup.parse(html); + CheckPass check = new CheckPass(doc); + + assertTrue(check.isLogged()); + } +} diff --git a/build.gradle b/build.gradle index c2eea8e27..23fa39aec 100644 --- a/build.gradle +++ b/build.gradle @@ -3,12 +3,17 @@ buildscript { repositories { jcenter() + maven { + url "https://plugins.gradle.org/m2/" + } } dependencies { classpath 'com.android.tools.build:gradle:2.3.3' // NOTE: Do not place your application dependencies here; they belong // in the individual module build.gradle files + classpath 'com.dicedmelon.gradle:jacoco-android:0.1.1' + classpath "gradle.plugin.io.github.ddimtirov:codacy-gradle-plugin:0.1.0" } } diff --git a/circle.yml b/circle.yml index 91c2a8eb7..0e7836294 100644 --- a/circle.yml +++ b/circle.yml @@ -7,18 +7,29 @@ machine: dependencies: pre: - - wget "https://downloads.gradle.org/distributions/gradle-2.3-bin.zip"; unzip gradle-2.3-bin.zip + - wget "https://downloads.gradle.org/distributions/gradle-3.3-bin.zip"; unzip gradle-3.3-bin.zip override: - - echo y | android update sdk --no-ui --all --filter tools,platform-tools,build-tools-25.0.2,android-25,extra-google-m2repository,extra-google-google_play_services,extra-android-m2repository + - echo y | android update sdk --no-ui --all --filter tools,platform-tools,build-tools-25.0.3,android-25,extra-google-m2repository,extra-google-google_play_services,extra-android-m2repository # Constraint Layout / [Solver for ConstraintLayout 1.0.0-alpha8, ConstraintLayout for Android 1.0.0-alpha8] - mkdir -p $ANDROID_HOME/licenses/ - echo "8933bad161af4178b1185d1a37fbf41ea5269c55" > $ANDROID_HOME/licenses/android-sdk-license - echo "84831b9409646a918e30573bab4c9c91346d8abd" > $ANDROID_HOME/licenses/android-sdk-preview-licens - ANDROID_HOME=/usr/local/android-sdk-linux ./gradlew dependencies +compile: + pre: + - ./gradlew --version + override: + - ./gradlew assembleDebug + post: + - mv app/build/outputs/apk/app-debug.apk $CIRCLE_ARTIFACTS + test: override: - ./gradlew test - ./gradlew check - - ./gradlew assembleDebug - - cp app/build/outputs/apk/app-debug.apk $CIRCLE_ARTIFACTS + - ./gradlew codacyUpload + post: + - mv app/build/reports/tests/ $CIRCLE_ARTIFACTS/tests + - mv app/build/reports/lint-results.html $CIRCLE_ARTIFACTS + - mv app/build/reports/jacoco/jacocoTestDebugUnitTestReport/ $CIRCLE_ARTIFACTS/coverage