From e49870f0bcb92d8db6a0a719db7656af7c126c67 Mon Sep 17 00:00:00 2001 From: Matteo Barbieri Date: Mon, 25 May 2015 23:53:02 +0200 Subject: [PATCH 1/2] #611 Implement RtAlias.email() and RtAlias.email(final String email) --- .../main/java/com/netbout/client/RtAlias.java | 26 ++++++-- .../main/java/com/netbout/client/RtUser.java | 2 +- .../com/netbout/client/RtAliasITCase.java | 64 +++++++++++++++++++ 3 files changed, 87 insertions(+), 5 deletions(-) create mode 100644 netbout-client/src/test/java/com/netbout/client/RtAliasITCase.java diff --git a/netbout-client/src/main/java/com/netbout/client/RtAlias.java b/netbout-client/src/main/java/com/netbout/client/RtAlias.java index ac7d1852d..dcdea72f0 100644 --- a/netbout-client/src/main/java/com/netbout/client/RtAlias.java +++ b/netbout-client/src/main/java/com/netbout/client/RtAlias.java @@ -29,10 +29,13 @@ import com.jcabi.aspects.Immutable; import com.jcabi.aspects.Loggable; import com.jcabi.http.Request; +import com.jcabi.http.response.RestResponse; import com.jcabi.http.response.XmlResponse; +import com.jcabi.log.Logger; import com.netbout.spi.Alias; import com.netbout.spi.Inbox; import java.io.IOException; +import java.net.HttpURLConnection; import java.net.URI; import java.util.Locale; import lombok.EqualsAndHashCode; @@ -103,13 +106,28 @@ public void photo(final URI uri) { } @Override - public String email() { - throw new UnsupportedOperationException("#email() not implemented"); + public String email() throws IOException { + return this.request.fetch() + .as(XmlResponse.class) + .xml() + .xpath("/page/alias/email/text()") + .get(0); } @Override - public void email(final String email) { - throw new UnsupportedOperationException("#email()"); + public void email(final String email) throws IOException { + this.request.fetch() + .as(RestResponse.class) + .assertStatus(HttpURLConnection.HTTP_OK) + .as(XmlResponse.class) + .rel("/page/links/link[@rel='account']/@href") + .fetch() + .as(XmlResponse.class) + .rel("/page/links/link[@rel='save-email']/@href") + .method(Request.POST) + .body().formParam("email", email).back() + .fetch(); + Logger.info(this, "email changed"); } @Override diff --git a/netbout-client/src/main/java/com/netbout/client/RtUser.java b/netbout-client/src/main/java/com/netbout/client/RtUser.java index e93f506fc..71464c108 100644 --- a/netbout-client/src/main/java/com/netbout/client/RtUser.java +++ b/netbout-client/src/main/java/com/netbout/client/RtUser.java @@ -64,7 +64,7 @@ public final class RtUser implements User { * @param token Authentication token */ public RtUser(@NotNull final String token) { - this(URI.create("http://www.netbout.com"), token); + this(URI.create("http://localhost:8080"), token); } /** diff --git a/netbout-client/src/test/java/com/netbout/client/RtAliasITCase.java b/netbout-client/src/test/java/com/netbout/client/RtAliasITCase.java new file mode 100644 index 000000000..6c8afc0b6 --- /dev/null +++ b/netbout-client/src/test/java/com/netbout/client/RtAliasITCase.java @@ -0,0 +1,64 @@ +/** + * Copyright (c) 2009-2015, netbout.com + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are PROHIBITED without prior written permission from + * the author. This product may NOT be used anywhere and on any computer + * except the server platform of netbout Inc. located at www.netbout.com. + * Federal copyright law prohibits unauthorized reproduction by any means + * and imposes fines up to $25,000 for violation. If you received + * this code accidentally and without intent to use it, please report this + * incident to the author by email. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR + * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT + * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT + * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, + * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON + * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT + * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF + * SUCH DAMAGE. + */ +package com.netbout.client; + +import com.netbout.mock.MkBase; +import com.netbout.spi.Alias; +import com.netbout.spi.User; +import org.hamcrest.MatcherAssert; +import org.hamcrest.Matchers; +import org.junit.Rule; +import org.junit.Test; + +/** + * Integration case for {@link RtAlias}. + * @author Matteo Barbieri (barbieri.matteo@gmail.com) + * @version $Id$ + */ +public final class RtAliasITCase { + + /** + * Netbout rule. + * @checkstyle VisibilityModifierCheck (3 lines) + */ + @Rule + public final transient NbRule rule = new NbRule(); + + /** + * RtAlias can update and retrieve its own mail address. + * @throws Exception If there is some problem inside + */ + @Test + public void updateAndRetrieveEmail() throws Exception { + final MkBase base = new MkBase(); + final User user = this.rule.get(); + final Alias alias = user.aliases().iterate().iterator().next(); + final String email = base.randomAlias().email(); + alias.email(email); + MatcherAssert.assertThat(alias.email(), Matchers.is(email)); + } +} From 5e69915f710bcee85b0097968c379dc6fe723e36 Mon Sep 17 00:00:00 2001 From: Matteo Barbieri Date: Mon, 25 May 2015 23:55:42 +0200 Subject: [PATCH 2/2] #611 Removed point to localhost for testing purposes --- netbout-client/src/main/java/com/netbout/client/RtUser.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/netbout-client/src/main/java/com/netbout/client/RtUser.java b/netbout-client/src/main/java/com/netbout/client/RtUser.java index 71464c108..e93f506fc 100644 --- a/netbout-client/src/main/java/com/netbout/client/RtUser.java +++ b/netbout-client/src/main/java/com/netbout/client/RtUser.java @@ -64,7 +64,7 @@ public final class RtUser implements User { * @param token Authentication token */ public RtUser(@NotNull final String token) { - this(URI.create("http://localhost:8080"), token); + this(URI.create("http://www.netbout.com"), token); } /**