AuthenticatorDataUrlTest.java 6.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151
  1. package com.owncloud.android.authentication;
  2. import org.junit.Assert;
  3. import org.junit.Test;
  4. import org.junit.runner.RunWith;
  5. import org.junit.runners.BlockJUnit4ClassRunner;
  6. /**
  7. * Tests to check the parser logic of the login data URL parser.
  8. */
  9. @RunWith(BlockJUnit4ClassRunner.class)
  10. public class AuthenticatorDataUrlTest {
  11. String StandardUrl = "://logindata.nextcloud.com/";
  12. String schemeUrl = "nextcloud://login/";
  13. String plus = "&";
  14. String userValue = "testuser123";
  15. String userUrlPart = "user:" + userValue;
  16. String passwordValue = "testpassword123";
  17. String passwordUrlPart = "password:" + passwordValue;
  18. String addressValue = "testserver123";
  19. String addressUrlPart = "server:" + addressValue;
  20. String[] urlStarts = new String[]{"http" + StandardUrl, "https" + StandardUrl, schemeUrl};
  21. @Test
  22. public void allDataUrlElements() {
  23. String dataUrl = userUrlPart + plus + passwordUrlPart + plus + addressUrlPart;
  24. for (String urlStart : urlStarts) {
  25. LoginUrlInfo info = AuthenticatorActivity.parseLoginDataUrl(urlStart, urlStart + dataUrl);
  26. System.out.println(urlStart + dataUrl);
  27. Assert.assertEquals("Incorrect user value in " + urlStart + " url parsing", userValue, info.username);
  28. Assert.assertEquals("Incorrect user value in " + urlStart + " url parsing", passwordValue, info.password);
  29. Assert.assertEquals("Incorrect user value in " + urlStart + " url parsing", addressValue, info.serverAddress);
  30. }
  31. }
  32. @Test
  33. public void oneElement() {
  34. for (String urlStart : urlStarts) {
  35. System.out.println(urlStart + userUrlPart);
  36. Assert.assertEquals("Incorrect user value in " + urlStart + " url parsing", userValue,
  37. AuthenticatorActivity.parseLoginDataUrl(urlStart, urlStart + userUrlPart).username);
  38. System.out.println(urlStart + passwordUrlPart);
  39. Assert.assertEquals("Incorrect user value in " + urlStart + " url parsing", passwordValue,
  40. AuthenticatorActivity.parseLoginDataUrl(urlStart, urlStart + passwordUrlPart).password);
  41. System.out.println(urlStart + addressUrlPart);
  42. Assert.assertEquals("Incorrect user value in " + urlStart + " url parsing", addressValue,
  43. AuthenticatorActivity.parseLoginDataUrl(urlStart, urlStart + addressUrlPart).serverAddress);
  44. }
  45. }
  46. @Test
  47. public void twoDataUrlElements() {
  48. String dataUrl = userUrlPart + plus + passwordUrlPart;
  49. for (String urlStart : urlStarts) {
  50. System.out.println(urlStart + dataUrl);
  51. LoginUrlInfo info = AuthenticatorActivity.parseLoginDataUrl(urlStart, urlStart + dataUrl);
  52. Assert.assertEquals("Incorrect user value in " + urlStart + dataUrl + " url parsing", userValue, info
  53. .username);
  54. Assert.assertEquals("Incorrect user value in " + urlStart + dataUrl + " url parsing", passwordValue, info
  55. .password);
  56. }
  57. dataUrl = userUrlPart + plus + addressUrlPart;
  58. for (String urlStart : urlStarts) {
  59. System.out.println(urlStart + dataUrl);
  60. LoginUrlInfo info = AuthenticatorActivity.parseLoginDataUrl(urlStart, urlStart + dataUrl);
  61. Assert.assertEquals("Incorrect user value in " + urlStart + dataUrl + " url parsing", userValue, info
  62. .username);
  63. Assert.assertEquals("Incorrect user value in " + urlStart + dataUrl + " url parsing", addressValue,
  64. info.serverAddress);
  65. }
  66. dataUrl = addressUrlPart + plus + userUrlPart;
  67. for (String urlStart : urlStarts) {
  68. System.out.println(urlStart + dataUrl);
  69. LoginUrlInfo info = AuthenticatorActivity.parseLoginDataUrl(urlStart, urlStart + dataUrl);
  70. Assert.assertEquals("Incorrect user value in " + urlStart + dataUrl + " url parsing", userValue, info
  71. .username);
  72. Assert.assertEquals("Incorrect user value in " + urlStart + dataUrl + " url parsing", addressValue,
  73. info.serverAddress);
  74. }
  75. dataUrl = addressUrlPart + plus + passwordUrlPart;
  76. for (String urlStart : urlStarts) {
  77. System.out.println(urlStart + dataUrl);
  78. LoginUrlInfo info = AuthenticatorActivity.parseLoginDataUrl(urlStart, urlStart + dataUrl);
  79. Assert.assertEquals("Incorrect user value in " + urlStart + dataUrl + " url parsing", passwordValue, info
  80. .password);
  81. Assert.assertEquals("Incorrect user value in " + urlStart + dataUrl + " url parsing", addressValue, info
  82. .serverAddress);
  83. }
  84. dataUrl = passwordUrlPart + plus + userUrlPart;
  85. for (String urlStart : urlStarts) {
  86. System.out.println(urlStart + dataUrl);
  87. LoginUrlInfo info = AuthenticatorActivity.parseLoginDataUrl(urlStart, urlStart + dataUrl);
  88. Assert.assertEquals("Incorrect user value in " + urlStart + dataUrl + " url parsing", userValue, info
  89. .username);
  90. Assert.assertEquals("Incorrect user value in " + urlStart + dataUrl + " url parsing", passwordValue, info
  91. .password);
  92. }
  93. dataUrl = passwordUrlPart + plus + addressUrlPart;
  94. for (String urlStart : urlStarts) {
  95. System.out.println(urlStart + dataUrl);
  96. LoginUrlInfo info = AuthenticatorActivity.parseLoginDataUrl(urlStart, urlStart + dataUrl);
  97. Assert.assertEquals("Incorrect user value in " + urlStart + dataUrl + " url parsing", passwordValue, info
  98. .password);
  99. Assert.assertEquals("Incorrect user value in " + urlStart + dataUrl + " url parsing", addressValue, info
  100. .serverAddress);
  101. }
  102. }
  103. @Test
  104. public void tooManyDataUrlElements() {
  105. String dataUrl = userUrlPart + plus + passwordUrlPart + plus + addressUrlPart + plus + "notexist:boom";
  106. for (String urlStart : urlStarts) {
  107. try {
  108. System.out.println(urlStart + dataUrl);
  109. AuthenticatorActivity.parseLoginDataUrl(urlStart, urlStart + dataUrl);
  110. Assert.fail("Illegal Argument Exception expected!");
  111. } catch (IllegalArgumentException e) {
  112. // all well
  113. }
  114. }
  115. }
  116. @Test
  117. public void tooLittleDataUrlElements() {
  118. String dataUrl = "https" + StandardUrl;
  119. for (String urlStart : urlStarts) {
  120. try {
  121. System.out.println(urlStart);
  122. AuthenticatorActivity.parseLoginDataUrl(urlStart, urlStart);
  123. Assert.fail("Illegal Argument Exception expected!");
  124. } catch (IllegalArgumentException e) {
  125. // all well
  126. }
  127. }
  128. }
  129. }