mirror of https://github.com/apache/jclouds.git
added profile to cloudsigma impl
This commit is contained in:
parent
f1288fed4c
commit
722d81a90d
|
@ -35,9 +35,11 @@ import org.jclouds.cloudsigma.binders.BindServerToPlainTextString;
|
|||
import org.jclouds.cloudsigma.domain.Drive;
|
||||
import org.jclouds.cloudsigma.domain.DriveData;
|
||||
import org.jclouds.cloudsigma.domain.DriveInfo;
|
||||
import org.jclouds.cloudsigma.domain.ProfileInfo;
|
||||
import org.jclouds.cloudsigma.domain.Server;
|
||||
import org.jclouds.cloudsigma.domain.ServerInfo;
|
||||
import org.jclouds.cloudsigma.functions.KeyValuesDelimitedByBlankLinesToDriveInfo;
|
||||
import org.jclouds.cloudsigma.functions.KeyValuesDelimitedByBlankLinesToProfileInfo;
|
||||
import org.jclouds.cloudsigma.functions.KeyValuesDelimitedByBlankLinesToServerInfo;
|
||||
import org.jclouds.cloudsigma.functions.ListOfKeyValuesDelimitedByBlankLinesToDriveInfoSet;
|
||||
import org.jclouds.cloudsigma.functions.ListOfKeyValuesDelimitedByBlankLinesToServerInfoSet;
|
||||
|
@ -101,13 +103,22 @@ public interface CloudSigmaAsyncClient {
|
|||
ListenableFuture<DriveInfo> cloneDrive(@PathParam("uuid") String sourceUuid,
|
||||
@MapPayloadParam("name") String newName, CloneDriveOptions... options);
|
||||
|
||||
/**
|
||||
* @see CloudSigmaClient#getProfileInfo
|
||||
*/
|
||||
@GET
|
||||
@Path("/profile/info")
|
||||
@ExceptionParser(ReturnNullOnNotFoundOr404.class)
|
||||
@ResponseParser(KeyValuesDelimitedByBlankLinesToProfileInfo.class)
|
||||
ListenableFuture<ProfileInfo> getProfileInfo();
|
||||
|
||||
/**
|
||||
* @see CloudSigmaClient#listDriveInfo
|
||||
*/
|
||||
@GET
|
||||
@Path("/drives/info")
|
||||
@ResponseParser(ListOfKeyValuesDelimitedByBlankLinesToDriveInfoSet.class)
|
||||
ListenableFuture<Set<org.jclouds.cloudsigma.domain.DriveInfo>> listDriveInfo();
|
||||
ListenableFuture<Set<DriveInfo>> listDriveInfo();
|
||||
|
||||
/**
|
||||
* @see CloudSigmaClient#getDriveInfo
|
||||
|
@ -143,8 +154,7 @@ public interface CloudSigmaAsyncClient {
|
|||
@ExceptionParser(ReturnNullOnNotFoundOr404.class)
|
||||
@ResponseParser(KeyValuesDelimitedByBlankLinesToServerInfo.class)
|
||||
@Path("/servers/create")
|
||||
ListenableFuture<ServerInfo> createServer(
|
||||
@BinderParam(BindServerToPlainTextString.class) Server createServer);
|
||||
ListenableFuture<ServerInfo> createServer(@BinderParam(BindServerToPlainTextString.class) Server createServer);
|
||||
|
||||
/**
|
||||
* @see CloudSigmaClient#listServerInfo
|
||||
|
|
|
@ -25,6 +25,7 @@ import java.util.concurrent.TimeUnit;
|
|||
import org.jclouds.cloudsigma.domain.Drive;
|
||||
import org.jclouds.cloudsigma.domain.DriveData;
|
||||
import org.jclouds.cloudsigma.domain.DriveInfo;
|
||||
import org.jclouds.cloudsigma.domain.ProfileInfo;
|
||||
import org.jclouds.cloudsigma.domain.Server;
|
||||
import org.jclouds.cloudsigma.domain.ServerInfo;
|
||||
import org.jclouds.cloudsigma.options.CloneDriveOptions;
|
||||
|
@ -40,6 +41,14 @@ import org.jclouds.concurrent.Timeout;
|
|||
*/
|
||||
@Timeout(duration = 60, timeUnit = TimeUnit.SECONDS)
|
||||
public interface CloudSigmaClient {
|
||||
|
||||
/**
|
||||
* Get profile info
|
||||
*
|
||||
* @return info or null, if not found
|
||||
*/
|
||||
ProfileInfo getProfileInfo();
|
||||
|
||||
/**
|
||||
* list of server uuids in your account
|
||||
*
|
||||
|
|
|
@ -0,0 +1,198 @@
|
|||
/**
|
||||
*
|
||||
* Copyright (C) 2010 Cloud Conscious, LLC. <info@cloudconscious.com>
|
||||
*
|
||||
* ====================================================================
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
* ====================================================================
|
||||
*/
|
||||
|
||||
package org.jclouds.cloudsigma.domain;
|
||||
|
||||
import static com.google.common.base.Preconditions.checkNotNull;
|
||||
|
||||
/**
|
||||
*
|
||||
* @author Adrian Cole
|
||||
*/
|
||||
public class ProfileInfo {
|
||||
|
||||
public static class Builder {
|
||||
protected String uuid;
|
||||
protected String email;
|
||||
protected String firstName;
|
||||
protected String lastName;
|
||||
protected String nickName;
|
||||
protected ProfileType type = ProfileType.REGULAR;
|
||||
|
||||
public Builder uuid(String uuid) {
|
||||
this.uuid = uuid;
|
||||
return this;
|
||||
}
|
||||
|
||||
public Builder email(String email) {
|
||||
this.email = email;
|
||||
return this;
|
||||
}
|
||||
|
||||
public Builder firstName(String firstName) {
|
||||
this.firstName = firstName;
|
||||
return this;
|
||||
}
|
||||
|
||||
public Builder lastName(String lastName) {
|
||||
this.lastName = lastName;
|
||||
return this;
|
||||
}
|
||||
|
||||
public Builder nickName(String nickName) {
|
||||
this.nickName = nickName;
|
||||
return this;
|
||||
}
|
||||
|
||||
public Builder type(ProfileType type) {
|
||||
this.type = type;
|
||||
return this;
|
||||
}
|
||||
|
||||
public ProfileInfo build() {
|
||||
return new ProfileInfo(uuid, email, firstName, lastName, nickName, type);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
protected final String uuid;
|
||||
protected final String email;
|
||||
protected final String firstName;
|
||||
protected final String lastName;
|
||||
protected final String nickName;
|
||||
protected final ProfileType type;
|
||||
|
||||
public ProfileInfo(String uuid, String email, String firstName, String lastName, String nickName, ProfileType type) {
|
||||
this.uuid = checkNotNull(uuid, "uuid");
|
||||
this.email = checkNotNull(email, "email");
|
||||
this.firstName = checkNotNull(firstName, "firstName");
|
||||
this.lastName = checkNotNull(lastName, "lastName");
|
||||
this.nickName = checkNotNull(nickName, "nickName");
|
||||
this.type = checkNotNull(type, "type");
|
||||
}
|
||||
|
||||
/**
|
||||
*
|
||||
* @return uuid of the profile.
|
||||
*/
|
||||
public String getUuid() {
|
||||
return uuid;
|
||||
}
|
||||
|
||||
/**
|
||||
* Checks for valid email address
|
||||
*
|
||||
* @return email of the profile.
|
||||
*/
|
||||
public String getEmail() {
|
||||
return email;
|
||||
}
|
||||
|
||||
/**
|
||||
*
|
||||
* @return firstName of the profile.
|
||||
*/
|
||||
protected String getFirstName() {
|
||||
return firstName;
|
||||
}
|
||||
|
||||
/**
|
||||
*
|
||||
* @return lastName of the profile.
|
||||
*/
|
||||
protected String getLastName() {
|
||||
return lastName;
|
||||
}
|
||||
|
||||
/**
|
||||
* Used in phpBB nick name
|
||||
*
|
||||
* @return nickName of the profile.
|
||||
*/
|
||||
protected String getNickName() {
|
||||
return nickName;
|
||||
}
|
||||
|
||||
/**
|
||||
*
|
||||
* @return type of the profile.
|
||||
*/
|
||||
protected ProfileType getType() {
|
||||
return type;
|
||||
}
|
||||
|
||||
@Override
|
||||
public int hashCode() {
|
||||
final int prime = 31;
|
||||
int result = 1;
|
||||
result = prime * result + ((email == null) ? 0 : email.hashCode());
|
||||
result = prime * result + ((firstName == null) ? 0 : firstName.hashCode());
|
||||
result = prime * result + ((lastName == null) ? 0 : lastName.hashCode());
|
||||
result = prime * result + ((nickName == null) ? 0 : nickName.hashCode());
|
||||
result = prime * result + ((type == null) ? 0 : type.hashCode());
|
||||
result = prime * result + ((uuid == null) ? 0 : uuid.hashCode());
|
||||
return result;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean equals(Object obj) {
|
||||
if (this == obj)
|
||||
return true;
|
||||
if (obj == null)
|
||||
return false;
|
||||
if (getClass() != obj.getClass())
|
||||
return false;
|
||||
ProfileInfo other = (ProfileInfo) obj;
|
||||
if (email == null) {
|
||||
if (other.email != null)
|
||||
return false;
|
||||
} else if (!email.equals(other.email))
|
||||
return false;
|
||||
if (firstName == null) {
|
||||
if (other.firstName != null)
|
||||
return false;
|
||||
} else if (!firstName.equals(other.firstName))
|
||||
return false;
|
||||
if (lastName == null) {
|
||||
if (other.lastName != null)
|
||||
return false;
|
||||
} else if (!lastName.equals(other.lastName))
|
||||
return false;
|
||||
if (nickName == null) {
|
||||
if (other.nickName != null)
|
||||
return false;
|
||||
} else if (!nickName.equals(other.nickName))
|
||||
return false;
|
||||
if (type != other.type)
|
||||
return false;
|
||||
if (uuid == null) {
|
||||
if (other.uuid != null)
|
||||
return false;
|
||||
} else if (!uuid.equals(other.uuid))
|
||||
return false;
|
||||
return true;
|
||||
}
|
||||
|
||||
@Override
|
||||
public String toString() {
|
||||
return "[uuid=" + uuid + ", email=" + email + ", firstName=" + firstName + ", lastName=" + lastName
|
||||
+ ", nickName=" + nickName + ", type=" + type + "]";
|
||||
}
|
||||
|
||||
}
|
|
@ -0,0 +1,47 @@
|
|||
/**
|
||||
*
|
||||
* Copyright (C) 2010 Cloud Conscious, LLC. <info@cloudconscious.com>
|
||||
*
|
||||
* ====================================================================
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
* ====================================================================
|
||||
*/
|
||||
|
||||
package org.jclouds.cloudsigma.domain;
|
||||
|
||||
import static com.google.common.base.Preconditions.checkNotNull;
|
||||
|
||||
/**
|
||||
*
|
||||
* @author Adrian Cole
|
||||
*/
|
||||
public enum ProfileType {
|
||||
REGULAR, UNRECOGNIZED;
|
||||
public String value() {
|
||||
return name().toLowerCase();
|
||||
}
|
||||
|
||||
@Override
|
||||
public String toString() {
|
||||
return value();
|
||||
}
|
||||
|
||||
public static ProfileType fromValue(String type) {
|
||||
try {
|
||||
return valueOf(checkNotNull(type, "type").toUpperCase());
|
||||
} catch (IllegalArgumentException e) {
|
||||
return UNRECOGNIZED;
|
||||
}
|
||||
}
|
||||
|
||||
}
|
|
@ -0,0 +1,53 @@
|
|||
/**
|
||||
*
|
||||
* Copyright (C) 2010 Cloud Conscious, LLC. <info@cloudconscious.com>
|
||||
*
|
||||
* ====================================================================
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
* ====================================================================
|
||||
*/
|
||||
|
||||
package org.jclouds.cloudsigma.functions;
|
||||
|
||||
import java.util.Set;
|
||||
|
||||
import javax.inject.Inject;
|
||||
import javax.inject.Singleton;
|
||||
|
||||
import org.jclouds.cloudsigma.domain.ProfileInfo;
|
||||
import org.jclouds.http.HttpResponse;
|
||||
|
||||
import com.google.common.base.Function;
|
||||
import com.google.common.collect.Iterables;
|
||||
|
||||
/**
|
||||
*
|
||||
* @author Adrian Cole
|
||||
*/
|
||||
@Singleton
|
||||
public class KeyValuesDelimitedByBlankLinesToProfileInfo implements Function<HttpResponse, ProfileInfo> {
|
||||
private final ListOfKeyValuesDelimitedByBlankLinesToProfileInfoSet setParser;
|
||||
|
||||
@Inject
|
||||
public KeyValuesDelimitedByBlankLinesToProfileInfo(ListOfKeyValuesDelimitedByBlankLinesToProfileInfoSet setParser) {
|
||||
this.setParser = setParser;
|
||||
}
|
||||
|
||||
@Override
|
||||
public ProfileInfo apply(HttpResponse response) {
|
||||
Set<ProfileInfo> drives = setParser.apply(response);
|
||||
if (drives.size() == 0)
|
||||
return null;
|
||||
return Iterables.get(drives, 0);
|
||||
}
|
||||
}
|
|
@ -0,0 +1,60 @@
|
|||
/**
|
||||
*
|
||||
* Copyright (C) 2010 Cloud Conscious, LLC. <info@cloudconscious.com>
|
||||
*
|
||||
* ====================================================================
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
* ====================================================================
|
||||
*/
|
||||
|
||||
package org.jclouds.cloudsigma.functions;
|
||||
|
||||
import java.util.Set;
|
||||
|
||||
import javax.inject.Inject;
|
||||
import javax.inject.Singleton;
|
||||
|
||||
import org.jclouds.cloudsigma.domain.ProfileInfo;
|
||||
import org.jclouds.http.HttpResponse;
|
||||
import org.jclouds.http.functions.ReturnStringIf2xx;
|
||||
|
||||
import com.google.common.base.Function;
|
||||
import com.google.common.collect.ImmutableSet;
|
||||
import com.google.common.collect.Iterables;
|
||||
|
||||
/**
|
||||
*
|
||||
* @author Adrian Cole
|
||||
*/
|
||||
@Singleton
|
||||
public class ListOfKeyValuesDelimitedByBlankLinesToProfileInfoSet implements Function<HttpResponse, Set<ProfileInfo>> {
|
||||
private final ReturnStringIf2xx returnStringIf200;
|
||||
private final ListOfKeyValuesDelimitedByBlankLinesToListOfMaps mapConverter;
|
||||
private final MapToProfileInfo mapToProfile;
|
||||
|
||||
@Inject
|
||||
ListOfKeyValuesDelimitedByBlankLinesToProfileInfoSet(ReturnStringIf2xx returnStringIf200,
|
||||
ListOfKeyValuesDelimitedByBlankLinesToListOfMaps mapConverter, MapToProfileInfo mapToProfile) {
|
||||
this.returnStringIf200 = returnStringIf200;
|
||||
this.mapConverter = mapConverter;
|
||||
this.mapToProfile = mapToProfile;
|
||||
}
|
||||
|
||||
@Override
|
||||
public Set<ProfileInfo> apply(HttpResponse response) {
|
||||
String text = returnStringIf200.apply(response);
|
||||
if (text == null || text.trim().equals(""))
|
||||
return ImmutableSet.<ProfileInfo> of();
|
||||
return ImmutableSet.copyOf(Iterables.transform(mapConverter.apply(text), mapToProfile));
|
||||
}
|
||||
}
|
|
@ -0,0 +1,63 @@
|
|||
/**
|
||||
*
|
||||
* Copyright (C) 2010 Cloud Conscious, LLC. <info@cloudconscious.com>
|
||||
*
|
||||
* ====================================================================
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
* ====================================================================
|
||||
*/
|
||||
|
||||
package org.jclouds.cloudsigma.functions;
|
||||
|
||||
import java.util.Map;
|
||||
|
||||
import javax.annotation.Resource;
|
||||
import javax.inject.Singleton;
|
||||
|
||||
import org.jclouds.cloudsigma.domain.ProfileInfo;
|
||||
import org.jclouds.cloudsigma.domain.ProfileType;
|
||||
import org.jclouds.logging.Logger;
|
||||
|
||||
import com.google.common.base.Function;
|
||||
|
||||
/**
|
||||
*
|
||||
* @author Adrian Cole
|
||||
*/
|
||||
@Singleton
|
||||
public class MapToProfileInfo implements Function<Map<String, String>, ProfileInfo> {
|
||||
|
||||
@Resource
|
||||
protected Logger logger = Logger.NULL;
|
||||
|
||||
@Override
|
||||
public ProfileInfo apply(Map<String, String> from) {
|
||||
if (from.size() == 0)
|
||||
return null;
|
||||
if (from.size() == 0)
|
||||
return null;
|
||||
ProfileInfo.Builder builder = new ProfileInfo.Builder();
|
||||
builder.uuid(from.get("uuid"));
|
||||
builder.email(from.get("email"));
|
||||
builder.firstName(from.get("first_name"));
|
||||
builder.lastName(from.get("last_name"));
|
||||
builder.nickName(from.get("nick_name"));
|
||||
builder.type(ProfileType.fromValue(from.get("type")));
|
||||
try {
|
||||
return builder.build();
|
||||
} catch (NullPointerException e) {
|
||||
logger.trace("entry missing data: %s; %s", e.getMessage(), from);
|
||||
return null;
|
||||
}
|
||||
}
|
||||
}
|
|
@ -31,6 +31,7 @@ import org.jclouds.cloudsigma.domain.Drive;
|
|||
import org.jclouds.cloudsigma.domain.DriveData;
|
||||
import org.jclouds.cloudsigma.domain.Server;
|
||||
import org.jclouds.cloudsigma.functions.KeyValuesDelimitedByBlankLinesToDriveInfo;
|
||||
import org.jclouds.cloudsigma.functions.KeyValuesDelimitedByBlankLinesToProfileInfo;
|
||||
import org.jclouds.cloudsigma.functions.KeyValuesDelimitedByBlankLinesToServerInfo;
|
||||
import org.jclouds.cloudsigma.functions.ListOfKeyValuesDelimitedByBlankLinesToDriveInfoSet;
|
||||
import org.jclouds.cloudsigma.functions.ListOfKeyValuesDelimitedByBlankLinesToServerInfoSet;
|
||||
|
@ -61,6 +62,21 @@ import com.google.inject.TypeLiteral;
|
|||
@Test(groups = "unit", testName = "CloudSigmaAsyncClientTest")
|
||||
public class CloudSigmaAsyncClientTest extends RestClientTest<CloudSigmaAsyncClient> {
|
||||
|
||||
public void testGetProfileInfo() throws SecurityException, NoSuchMethodException, IOException {
|
||||
Method method = CloudSigmaAsyncClient.class.getMethod("getProfileInfo");
|
||||
HttpRequest httpRequest = processor.createRequest(method);
|
||||
|
||||
assertRequestLineEquals(httpRequest, "GET https://api.cloudsigma.com/profile/info HTTP/1.1");
|
||||
assertNonPayloadHeadersEqual(httpRequest, "Accept: text/plain\n");
|
||||
assertPayloadEquals(httpRequest, null, null, false);
|
||||
|
||||
assertResponseParserClassEquals(method, httpRequest, KeyValuesDelimitedByBlankLinesToProfileInfo.class);
|
||||
assertSaxResponseParserClassEquals(method, null);
|
||||
assertExceptionParserClassEquals(method, ReturnNullOnNotFoundOr404.class);
|
||||
|
||||
checkFilters(httpRequest);
|
||||
|
||||
}
|
||||
public void testListStandardDrives() throws SecurityException, NoSuchMethodException, IOException {
|
||||
Method method = CloudSigmaAsyncClient.class.getMethod("listStandardDrives");
|
||||
HttpRequest httpRequest = processor.createRequest(method);
|
||||
|
|
|
@ -38,6 +38,7 @@ import org.jclouds.cloudsigma.domain.DriveStatus;
|
|||
import org.jclouds.cloudsigma.domain.DriveType;
|
||||
import org.jclouds.cloudsigma.domain.IDEDevice;
|
||||
import org.jclouds.cloudsigma.domain.Model;
|
||||
import org.jclouds.cloudsigma.domain.ProfileInfo;
|
||||
import org.jclouds.cloudsigma.domain.Server;
|
||||
import org.jclouds.cloudsigma.domain.ServerInfo;
|
||||
import org.jclouds.cloudsigma.domain.ServerStatus;
|
||||
|
@ -128,6 +129,12 @@ public class CloudSigmaClientLiveTest {
|
|||
assertNotNull(servers);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testGetProfileInfo() throws Exception {
|
||||
ProfileInfo profile = client.getProfileInfo();
|
||||
assertNotNull(profile);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testListServerInfo() throws Exception {
|
||||
Set<? extends ServerInfo> servers = client.listServerInfo();
|
||||
|
|
|
@ -0,0 +1,50 @@
|
|||
/**
|
||||
*
|
||||
* Copyright (C) 2010 Cloud Conscious, LLC. <info@cloudconscious.com>
|
||||
*
|
||||
* ====================================================================
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
* ====================================================================
|
||||
*/
|
||||
|
||||
package org.jclouds.cloudsigma.functions;
|
||||
|
||||
import static org.testng.Assert.assertEquals;
|
||||
|
||||
import org.jclouds.http.HttpResponse;
|
||||
import org.jclouds.io.Payloads;
|
||||
import org.testng.annotations.Test;
|
||||
|
||||
import com.google.inject.Guice;
|
||||
|
||||
/**
|
||||
*
|
||||
* @author Adrian Cole
|
||||
*/
|
||||
@Test(groups = { "unit" })
|
||||
public class KeyValuesDelimitedByBlankLinesToProfileInfoTest {
|
||||
|
||||
private static final KeyValuesDelimitedByBlankLinesToProfileInfo FN = Guice.createInjector().getInstance(
|
||||
KeyValuesDelimitedByBlankLinesToProfileInfo.class);
|
||||
|
||||
public void testNone() {
|
||||
assertEquals(FN.apply(new HttpResponse(200, "", Payloads.newStringPayload(""))), null);
|
||||
assertEquals(FN.apply(new HttpResponse(200, "", Payloads.newStringPayload("\n\n"))), null);
|
||||
assertEquals(FN.apply(new HttpResponse(200, "", null)), null);
|
||||
}
|
||||
|
||||
public void testOne() {
|
||||
assertEquals(FN.apply(new HttpResponse(200, "", Payloads.newInputStreamPayload(MapToProfileInfoTest.class
|
||||
.getResourceAsStream("/profile.txt")))), MapToProfileInfoTest.ONE);
|
||||
}
|
||||
}
|
|
@ -0,0 +1,58 @@
|
|||
/**
|
||||
*
|
||||
* Copyright (C) 2010 Cloud Conscious, LLC. <info@cloudconscious.com>
|
||||
*
|
||||
* ====================================================================
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
* ====================================================================
|
||||
*/
|
||||
|
||||
package org.jclouds.cloudsigma.functions;
|
||||
|
||||
import static org.testng.Assert.assertEquals;
|
||||
|
||||
import java.io.IOException;
|
||||
import java.util.Map;
|
||||
|
||||
import org.jclouds.cloudsigma.domain.ProfileInfo;
|
||||
import org.jclouds.cloudsigma.domain.ProfileType;
|
||||
import org.jclouds.util.Strings2;
|
||||
import org.testng.annotations.Test;
|
||||
|
||||
import com.google.common.collect.ImmutableMap;
|
||||
|
||||
/**
|
||||
*
|
||||
* @author Adrian Cole
|
||||
*/
|
||||
@Test(groups = { "unit" })
|
||||
public class MapToProfileInfoTest {
|
||||
public static ProfileInfo ONE = new ProfileInfo.Builder().type(ProfileType.REGULAR)//
|
||||
.uuid("58ca3c1f-7629-4771-9b71-863f40153ba4")//
|
||||
.email("adrian@jclouds.org").firstName("Adrian").lastName("Cole").nickName("jclouds").build();
|
||||
|
||||
private static final MapToProfileInfo MAP_TO_PROFILE = new MapToProfileInfo();
|
||||
|
||||
public void testEmptyMapReturnsNull() {
|
||||
assertEquals(MAP_TO_PROFILE.apply(ImmutableMap.<String, String> of()), null);
|
||||
}
|
||||
|
||||
public void test() throws IOException {
|
||||
|
||||
Map<String, String> input = new ListOfKeyValuesDelimitedByBlankLinesToListOfMaps().apply(
|
||||
Strings2.toStringAndClose(MapToProfileInfoTest.class.getResourceAsStream("/profile.txt"))).get(0);
|
||||
|
||||
assertEquals(MAP_TO_PROFILE.apply(input), ONE);
|
||||
|
||||
}
|
||||
}
|
|
@ -0,0 +1,28 @@
|
|||
uuid 58ca3c1f-7629-4771-9b71-863f40153ba4
|
||||
email adrian@jclouds.org
|
||||
salutation
|
||||
first_name Adrian
|
||||
last_name Cole
|
||||
nick_name jclouds
|
||||
title Mr
|
||||
company Cloud Conscious, LLC.
|
||||
vat
|
||||
country US
|
||||
town 1200 Fulton St. #609
|
||||
language en
|
||||
currency USD
|
||||
address 1200 Fulton St. #609
|
||||
postcode 1200 Fulton St. #609
|
||||
phone 4153180253
|
||||
job_title
|
||||
location
|
||||
facebook
|
||||
twitter
|
||||
xing
|
||||
linkedin
|
||||
website
|
||||
signature
|
||||
ftp_disabled false
|
||||
api_disabled false
|
||||
api_https_only false
|
||||
type regular
|
Loading…
Reference in New Issue