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

[mielecloud] Remove e-mail parameter validation #11073

Merged
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
Original file line number Diff line number Diff line change
Expand Up @@ -23,7 +23,7 @@
* @author Björn Lange - Added locale config parameter, added i18n key collection
* @author Benjamin Bolte - Add pre-heat finished and plate step channels, door state and door alarm channels, info
* state channel and map signal flags from API
* @author Björn Lange - Add elapsed time channel, dish warmer thing
* @author Björn Lange - Add elapsed time channel, dish warmer thing, removed e-mail validation
*/
@NonNullByDefault
public final class MieleCloudBindingConstants {
Expand Down Expand Up @@ -227,7 +227,6 @@ private I18NKeys() {
public static final String BRIDGE_STATUS_DESCRIPTION_ACCESS_TOKEN_NOT_CONFIGURED = "@text/mielecloud.bridge.status.access.token.not.configured";
public static final String BRIDGE_STATUS_DESCRIPTION_ACCOUNT_NOT_AUTHORIZED = "@text/mielecloud.bridge.status.account.not.authorized";
public static final String BRIDGE_STATUS_DESCRIPTION_ACCESS_TOKEN_REFRESH_FAILED = "@text/mielecloud.bridge.status.access.token.refresh.failed";
public static final String BRIDGE_STATUS_DESCRIPTION_INVALID_EMAIL = "@text/mielecloud.bridge.status.invalid.email";
public static final String BRIDGE_STATUS_DESCRIPTION_TRANSIENT_HTTP_ERROR = "@text/mielecloud.bridge.status.transient.http.error";

public static final String THING_STATUS_DESCRIPTION_WEBSERVICE_MISSING = "@text/mielecloud.thing.status.webservice.missing";
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -23,7 +23,6 @@
import org.openhab.binding.mielecloud.internal.config.exception.BridgeCreationFailedException;
import org.openhab.binding.mielecloud.internal.config.exception.BridgeReconfigurationFailedException;
import org.openhab.binding.mielecloud.internal.handler.MieleBridgeHandler;
import org.openhab.binding.mielecloud.internal.util.EmailValidator;
import org.openhab.binding.mielecloud.internal.util.LocaleValidator;
import org.openhab.core.config.discovery.DiscoveryResult;
import org.openhab.core.config.discovery.DiscoveryResultBuilder;
Expand Down Expand Up @@ -96,11 +95,6 @@ protected String getRedirectionDestination(HttpServletRequest request) {
return "/mielecloud/failure?" + FailureServlet.MALFORMED_BRIDGE_UID_PARAMETER_NAME + "=true";
}

if (!EmailValidator.isValid(email)) {
logger.warn("Cannot create bridge: E-mail address '{}' is malformed.", email);
return "/mielecloud/failure?" + FailureServlet.MALFORMED_EMAIL_PARAMETER_NAME + "=true";
}

String locale = getValidLocale(request.getParameter(LOCALE_PARAMETER_NAME));

logger.debug("Auto configuring Miele account using locale '{}' (requested locale was '{}')", locale,
Expand Down Expand Up @@ -131,7 +125,7 @@ private Thing pairOrReconfigureBridge(String locale, ThingUID bridgeUid, String
if (inbox.add(result)) {
return pairBridge(bridgeUid);
} else {
return reconfigureBridge(bridgeUid, locale, email);
return reconfigureBridge(bridgeUid);
}
}

Expand All @@ -145,7 +139,7 @@ private Thing pairBridge(ThingUID thingUid) {
return thing;
}

private Thing reconfigureBridge(ThingUID thingUid, String locale, String email) {
private Thing reconfigureBridge(ThingUID thingUid) {
logger.debug("Thing already exists. Modifying configuration.");
Thing thing = thingRegistry.get(thingUid);
if (thing == null) {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -35,7 +35,6 @@ public class FailureServlet extends AbstractShowPageServlet {
public static final String MISSING_BRIDGE_UID_PARAMETER_NAME = "missingBridgeUid";
public static final String MISSING_EMAIL_PARAMETER_NAME = "missingEmail";
public static final String MALFORMED_BRIDGE_UID_PARAMETER_NAME = "malformedBridgeUid";
public static final String MALFORMED_EMAIL_PARAMETER_NAME = "malformedEmail";
public static final String MISSING_REQUEST_URL_PARAMETER_NAME = "missingRequestUrl";

public static final String OAUTH2_ERROR_ACCESS_DENIED = "access_denied";
Expand Down Expand Up @@ -80,8 +79,6 @@ private String getErrorMessage(HttpServletRequest request) {
return "Missing e-mail address.";
} else if (ServletUtil.isParameterEnabled(request, MALFORMED_BRIDGE_UID_PARAMETER_NAME)) {
return "Malformed bridge UID.";
} else if (ServletUtil.isParameterEnabled(request, MALFORMED_EMAIL_PARAMETER_NAME)) {
return "Malformed e-mail address.";
} else if (ServletUtil.isParameterEnabled(request, MISSING_REQUEST_URL_PARAMETER_NAME)) {
return "Missing request URL. Please try the config flow again.";
} else {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -24,7 +24,6 @@
import org.openhab.binding.mielecloud.internal.config.OAuthAuthorizationHandler;
import org.openhab.binding.mielecloud.internal.config.exception.NoOngoingAuthorizationException;
import org.openhab.binding.mielecloud.internal.config.exception.OngoingAuthorizationException;
import org.openhab.binding.mielecloud.internal.util.EmailValidator;
import org.openhab.core.thing.ThingUID;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
Expand Down Expand Up @@ -98,11 +97,6 @@ protected String getRedirectionDestination(HttpServletRequest request) {
return getErrorRedirectionUrl(PairAccountServlet.MALFORMED_BRIDGE_ID_PARAMETER_NAME);
}

if (!EmailValidator.isValid(email)) {
logger.warn("Passed e-mail address '{}' is invalid.", email);
return getErrorRedirectionUrl(PairAccountServlet.MALFORMED_EMAIL_PARAMETER_NAME);
}

try {
authorizationHandler.beginAuthorization(clientId, clientSecret, bridgeUid, email);
} catch (OngoingAuthorizationException e) {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -37,7 +37,6 @@ public final class PairAccountServlet extends AbstractShowPageServlet {
public static final String MISSING_BRIDGE_ID_PARAMETER_NAME = "missingBridgeId";
public static final String MISSING_EMAIL_PARAMETER_NAME = "missingEmail";
public static final String MALFORMED_BRIDGE_ID_PARAMETER_NAME = "malformedBridgeId";
public static final String MALFORMED_EMAIL_PARAMETER_NAME = "malformedEmail";
public static final String FAILED_TO_DERIVE_REDIRECT_URL_PARAMETER_NAME = "failedToDeriveRedirectUrl";
public static final String ONGOING_AUTHORIZATION_IN_STEP1_EXPIRES_IN_MINUTES_PARAMETER_NAME = "ongoingAuthorizationInStep1ExpiresInMinutes";
public static final String ONGOING_AUTHORIZATION_UNKNOWN_EXPIRY_TIME = "unknown";
Expand Down Expand Up @@ -93,9 +92,6 @@ private String renderErrorMessage(HttpServletRequest request, String skeleton) {
} else if (ServletUtil.isParameterEnabled(request, MALFORMED_BRIDGE_ID_PARAMETER_NAME)) {
return skeleton.replace(ERROR_MESSAGE_PLACEHOLDER,
"<div class=\"alert alert-danger\" role=\"alert\">Malformed bridge ID. A bridge ID may only contain letters, numbers, '-' and '_'!</div>");
} else if (ServletUtil.isParameterEnabled(request, MALFORMED_EMAIL_PARAMETER_NAME)) {
return skeleton.replace(ERROR_MESSAGE_PLACEHOLDER,
"<div class=\"alert alert-danger\" role=\"alert\">Malformed e-mail address.</div>");
} else if (ServletUtil.isParameterEnabled(request, FAILED_TO_DERIVE_REDIRECT_URL_PARAMETER_NAME)) {
return skeleton.replace(ERROR_MESSAGE_PLACEHOLDER,
"<div class=\"alert alert-danger\" role=\"alert\">Failed to derive redirect URL.</div>");
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -23,7 +23,6 @@

import org.eclipse.jdt.annotation.NonNullByDefault;
import org.openhab.binding.mielecloud.internal.config.ThingsTemplateGenerator;
import org.openhab.binding.mielecloud.internal.util.EmailValidator;
import org.openhab.binding.mielecloud.internal.webservice.language.LanguageProvider;
import org.openhab.core.thing.ThingUID;
import org.slf4j.Logger;
Expand Down Expand Up @@ -97,12 +96,6 @@ protected String handleGetRequest(HttpServletRequest request, HttpServletRespons
"Malformed bridge UID.");
}

if (!EmailValidator.isValid(email)) {
logger.warn("Success page received malformed e-mail address '{}'.", email);
return getResourceLoader().loadResourceAsString("failure.html").replace(ERROR_MESSAGE_TEXT_PLACEHOLDER,
"Malformed e-mail address.");
}

String skeleton = getResourceLoader().loadResourceAsString("success.html");
skeleton = renderErrorMessage(request, skeleton);
skeleton = renderBridgeUid(skeleton, bridgeUid);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -30,7 +30,6 @@
import org.openhab.binding.mielecloud.internal.auth.OAuthTokenRefreshListener;
import org.openhab.binding.mielecloud.internal.auth.OAuthTokenRefresher;
import org.openhab.binding.mielecloud.internal.discovery.ThingDiscoveryService;
import org.openhab.binding.mielecloud.internal.util.EmailValidator;
import org.openhab.binding.mielecloud.internal.util.LocaleValidator;
import org.openhab.binding.mielecloud.internal.webservice.ConnectionError;
import org.openhab.binding.mielecloud.internal.webservice.ConnectionStatusListener;
Expand Down Expand Up @@ -58,7 +57,7 @@
*
* @author Roland Edelhoff - Initial contribution
* @author Björn Lange - Introduced CombiningLanguageProvider field and interactions, added LanguageProvider super
* interface, switched from polling to SSE, added support for multiple bridges
* interface, switched from polling to SSE, added support for multiple bridges, removed e-mail validation
*/
@NonNullByDefault
public class MieleBridgeHandler extends BaseBridgeHandler
Expand Down Expand Up @@ -122,14 +121,6 @@ public void initialize() {
}

public void initializeWebservice() {
if (!EmailValidator.isValid(getConfig().get(MieleCloudBindingConstants.CONFIG_PARAM_EMAIL).toString())) {
updateStatus(ThingStatus.OFFLINE, ThingStatusDetail.CONFIGURATION_ERROR,
I18NKeys.BRIDGE_STATUS_DESCRIPTION_INVALID_EMAIL);
// When the e-mail configuration is changed a new initialization will be triggered. Therefore, we can leave
// the bridge in this state.
return;
}

try {
webService = webserviceFactory.get();
} catch (MieleWebserviceInitializationException e) {
Expand Down

This file was deleted.

Original file line number Diff line number Diff line change
Expand Up @@ -245,7 +245,6 @@ channel-type.mielecloud.battery_level.description=The battery level of the robot
mielecloud.bridge.status.access.token.not.configured=The OAuth2 access token is not configured.
mielecloud.bridge.status.account.not.authorized=The account has not been authorized. Please consult the documentation on how to do that.
mielecloud.bridge.status.access.token.refresh.failed=Failed to refresh the OAuth2 access token. Please authorize the account again.
mielecloud.bridge.status.invalid.email=The configured e-mail address has an invalid format.
mielecloud.bridge.status.transient.http.error=An unexpected HTTP error occurred. Check the logs if this error persists.
mielecloud.thing.status.webservice.missing=The Miele webservice cannot be accessed over the bridge. Check the bridge configuration.
mielecloud.thing.status.removed=This Miele device has been removed from the Miele@home account.
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -53,7 +53,7 @@ <h2>Cloud Binding Configuration</h2>
</div>
<div class="form-group">
<label for="email">E-mail address:</label>
<input type="text" class="form-control" id="email" name="email" placeholder="Enter the e-mail address associated with your Miele Cloud Account" required pattern="[a-zA-Z_0-9.+%-]{3,}@([a-zA-Z_0-9-]+[.])+[a-z]+)" />
<input type="text" class="form-control" id="email" name="email" placeholder="Enter the e-mail address associated with your Miele Cloud Account" required />
</div>
<button type="submit" class="btn btn-danger btn-lg">Pair Account</button>
</form>
Expand Down

This file was deleted.

Original file line number Diff line number Diff line change
Expand Up @@ -225,18 +225,4 @@ public void whenAnEmptyEmailIsPassedToBridgeCreationThenTheBrowserIsRedirectedTo
assertTrue(website.contains("Pairing failed!"));
assertTrue(website.contains("Missing e-mail address."));
}

@Test
public void whenAMalformedEmailIsPassedToBridgeCreationThenTheBrowserIsRedirectedToTheFailurePageAndAnErrorIsShown()
throws Exception {
// when:
Website website = getCrawler()
.doGetRelative("/mielecloud/createBridgeThing?" + CreateBridgeServlet.BRIDGE_UID_PARAMETER_NAME + "="
+ MieleCloudBindingIntegrationTestConstants.BRIDGE_THING_UID.getAsString() + "&"
+ CreateBridgeServlet.EMAIL_PARAMETER_NAME + "=openhab.openhab.org");

// then:
assertTrue(website.contains("Pairing failed!"));
assertTrue(website.contains("Malformed e-mail address."));
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -267,23 +267,4 @@ public void whenAnEmptyEmailIsPassedThenTheBrowserIsRedirectedToThePairSiteAndAW
"Go to <a href=\"https://www.miele.com/f/com/en/register_api.aspx\">the Miele developer portal</a> to obtain your"));
assertTrue(maybePairAccountSite.contains("Missing e-mail address."));
}

@Test
public void whenAMalformedEmailIsPassedThenTheBrowserIsRedirectedToThePairSiteAndAWarningIsDisplayed()
throws Exception {
// when:
Website maybePairAccountSite = getCrawler()
.doGetRelative("/mielecloud/forwardToLogin?" + ForwardToLoginServlet.CLIENT_ID_PARAMETER_NAME + "="
+ MieleCloudBindingIntegrationTestConstants.CLIENT_ID + "&"
+ ForwardToLoginServlet.CLIENT_SECRET_PARAMETER_NAME + "="
+ MieleCloudBindingIntegrationTestConstants.CLIENT_SECRET + "&"
+ ForwardToLoginServlet.BRIDGE_ID_PARAMETER_NAME + "="
+ MieleCloudBindingIntegrationTestConstants.BRIDGE_ID + "&"
+ ForwardToLoginServlet.EMAIL_PARAMETER_NAME + "=not_an_Email");

// then:
assertTrue(maybePairAccountSite.contains(
"Go to <a href=\"https://www.miele.com/f/com/en/register_api.aspx\">the Miele developer portal</a> to obtain your"));
assertTrue(maybePairAccountSite.contains("Malformed e-mail address"));
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -131,16 +131,4 @@ public void whenTheSuccessPageIsRequestedAndAnEmptyEmailIsPassedThenTheFailurePa
assertTrue(website.contains("Pairing failed!"));
assertTrue(website.contains("Missing e-mail address."));
}

@Test
public void whenTheSuccessPageIsRequestedAndAMalformedEmailIsPassedThenTheFailurePageIsShown() throws Exception {
// when:
Website website = getCrawler().doGetRelative("/mielecloud/success?" + SuccessServlet.BRIDGE_UID_PARAMETER_NAME
+ "=" + MieleCloudBindingIntegrationTestConstants.BRIDGE_THING_UID.getAsString() + "&"
+ SuccessServlet.EMAIL_PARAMETER_NAME + "=not:an!email");

// then:
assertTrue(website.contains("Pairing failed!"));
assertTrue(website.contains("Malformed e-mail address."));
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -195,21 +195,6 @@ public void testThingStatusIsSetToOfflineWithDetailConfigurationPendingAndDescri
MieleCloudBindingConstants.I18NKeys.BRIDGE_STATUS_DESCRIPTION_ACCESS_TOKEN_NOT_CONFIGURED);
}

@Test
public void testThingStatusIsSetToOfflineWithDetailConfigurationErrorAndDescriptionWhenTheEmailAddressIsInvalid()
throws Exception {
// given:
getBridge().getConfiguration().setProperties(
Collections.singletonMap(MieleCloudBindingConstants.CONFIG_PARAM_EMAIL, "not!a!mail$address"));

// when:
getHandler().initialize();

// then:
assertThingStatusIs(ThingStatus.OFFLINE, ThingStatusDetail.CONFIGURATION_ERROR,
MieleCloudBindingConstants.I18NKeys.BRIDGE_STATUS_DESCRIPTION_INVALID_EMAIL);
}

@Test
public void testThingStatusIsSetToOfflineWithDetailConfigurationErrorAndDescriptionWhenTheMieleAccountHasNotBeenAuthorized()
throws Exception {
Expand Down