mirror of https://github.com/apache/jclouds.git
Issue 273: updated to latest opscode platform api
This commit is contained in:
parent
c2c15ce633
commit
21b1246e0e
|
@ -46,6 +46,7 @@ import org.jclouds.opscodeplatform.domain.User;
|
|||
import org.jclouds.rest.annotations.BinderParam;
|
||||
import org.jclouds.rest.annotations.Delegate;
|
||||
import org.jclouds.rest.annotations.ExceptionParser;
|
||||
import org.jclouds.rest.annotations.Headers;
|
||||
import org.jclouds.rest.annotations.ParamParser;
|
||||
import org.jclouds.rest.annotations.RequestFilters;
|
||||
import org.jclouds.rest.annotations.ResponseParser;
|
||||
|
@ -66,6 +67,7 @@ import com.google.common.util.concurrent.ListenableFuture;
|
|||
*/
|
||||
@RequestFilters(SignedHeaderAuth.class)
|
||||
@Consumes(MediaType.APPLICATION_JSON)
|
||||
@Headers(keys = "X-Chef-Version", values = ChefAsyncClient.VERSION)
|
||||
public interface OpscodePlatformAsyncClient {
|
||||
/**
|
||||
* @see ChefCookbooks#listCookbooksInOrganization
|
||||
|
|
|
@ -32,7 +32,7 @@ import com.google.common.base.Function;
|
|||
public class OrganizationName implements Function<Object, String> {
|
||||
|
||||
public String apply(Object from) {
|
||||
return ((Organization) from).getName();
|
||||
return ((Organization) from).getFullName();
|
||||
}
|
||||
|
||||
}
|
|
@ -18,74 +18,56 @@
|
|||
*/
|
||||
package org.jclouds.opscodeplatform.domain;
|
||||
|
||||
import static com.google.common.base.Preconditions.checkNotNull;
|
||||
|
||||
import java.security.PrivateKey;
|
||||
|
||||
import com.google.gson.annotations.SerializedName;
|
||||
|
||||
/**
|
||||
* User object.
|
||||
* Organization object.
|
||||
*
|
||||
* @author Adrian Cole
|
||||
*/
|
||||
public class Organization implements Comparable<Organization> {
|
||||
public class Organization {
|
||||
|
||||
public interface Type {
|
||||
public static final String BUSINESS = "Business";
|
||||
public static final String NON_PROFIT = "Non-Profit";
|
||||
public static final String PERSONAL = "Personal";
|
||||
}
|
||||
|
||||
private String guid;
|
||||
@SerializedName("name")
|
||||
private String name;
|
||||
@SerializedName("full_name")
|
||||
private String fullName;
|
||||
private String clientname;
|
||||
@SerializedName("org_type")
|
||||
private String orgType;
|
||||
private String clientname;
|
||||
@SerializedName("private_key")
|
||||
private PrivateKey privateKey;
|
||||
|
||||
public Organization(String name) {
|
||||
this();
|
||||
this.name = name;
|
||||
}
|
||||
|
||||
// hidden but needs to be here for json deserialization to work
|
||||
Organization() {
|
||||
super();
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public int compareTo(Organization o) {
|
||||
return name.compareTo(o.name);
|
||||
public Organization(String name, String fullName, String clientname, String orgType) {
|
||||
this(null, name, fullName, clientname, orgType, null);
|
||||
}
|
||||
|
||||
public String getName() {
|
||||
return name;
|
||||
public Organization(String name, String orgType) {
|
||||
this(null, name, name, name + "-validator", orgType, null);
|
||||
}
|
||||
|
||||
public void setName(String name) {
|
||||
public Organization(String guid, String name, String fullName, String clientname, String orgType,
|
||||
PrivateKey privateKey) {
|
||||
this.guid = guid;
|
||||
this.name = name;
|
||||
}
|
||||
|
||||
public String getFullName() {
|
||||
return fullName;
|
||||
}
|
||||
|
||||
public void setFullName(String fullName) {
|
||||
this.fullName = fullName;
|
||||
}
|
||||
|
||||
public String getOrgType() {
|
||||
return orgType;
|
||||
}
|
||||
|
||||
public void setOrgType(String orgType) {
|
||||
this.orgType = orgType;
|
||||
}
|
||||
|
||||
public String getClientname() {
|
||||
return clientname;
|
||||
}
|
||||
|
||||
public void setClientname(String clientname) {
|
||||
this.clientname = clientname;
|
||||
}
|
||||
|
||||
public PrivateKey getPrivateKey() {
|
||||
return privateKey;
|
||||
this.clientname = checkNotNull(clientname, "clientname");
|
||||
this.orgType = checkNotNull(orgType, "orgType");
|
||||
this.privateKey = privateKey;
|
||||
}
|
||||
|
||||
@Override
|
||||
|
@ -94,8 +76,10 @@ public class Organization implements Comparable<Organization> {
|
|||
int result = 1;
|
||||
result = prime * result + ((clientname == null) ? 0 : clientname.hashCode());
|
||||
result = prime * result + ((fullName == null) ? 0 : fullName.hashCode());
|
||||
result = prime * result + ((guid == null) ? 0 : guid.hashCode());
|
||||
result = prime * result + ((name == null) ? 0 : name.hashCode());
|
||||
result = prime * result + ((orgType == null) ? 0 : orgType.hashCode());
|
||||
result = prime * result + ((privateKey == null) ? 0 : privateKey.hashCode());
|
||||
return result;
|
||||
}
|
||||
|
||||
|
@ -118,6 +102,11 @@ public class Organization implements Comparable<Organization> {
|
|||
return false;
|
||||
} else if (!fullName.equals(other.fullName))
|
||||
return false;
|
||||
if (guid == null) {
|
||||
if (other.guid != null)
|
||||
return false;
|
||||
} else if (!guid.equals(other.guid))
|
||||
return false;
|
||||
if (name == null) {
|
||||
if (other.name != null)
|
||||
return false;
|
||||
|
@ -128,13 +117,42 @@ public class Organization implements Comparable<Organization> {
|
|||
return false;
|
||||
} else if (!orgType.equals(other.orgType))
|
||||
return false;
|
||||
if (privateKey == null) {
|
||||
if (other.privateKey != null)
|
||||
return false;
|
||||
} else if (!privateKey.equals(other.privateKey))
|
||||
return false;
|
||||
return true;
|
||||
}
|
||||
|
||||
public String getGuid() {
|
||||
return guid;
|
||||
}
|
||||
|
||||
public String getName() {
|
||||
return name;
|
||||
}
|
||||
|
||||
public String getFullName() {
|
||||
return fullName;
|
||||
}
|
||||
|
||||
public String getClientname() {
|
||||
return clientname;
|
||||
}
|
||||
|
||||
public String getOrgType() {
|
||||
return orgType;
|
||||
}
|
||||
|
||||
public PrivateKey getPrivateKey() {
|
||||
return privateKey;
|
||||
}
|
||||
|
||||
@Override
|
||||
public String toString() {
|
||||
return "Organization [clientname=" + clientname + ", fullName=" + fullName + ", name=" + name + ", orgType="
|
||||
+ orgType + "]";
|
||||
return "[name=" + name + ", clientname=" + clientname + ", fullName=" + fullName + ", guid=" + guid
|
||||
+ ", orgType=" + orgType + ", privateKey=" + (privateKey != null) + "]";
|
||||
}
|
||||
|
||||
}
|
||||
|
|
|
@ -19,6 +19,9 @@
|
|||
package org.jclouds.opscodeplatform.domain;
|
||||
|
||||
import java.security.PrivateKey;
|
||||
import java.security.PublicKey;
|
||||
import java.security.cert.Certificate;
|
||||
import java.security.cert.X509Certificate;
|
||||
|
||||
import com.google.gson.annotations.SerializedName;
|
||||
|
||||
|
@ -27,7 +30,7 @@ import com.google.gson.annotations.SerializedName;
|
|||
*
|
||||
* @author Adrian Cole
|
||||
*/
|
||||
public class User implements Comparable<User> {
|
||||
public class User {
|
||||
private String username;
|
||||
@SerializedName("first_name")
|
||||
private String firstName;
|
||||
|
@ -38,94 +41,62 @@ public class User implements Comparable<User> {
|
|||
@SerializedName("display_name")
|
||||
private String displayName;
|
||||
private String email;
|
||||
@SerializedName("twitter_account")
|
||||
private String twitterAccount;
|
||||
private String city;
|
||||
private String country;
|
||||
@SerializedName("image_file_name")
|
||||
private String imageFileName;
|
||||
private String password;
|
||||
@SerializedName("public_key")
|
||||
private PublicKey publicKey;
|
||||
@SerializedName("private_key")
|
||||
private PrivateKey privateKey;
|
||||
private X509Certificate certificate;
|
||||
private String salt;
|
||||
|
||||
public User(String username) {
|
||||
this.username = username;
|
||||
}
|
||||
|
||||
// hidden but needs to be here for json deserialization to work
|
||||
User() {
|
||||
super();
|
||||
}
|
||||
|
||||
@Override
|
||||
public int compareTo(User o) {
|
||||
return username.compareTo(o.username);
|
||||
}
|
||||
|
||||
public String getUsername() {
|
||||
return username;
|
||||
}
|
||||
|
||||
public void setUsername(String username) {
|
||||
public User(String username, String firstName, String middleName, String lastName, String displayName, String email,
|
||||
String twitterAccount, String city, String country, String imageFileName, String password,
|
||||
PublicKey publicKey, PrivateKey privateKey, X509Certificate certificate, String salt) {
|
||||
this.username = username;
|
||||
}
|
||||
|
||||
public String getFirstName() {
|
||||
return firstName;
|
||||
}
|
||||
|
||||
public void setFirstName(String firstName) {
|
||||
this.firstName = firstName;
|
||||
}
|
||||
|
||||
public String getMiddleName() {
|
||||
return middleName;
|
||||
}
|
||||
|
||||
public void setMiddleName(String middleName) {
|
||||
this.middleName = middleName;
|
||||
}
|
||||
|
||||
public String getLastName() {
|
||||
return lastName;
|
||||
}
|
||||
|
||||
public void setLastName(String lastName) {
|
||||
this.lastName = lastName;
|
||||
}
|
||||
|
||||
public String getDisplayName() {
|
||||
return displayName;
|
||||
}
|
||||
|
||||
public void setDisplayName(String displayName) {
|
||||
this.displayName = displayName;
|
||||
}
|
||||
|
||||
public String getEmail() {
|
||||
return email;
|
||||
}
|
||||
|
||||
public void setEmail(String email) {
|
||||
this.email = email;
|
||||
}
|
||||
|
||||
public void setPassword(String password) {
|
||||
this.twitterAccount = twitterAccount;
|
||||
this.city = city;
|
||||
this.country = country;
|
||||
this.imageFileName = imageFileName;
|
||||
this.password = password;
|
||||
}
|
||||
|
||||
public String getPassword() {
|
||||
return password;
|
||||
}
|
||||
|
||||
public PrivateKey getPrivateKey() {
|
||||
return privateKey;
|
||||
this.publicKey = publicKey;
|
||||
this.privateKey = privateKey;
|
||||
this.certificate = certificate;
|
||||
this.salt = salt;
|
||||
}
|
||||
|
||||
@Override
|
||||
public int hashCode() {
|
||||
final int prime = 31;
|
||||
int result = 1;
|
||||
result = prime * result + ((certificate == null) ? 0 : certificate.hashCode());
|
||||
result = prime * result + ((city == null) ? 0 : city.hashCode());
|
||||
result = prime * result + ((country == null) ? 0 : country.hashCode());
|
||||
result = prime * result + ((displayName == null) ? 0 : displayName.hashCode());
|
||||
result = prime * result + ((email == null) ? 0 : email.hashCode());
|
||||
result = prime * result + ((firstName == null) ? 0 : firstName.hashCode());
|
||||
result = prime * result + ((imageFileName == null) ? 0 : imageFileName.hashCode());
|
||||
result = prime * result + ((lastName == null) ? 0 : lastName.hashCode());
|
||||
result = prime * result + ((middleName == null) ? 0 : middleName.hashCode());
|
||||
result = prime * result + ((password == null) ? 0 : password.hashCode());
|
||||
result = prime * result + ((privateKey == null) ? 0 : privateKey.hashCode());
|
||||
result = prime * result + ((publicKey == null) ? 0 : publicKey.hashCode());
|
||||
result = prime * result + ((salt == null) ? 0 : salt.hashCode());
|
||||
result = prime * result + ((twitterAccount == null) ? 0 : twitterAccount.hashCode());
|
||||
result = prime * result + ((username == null) ? 0 : username.hashCode());
|
||||
return result;
|
||||
}
|
||||
|
@ -139,6 +110,21 @@ public class User implements Comparable<User> {
|
|||
if (getClass() != obj.getClass())
|
||||
return false;
|
||||
User other = (User) obj;
|
||||
if (certificate == null) {
|
||||
if (other.certificate != null)
|
||||
return false;
|
||||
} else if (!certificate.equals(other.certificate))
|
||||
return false;
|
||||
if (city == null) {
|
||||
if (other.city != null)
|
||||
return false;
|
||||
} else if (!city.equals(other.city))
|
||||
return false;
|
||||
if (country == null) {
|
||||
if (other.country != null)
|
||||
return false;
|
||||
} else if (!country.equals(other.country))
|
||||
return false;
|
||||
if (displayName == null) {
|
||||
if (other.displayName != null)
|
||||
return false;
|
||||
|
@ -154,6 +140,11 @@ public class User implements Comparable<User> {
|
|||
return false;
|
||||
} else if (!firstName.equals(other.firstName))
|
||||
return false;
|
||||
if (imageFileName == null) {
|
||||
if (other.imageFileName != null)
|
||||
return false;
|
||||
} else if (!imageFileName.equals(other.imageFileName))
|
||||
return false;
|
||||
if (lastName == null) {
|
||||
if (other.lastName != null)
|
||||
return false;
|
||||
|
@ -169,6 +160,26 @@ public class User implements Comparable<User> {
|
|||
return false;
|
||||
} else if (!password.equals(other.password))
|
||||
return false;
|
||||
if (privateKey == null) {
|
||||
if (other.privateKey != null)
|
||||
return false;
|
||||
} else if (!privateKey.equals(other.privateKey))
|
||||
return false;
|
||||
if (publicKey == null) {
|
||||
if (other.publicKey != null)
|
||||
return false;
|
||||
} else if (!publicKey.equals(other.publicKey))
|
||||
return false;
|
||||
if (salt == null) {
|
||||
if (other.salt != null)
|
||||
return false;
|
||||
} else if (!salt.equals(other.salt))
|
||||
return false;
|
||||
if (twitterAccount == null) {
|
||||
if (other.twitterAccount != null)
|
||||
return false;
|
||||
} else if (!twitterAccount.equals(other.twitterAccount))
|
||||
return false;
|
||||
if (username == null) {
|
||||
if (other.username != null)
|
||||
return false;
|
||||
|
@ -177,10 +188,78 @@ public class User implements Comparable<User> {
|
|||
return true;
|
||||
}
|
||||
|
||||
// only for deserialization
|
||||
User() {
|
||||
|
||||
}
|
||||
|
||||
public String getUsername() {
|
||||
return username;
|
||||
}
|
||||
|
||||
public String getFirstName() {
|
||||
return firstName;
|
||||
}
|
||||
|
||||
public String getMiddleName() {
|
||||
return middleName;
|
||||
}
|
||||
|
||||
public String getLastName() {
|
||||
return lastName;
|
||||
}
|
||||
|
||||
public String getDisplayName() {
|
||||
return displayName;
|
||||
}
|
||||
|
||||
public String getEmail() {
|
||||
return email;
|
||||
}
|
||||
|
||||
public String getTwitterAccount() {
|
||||
return twitterAccount;
|
||||
}
|
||||
|
||||
public String getCity() {
|
||||
return city;
|
||||
}
|
||||
|
||||
public String getCountry() {
|
||||
return country;
|
||||
}
|
||||
|
||||
public String getImageFileName() {
|
||||
return imageFileName;
|
||||
}
|
||||
|
||||
public String getPassword() {
|
||||
return password;
|
||||
}
|
||||
|
||||
public PublicKey getPublicKey() {
|
||||
return publicKey;
|
||||
}
|
||||
|
||||
@Override
|
||||
public String toString() {
|
||||
return "User [displayName=" + displayName + ", email=" + email + ", firstName=" + firstName + ", lastName="
|
||||
+ lastName + ", middleName=" + middleName + ", password=" + password + ", username=" + username + "]";
|
||||
return "[certificate=" + certificate + ", city=" + city + ", country=" + country + ", displayName=" + displayName
|
||||
+ ", email=" + email + ", firstName=" + firstName + ", imageFileName=" + imageFileName + ", lastName="
|
||||
+ lastName + ", middleName=" + middleName + ", password=" + (password != null) + ", privateKey="
|
||||
+ (privateKey != null) + ", publicKey=" + publicKey + ", salt=" + salt + ", twitterAccount="
|
||||
+ twitterAccount + ", username=" + username + "]";
|
||||
}
|
||||
|
||||
public PrivateKey getPrivateKey() {
|
||||
return privateKey;
|
||||
}
|
||||
|
||||
public Certificate getCertificate() {
|
||||
return certificate;
|
||||
}
|
||||
|
||||
public String getSalt() {
|
||||
return salt;
|
||||
}
|
||||
|
||||
}
|
||||
|
|
|
@ -104,7 +104,7 @@ public class OpscodePlatformAsyncClientTest extends RestClientTest<OpscodePlatfo
|
|||
GeneratedHttpRequest<OpscodePlatformAsyncClient> httpRequest = processor.createRequest(method);
|
||||
|
||||
assertRequestLineEquals(httpRequest, "GET https://api.opscode.com/users HTTP/1.1");
|
||||
assertNonPayloadHeadersEqual(httpRequest, "Accept: application/json\n");
|
||||
assertNonPayloadHeadersEqual(httpRequest, "Accept: application/json\nX-Chef-Version: 0.9.8\n");
|
||||
assertPayloadEquals(httpRequest, null, null, false);
|
||||
|
||||
assertResponseParserClassEquals(method, httpRequest, ParseKeySetFromJson.class);
|
||||
|
@ -119,7 +119,7 @@ public class OpscodePlatformAsyncClientTest extends RestClientTest<OpscodePlatfo
|
|||
Method method = OpscodePlatformAsyncClient.class.getMethod("userExists", String.class);
|
||||
GeneratedHttpRequest<OpscodePlatformAsyncClient> httpRequest = processor.createRequest(method, "user");
|
||||
assertRequestLineEquals(httpRequest, "HEAD https://api.opscode.com/users/user HTTP/1.1");
|
||||
assertNonPayloadHeadersEqual(httpRequest, "Accept: application/json\n");
|
||||
assertNonPayloadHeadersEqual(httpRequest, "Accept: application/json\nX-Chef-Version: 0.9.8\n");
|
||||
assertPayloadEquals(httpRequest, null, null, false);
|
||||
|
||||
assertResponseParserClassEquals(method, httpRequest, ReturnTrueIf2xx.class);
|
||||
|
@ -134,7 +134,7 @@ public class OpscodePlatformAsyncClientTest extends RestClientTest<OpscodePlatfo
|
|||
Method method = OpscodePlatformAsyncClient.class.getMethod("organizationExists", String.class);
|
||||
GeneratedHttpRequest<OpscodePlatformAsyncClient> httpRequest = processor.createRequest(method, "organization");
|
||||
assertRequestLineEquals(httpRequest, "HEAD https://api.opscode.com/organizations/organization HTTP/1.1");
|
||||
assertNonPayloadHeadersEqual(httpRequest, "Accept: application/json\n");
|
||||
assertNonPayloadHeadersEqual(httpRequest, "Accept: application/json\nX-Chef-Version: 0.9.8\n");
|
||||
assertPayloadEquals(httpRequest, null, null, false);
|
||||
|
||||
assertResponseParserClassEquals(method, httpRequest, ReturnTrueIf2xx.class);
|
||||
|
@ -145,13 +145,12 @@ public class OpscodePlatformAsyncClientTest extends RestClientTest<OpscodePlatfo
|
|||
|
||||
}
|
||||
|
||||
|
||||
public void testListOrganizations() throws SecurityException, NoSuchMethodException, IOException {
|
||||
Method method = OpscodePlatformAsyncClient.class.getMethod("listOrganizations");
|
||||
GeneratedHttpRequest<OpscodePlatformAsyncClient> httpRequest = processor.createRequest(method);
|
||||
|
||||
assertRequestLineEquals(httpRequest, "GET https://api.opscode.com/organizations HTTP/1.1");
|
||||
assertNonPayloadHeadersEqual(httpRequest, "Accept: application/json\n");
|
||||
assertNonPayloadHeadersEqual(httpRequest, "Accept: application/json\nX-Chef-Version: 0.9.8\n");
|
||||
assertPayloadEquals(httpRequest, null, null, false);
|
||||
|
||||
assertResponseParserClassEquals(method, httpRequest, ParseKeySetFromJson.class);
|
||||
|
@ -168,7 +167,7 @@ public class OpscodePlatformAsyncClientTest extends RestClientTest<OpscodePlatfo
|
|||
.createRequest(method, new User("myuser"));
|
||||
|
||||
assertRequestLineEquals(httpRequest, "POST https://api.opscode.com/users HTTP/1.1");
|
||||
assertNonPayloadHeadersEqual(httpRequest, "Accept: application/json\n");
|
||||
assertNonPayloadHeadersEqual(httpRequest, "Accept: application/json\nX-Chef-Version: 0.9.8\n");
|
||||
assertPayloadEquals(httpRequest, "{\"username\":\"myuser\"}", "application/json", false);
|
||||
|
||||
// now make sure request filters apply by replaying
|
||||
|
@ -177,6 +176,7 @@ public class OpscodePlatformAsyncClientTest extends RestClientTest<OpscodePlatfo
|
|||
|
||||
assertRequestLineEquals(httpRequest, "POST https://api.opscode.com/users HTTP/1.1");
|
||||
assertNonPayloadHeadersEqual(httpRequest, new StringBuilder("Accept: application/json").append("\n").append(
|
||||
"X-Chef-Version: 0.9.8").append("\n").append(
|
||||
"X-Ops-Authorization-1: kfrkDpfgNU26k70R1vl1bEWk0Q0f9Fs/3kxOX7gHd7iNoJq03u7RrcrAOSgL").append("\n").append(
|
||||
"X-Ops-Authorization-2: ETj5JNeCk18BmFkHMAbCA9hXVo1T4rlHCpbuzAzFlFxUGAT4wj8UoO7V886X").append("\n").append(
|
||||
"X-Ops-Authorization-3: Kf8DvihP6ElthCNuu1xuhN0B4GEmWC9+ut7UMLe0L2T34VzkbCtuInGbf42/").append("\n").append(
|
||||
|
@ -202,7 +202,7 @@ public class OpscodePlatformAsyncClientTest extends RestClientTest<OpscodePlatfo
|
|||
.createRequest(method, new User("myuser"));
|
||||
|
||||
assertRequestLineEquals(httpRequest, "PUT https://api.opscode.com/users/myuser HTTP/1.1");
|
||||
assertNonPayloadHeadersEqual(httpRequest, "Accept: application/json\n");
|
||||
assertNonPayloadHeadersEqual(httpRequest, "Accept: application/json\nX-Chef-Version: 0.9.8\n");
|
||||
assertPayloadEquals(httpRequest, "{\"username\":\"myuser\"}", "application/json", false);
|
||||
|
||||
assertResponseParserClassEquals(method, httpRequest, ParseJson.class);
|
||||
|
@ -218,7 +218,7 @@ public class OpscodePlatformAsyncClientTest extends RestClientTest<OpscodePlatfo
|
|||
GeneratedHttpRequest<OpscodePlatformAsyncClient> httpRequest = processor.createRequest(method, "myuser");
|
||||
|
||||
assertRequestLineEquals(httpRequest, "GET https://api.opscode.com/users/myuser HTTP/1.1");
|
||||
assertNonPayloadHeadersEqual(httpRequest, "Accept: application/json\n");
|
||||
assertNonPayloadHeadersEqual(httpRequest, "Accept: application/json\nX-Chef-Version: 0.9.8\n");
|
||||
assertPayloadEquals(httpRequest, null, null, false);
|
||||
|
||||
assertResponseParserClassEquals(method, httpRequest, ParseJson.class);
|
||||
|
@ -234,7 +234,7 @@ public class OpscodePlatformAsyncClientTest extends RestClientTest<OpscodePlatfo
|
|||
GeneratedHttpRequest<OpscodePlatformAsyncClient> httpRequest = processor.createRequest(method, "myuser");
|
||||
|
||||
assertRequestLineEquals(httpRequest, "DELETE https://api.opscode.com/users/myuser HTTP/1.1");
|
||||
assertNonPayloadHeadersEqual(httpRequest, "Accept: application/json\n");
|
||||
assertNonPayloadHeadersEqual(httpRequest, "Accept: application/json\nX-Chef-Version: 0.9.8\n");
|
||||
assertPayloadEquals(httpRequest, null, null, false);
|
||||
|
||||
assertResponseParserClassEquals(method, httpRequest, ParseJson.class);
|
||||
|
@ -248,11 +248,13 @@ public class OpscodePlatformAsyncClientTest extends RestClientTest<OpscodePlatfo
|
|||
public void testCreateOrg() throws SecurityException, NoSuchMethodException, IOException {
|
||||
Method method = OpscodePlatformAsyncClient.class.getMethod("createOrganization", Organization.class);
|
||||
GeneratedHttpRequest<OpscodePlatformAsyncClient> httpRequest = processor.createRequest(method, new Organization(
|
||||
"myorganization"));
|
||||
"myorganization", "myorganization", "myorganization-validator", Organization.Type.BUSINESS));
|
||||
|
||||
assertRequestLineEquals(httpRequest, "POST https://api.opscode.com/organizations HTTP/1.1");
|
||||
assertNonPayloadHeadersEqual(httpRequest, "Accept: application/json\n");
|
||||
assertPayloadEquals(httpRequest, "{\"name\":\"myorganization\"}", "application/json", false);
|
||||
assertNonPayloadHeadersEqual(httpRequest, "Accept: application/json\nX-Chef-Version: 0.9.8\n");
|
||||
assertPayloadEquals(httpRequest,
|
||||
"{\"name\":\"myorganization\",\"full_name\":\"myorganization\",\"clientname\":\"myorganization-validator\",\"org_type\":\"Business\"}",
|
||||
"application/json", false);
|
||||
|
||||
assertResponseParserClassEquals(method, httpRequest, ParseJson.class);
|
||||
assertSaxResponseParserClassEquals(method, null);
|
||||
|
@ -265,11 +267,13 @@ public class OpscodePlatformAsyncClientTest extends RestClientTest<OpscodePlatfo
|
|||
public void testUpdateOrg() throws SecurityException, NoSuchMethodException, IOException {
|
||||
Method method = OpscodePlatformAsyncClient.class.getMethod("updateOrganization", Organization.class);
|
||||
GeneratedHttpRequest<OpscodePlatformAsyncClient> httpRequest = processor.createRequest(method, new Organization(
|
||||
"myorganization"));
|
||||
"myorganization", "myorganization", "myorganization-validator", Organization.Type.BUSINESS));
|
||||
|
||||
assertRequestLineEquals(httpRequest, "PUT https://api.opscode.com/organizations/myorganization HTTP/1.1");
|
||||
assertNonPayloadHeadersEqual(httpRequest, "Accept: application/json\n");
|
||||
assertPayloadEquals(httpRequest, "{\"name\":\"myorganization\"}", "application/json", false);
|
||||
assertNonPayloadHeadersEqual(httpRequest, "Accept: application/json\nX-Chef-Version: 0.9.8\n");
|
||||
assertPayloadEquals(httpRequest,
|
||||
"{\"name\":\"myorganization\",\"full_name\":\"myorganization\",\"clientname\":\"myorganization-validator\",\"org_type\":\"Business\"}",
|
||||
"application/json", false);
|
||||
|
||||
assertResponseParserClassEquals(method, httpRequest, ParseJson.class);
|
||||
assertSaxResponseParserClassEquals(method, null);
|
||||
|
@ -284,7 +288,7 @@ public class OpscodePlatformAsyncClientTest extends RestClientTest<OpscodePlatfo
|
|||
GeneratedHttpRequest<OpscodePlatformAsyncClient> httpRequest = processor.createRequest(method, "myorganization");
|
||||
|
||||
assertRequestLineEquals(httpRequest, "GET https://api.opscode.com/organizations/myorganization HTTP/1.1");
|
||||
assertNonPayloadHeadersEqual(httpRequest, "Accept: application/json\n");
|
||||
assertNonPayloadHeadersEqual(httpRequest, "Accept: application/json\nX-Chef-Version: 0.9.8\n");
|
||||
assertPayloadEquals(httpRequest, null, null, false);
|
||||
|
||||
assertResponseParserClassEquals(method, httpRequest, ParseJson.class);
|
||||
|
@ -300,7 +304,7 @@ public class OpscodePlatformAsyncClientTest extends RestClientTest<OpscodePlatfo
|
|||
GeneratedHttpRequest<OpscodePlatformAsyncClient> httpRequest = processor.createRequest(method, "myorganization");
|
||||
|
||||
assertRequestLineEquals(httpRequest, "DELETE https://api.opscode.com/organizations/myorganization HTTP/1.1");
|
||||
assertNonPayloadHeadersEqual(httpRequest, "Accept: application/json\n");
|
||||
assertNonPayloadHeadersEqual(httpRequest, "Accept: application/json\nX-Chef-Version: 0.9.8\n");
|
||||
assertPayloadEquals(httpRequest, null, null, false);
|
||||
|
||||
assertResponseParserClassEquals(method, httpRequest, ParseJson.class);
|
||||
|
|
|
@ -26,6 +26,7 @@ package org.jclouds.opscodeplatform;
|
|||
import static com.google.common.base.Preconditions.checkNotNull;
|
||||
import static org.testng.Assert.assertEquals;
|
||||
import static org.testng.Assert.assertNotNull;
|
||||
import static org.testng.Assert.assertNull;
|
||||
|
||||
import java.io.File;
|
||||
import java.io.IOException;
|
||||
|
@ -35,12 +36,13 @@ import java.util.Set;
|
|||
import org.jclouds.chef.BaseChefClientLiveTest;
|
||||
import org.jclouds.chef.ChefClient;
|
||||
import org.jclouds.chef.config.ChefParserModule;
|
||||
import org.jclouds.http.HttpResponseException;
|
||||
import org.jclouds.crypto.Pems;
|
||||
import org.jclouds.json.Json;
|
||||
import org.jclouds.json.config.GsonModule;
|
||||
import org.jclouds.logging.log4j.config.Log4JLoggingModule;
|
||||
import org.jclouds.opscodeplatform.domain.Organization;
|
||||
import org.jclouds.opscodeplatform.domain.User;
|
||||
import org.jclouds.rest.AuthorizationException;
|
||||
import org.jclouds.rest.HttpClient;
|
||||
import org.jclouds.rest.RestContextFactory;
|
||||
import org.testng.annotations.BeforeClass;
|
||||
|
@ -124,8 +126,8 @@ public class OpscodePlatformClientLiveTest extends BaseChefClientLiveTest {
|
|||
protected void closeContexts() {
|
||||
if (orgUser != null)
|
||||
adminConnection.getApi().deleteUser(PREFIX);
|
||||
if (org != null)
|
||||
adminConnection.getApi().deleteOrganization(PREFIX);
|
||||
if (createdOrgname != null)
|
||||
adminConnection.getApi().deleteOrganization(createdOrgname);
|
||||
if (clientConnection != null)
|
||||
clientConnection.close();
|
||||
if (validatorConnection != null)
|
||||
|
@ -137,52 +139,60 @@ public class OpscodePlatformClientLiveTest extends BaseChefClientLiveTest {
|
|||
private String orgname;
|
||||
private Organization org;
|
||||
private User orgUser;
|
||||
private String createdOrgname;
|
||||
|
||||
// http://tickets.corp.opscode.com/browse/PL-524
|
||||
@Test(expectedExceptions = HttpResponseException.class)
|
||||
// @Test(expectedExceptions = AuthorizationException.class)
|
||||
public void testListOrganizations() throws Exception {
|
||||
Set<String> orgs = adminConnection.getApi().listOrganizations();
|
||||
assertNotNull(orgs);
|
||||
}
|
||||
|
||||
// http://tickets.corp.opscode.com/browse/PL-524
|
||||
@Test(expectedExceptions = HttpResponseException.class)
|
||||
/**
|
||||
* this test only works when you have a super user not yet supported in the
|
||||
* official api
|
||||
*/
|
||||
@Test(enabled = false, expectedExceptions = AuthorizationException.class)
|
||||
public void testCreateOrganization() throws Exception {
|
||||
adminConnection.getApi().deleteOrganization(PREFIX);
|
||||
adminConnection.getApi().createOrganization(new Organization(PREFIX));
|
||||
org = adminConnection.getApi().getOrganization(PREFIX);
|
||||
createdOrgname = orgname + 1;
|
||||
adminConnection.getApi().deleteOrganization(createdOrgname);
|
||||
org = adminConnection.getApi().createOrganization(new Organization(createdOrgname, Organization.Type.BUSINESS));
|
||||
assertNotNull(org);
|
||||
assertEquals(org.getName(), PREFIX);
|
||||
assertEquals(org.getClientname(), PREFIX + "-validator");
|
||||
assertNull(org.getName());
|
||||
assertNull(org.getFullName());
|
||||
assertEquals(org.getClientname(), createdOrgname + "-validator");
|
||||
assertNull(org.getOrgType());
|
||||
assertNotNull(org.getPrivateKey());
|
||||
OpscodePlatformContext connection = null;
|
||||
try {
|
||||
connection = createConnection(org.getClientname(), Pems.pem(org.getPrivateKey()));
|
||||
} finally {
|
||||
if (connection != null)
|
||||
connection.close();
|
||||
}
|
||||
}
|
||||
|
||||
// http://tickets.corp.opscode.com/browse/PL-524
|
||||
@Test(expectedExceptions = HttpResponseException.class)
|
||||
public void testOrganizationExists() throws Exception {
|
||||
assertNotNull(adminConnection.getApi().organizationExists(orgname));
|
||||
}
|
||||
|
||||
@Test(enabled = false, dependsOnMethods = "testCreateOrganization")
|
||||
@Test(enabled = false, dependsOnMethods = "testCreateOrganization", expectedExceptions = AuthorizationException.class)
|
||||
public void testUpdateOrganization() throws Exception {
|
||||
Organization org = adminConnection.getApi().getOrganization(PREFIX);
|
||||
Organization org = adminConnection.getApi().getOrganization(createdOrgname);
|
||||
adminConnection.getApi().updateOrganization(org);
|
||||
}
|
||||
|
||||
// http://tickets.corp.opscode.com/browse/PL-524
|
||||
@Test(expectedExceptions = HttpResponseException.class)
|
||||
public void testGetOrganization() throws Exception {
|
||||
adminConnection.getApi().getOrganization(orgname);
|
||||
}
|
||||
|
||||
// http://tickets.corp.opscode.com/browse/PL-524
|
||||
@Test(expectedExceptions = HttpResponseException.class)
|
||||
@Test(expectedExceptions = AuthorizationException.class)
|
||||
public void testListUsers() throws Exception {
|
||||
Set<String> orgs = adminConnection.getApi().listUsers();
|
||||
assertNotNull(orgs);
|
||||
}
|
||||
|
||||
// http://tickets.corp.opscode.com/browse/PL-524
|
||||
@Test(expectedExceptions = HttpResponseException.class)
|
||||
// @Test(expectedExceptions = HttpResponseException.class)
|
||||
@Test(enabled = false, expectedExceptions = AuthorizationException.class)
|
||||
public void testCreateUser() throws Exception {
|
||||
adminConnection.getApi().deleteUser(PREFIX);
|
||||
adminConnection.getApi().createUser(new User(PREFIX));
|
||||
|
@ -192,30 +202,27 @@ public class OpscodePlatformClientLiveTest extends BaseChefClientLiveTest {
|
|||
assertNotNull(orgUser.getPrivateKey());
|
||||
}
|
||||
|
||||
// http://tickets.corp.opscode.com/browse/PL-524
|
||||
@Test(expectedExceptions = HttpResponseException.class)
|
||||
public void testUserExists() throws Exception {
|
||||
assertNotNull(adminConnection.getApi().userExists(user));
|
||||
}
|
||||
|
||||
// http://tickets.corp.opscode.com/browse/PL-524
|
||||
@Test(expectedExceptions = HttpResponseException.class)
|
||||
public void testGetUser() throws Exception {
|
||||
adminConnection.getApi().getUser(user);
|
||||
}
|
||||
|
||||
@Test(enabled = false, dependsOnMethods = "testCreateUser")
|
||||
// disabled while create user fails
|
||||
@Test(dependsOnMethods = "testCreateUser", enabled = false)
|
||||
public void testUpdateUser() throws Exception {
|
||||
User user = adminConnection.getApi().getUser(PREFIX);
|
||||
adminConnection.getApi().updateUser(user);
|
||||
}
|
||||
|
||||
@Test(expectedExceptions = HttpResponseException.class)
|
||||
@Test(expectedExceptions = AuthorizationException.class)
|
||||
public void testGetOrganizationFailsForValidationKey() throws Exception {
|
||||
validatorConnection.getApi().getOrganization(orgname);
|
||||
}
|
||||
|
||||
@Test(dependsOnMethods = "testGenerateKeyForClient", expectedExceptions = HttpResponseException.class)
|
||||
@Test(dependsOnMethods = "testGenerateKeyForClient", expectedExceptions = AuthorizationException.class)
|
||||
public void testGetOrganizationFailsForClient() throws Exception {
|
||||
clientConnection.getApi().getOrganization(orgname);
|
||||
}
|
||||
|
|
|
@ -55,13 +55,10 @@ public class ParseOrganizationFromJsonTest {
|
|||
|
||||
public void test() {
|
||||
|
||||
Organization org = new Organization("opscode");
|
||||
org.setFullName("Opscode, Inc.");
|
||||
org.setOrgType("Business");
|
||||
org.setClientname("opscode-validator");
|
||||
|
||||
String toParse = "{\"name\": \"opscode\",\"full_name\": \"Opscode, Inc.\", \"org_type\": \"Business\",\"clientname\": \"opscode-validator\" }";
|
||||
Organization org = new Organization("486ca3ac66264fea926aa0b4ff74341c", "jclouds", "jclouds",
|
||||
"jclouds-validator", "Business", null);
|
||||
|
||||
String toParse = "{\"guid\":\"486ca3ac66264fea926aa0b4ff74341c\",\"name\":\"jclouds\",\"full_name\":\"jclouds\",\"clientname\":\"jclouds-validator\",\"org_type\":\"Business\",\"name\":\"jclouds\"}";
|
||||
assertEquals(handler.apply(new HttpResponse(200, "ok", Payloads.newStringPayload(toParse))), org);
|
||||
}
|
||||
}
|
||||
|
|
|
@ -3,14 +3,17 @@ package org.jclouds.opscodeplatform.functions;
|
|||
import static org.testng.Assert.assertEquals;
|
||||
|
||||
import java.io.IOException;
|
||||
import java.security.cert.CertificateException;
|
||||
import java.security.spec.InvalidKeySpecException;
|
||||
|
||||
import org.jclouds.chef.config.ChefParserModule;
|
||||
import org.jclouds.crypto.Crypto;
|
||||
import org.jclouds.crypto.Pems;
|
||||
import org.jclouds.http.HttpResponse;
|
||||
import org.jclouds.http.functions.ParseJson;
|
||||
import org.jclouds.io.Payloads;
|
||||
import org.jclouds.json.config.GsonModule;
|
||||
import org.jclouds.opscodeplatform.domain.User;
|
||||
import org.jclouds.util.Utils;
|
||||
import org.testng.annotations.BeforeTest;
|
||||
import org.testng.annotations.Test;
|
||||
|
||||
|
@ -28,25 +31,40 @@ import com.google.inject.TypeLiteral;
|
|||
public class ParseUserFromJsonTest {
|
||||
|
||||
private ParseJson<User> handler;
|
||||
private Crypto crypto;
|
||||
|
||||
@BeforeTest
|
||||
protected void setUpInjector() throws IOException {
|
||||
Injector injector = Guice.createInjector(new ChefParserModule(), new GsonModule());
|
||||
handler = injector.getInstance(Key.get(new TypeLiteral<ParseJson<User>>() {
|
||||
}));
|
||||
crypto = injector.getInstance(Crypto.class);
|
||||
}
|
||||
|
||||
public void test() {
|
||||
public void test() throws InvalidKeySpecException, CertificateException, IOException {
|
||||
User user = new User(
|
||||
"dopey",
|
||||
"Adrian",
|
||||
"",
|
||||
"Cole",
|
||||
"Adrian Cole",
|
||||
"adrian+dopey@opscode.com",
|
||||
null,
|
||||
null,
|
||||
null,
|
||||
null,
|
||||
"abcdef",
|
||||
crypto
|
||||
.rsaKeyFactory()
|
||||
.generatePublic(
|
||||
Pems
|
||||
.publicKeySpec("-----BEGIN RSA PUBLIC KEY-----\nMIIBCgKCAQEAvCKTqPdHv7GsHTjk02g91Aw3T6xQmdRaI70X6E6GGFxZtcH+tb1X\nqHxwhFydECVXhu0WVjTcWvxZ1aMFzn9BLHQYWzZxU/fIKVNR6ujyZ3jRxDXRFpX5\n/zvMdvNbdsJ+8foEbdoP1iujUMZuy6ZMvcbTDCgWjYVQ2omR9CkH/5Fwlbk3cSrF\n6qfGaM7340OGknKUfXdvhCq4vxydlOwfHJyNDWY0PW+8rDKHWxxNtYDDDeIMw2z/\nYC34f1bcAkR+/lyx5b25RwDomZNqXJqp1hjOVJVlo+UMvzWfXph5hgjcgtwzc5Iu\nmWWMUdxLcdw+/iQm6NW9cmU28bvHu0q7FwIDAQAB\n-----END RSA PUBLIC KEY-----\n")),
|
||||
null,
|
||||
Pems
|
||||
.x509Certificate("-----BEGIN CERTIFICATE-----\nMIIClzCCAgCgAwIBAgIBATANBgkqhkiG9w0BAQUFADCBnjELMAkGA1UEBhMCVVMx\nEzARBgNVBAgMCldhc2hpbmd0b24xEDAOBgNVBAcMB1NlYXR0bGUxFjAUBgNVBAoM\nDU9wc2NvZGUsIEluYy4xHDAaBgNVBAsME0NlcnRpZmljYXRlIFNlcnZpY2UxMjAw\nBgNVBAMMKW9wc2NvZGUuY29tL2VtYWlsQWRkcmVzcz1hdXRoQG9wc2NvZGUuY29t\nMB4XDTEwMDgwMzA0MDUzNVoXDTIwMDczMTA0MDUzNVowADCCASIwDQYJKoZIhvcN\nAQEBBQADggEPADCCAQoCggEBALwik6j3R7+xrB045NNoPdQMN0+sUJnUWiO9F+hO\nhhhcWbXB/rW9V6h8cIRcnRAlV4btFlY03Fr8WdWjBc5/QSx0GFs2cVP3yClTUero\n8md40cQ10RaV+f87zHbzW3bCfvH6BG3aD9Yro1DGbsumTL3G0wwoFo2FUNqJkfQp\nB/+RcJW5N3EqxeqnxmjO9+NDhpJylH13b4QquL8cnZTsHxycjQ1mND1vvKwyh1sc\nTbWAww3iDMNs/2At+H9W3AJEfv5cseW9uUcA6JmTalyaqdYYzlSVZaPlDL81n16Y\neYYI3ILcM3OSLplljFHcS3HcPv4kJujVvXJlNvG7x7tKuxcCAwEAATANBgkqhkiG\n9w0BAQUFAAOBgQBcoSP/2tFhP8yjF/dRDRdDed0/Cg0xnpp2wvM38gBRgvhpZbQ3\nI2rqpw5THNzrzBVnrYxd57uAa+y2MMG57XnvNWOmyL6WIYXLfN1QI3nHdpHS/QVF\nCRWpDWxLM1TkqAD9xQZOpUDdByF2exiCDNTzSYYg/ISLlIEzicNJeoPNbA==\n-----END CERTIFICATE-----\n"),
|
||||
"xBOmipWikVEicS7tNOPdQzPsPmsROMgPme5O19ZHh6R7N9MQT7d5olDiGFpO");
|
||||
|
||||
User user = new User("bobo");
|
||||
user.setFirstName("Bobo");
|
||||
user.setMiddleName("Tiberion");
|
||||
user.setLastName("Clown");
|
||||
user.setDisplayName("Bobo T. Clown");
|
||||
user.setEmail("bobo@clownco.com");
|
||||
|
||||
String toParse = "{\n\"username\": \"bobo\",\n\"first_name\": \"Bobo\",\n\"middle_name\": \"Tiberion\",\n\"last_name\": \"Clown\",\n\"display_name\": \"Bobo T. Clown\",\n\"email\": \"bobo@clownco.com\" \n}";
|
||||
|
||||
assertEquals(handler.apply(new HttpResponse(200, "ok", Payloads.newPayload(Utils.toInputStream(toParse)))), user);
|
||||
assertEquals(handler.apply(new HttpResponse(200, "ok", Payloads.newPayload(ParseUserFromJsonTest.class
|
||||
.getResourceAsStream("/user.json")))), user);
|
||||
}
|
||||
}
|
||||
|
|
|
@ -0,0 +1 @@
|
|||
{"public_key":"-----BEGIN RSA PUBLIC KEY-----\nMIIBCgKCAQEAvCKTqPdHv7GsHTjk02g91Aw3T6xQmdRaI70X6E6GGFxZtcH+tb1X\nqHxwhFydECVXhu0WVjTcWvxZ1aMFzn9BLHQYWzZxU/fIKVNR6ujyZ3jRxDXRFpX5\n/zvMdvNbdsJ+8foEbdoP1iujUMZuy6ZMvcbTDCgWjYVQ2omR9CkH/5Fwlbk3cSrF\n6qfGaM7340OGknKUfXdvhCq4vxydlOwfHJyNDWY0PW+8rDKHWxxNtYDDDeIMw2z/\nYC34f1bcAkR+/lyx5b25RwDomZNqXJqp1hjOVJVlo+UMvzWfXph5hgjcgtwzc5Iu\nmWWMUdxLcdw+/iQm6NW9cmU28bvHu0q7FwIDAQAB\n-----END RSA PUBLIC KEY-----\n","middle_name":"","certificate":"-----BEGIN CERTIFICATE-----\nMIIClzCCAgCgAwIBAgIBATANBgkqhkiG9w0BAQUFADCBnjELMAkGA1UEBhMCVVMx\nEzARBgNVBAgMCldhc2hpbmd0b24xEDAOBgNVBAcMB1NlYXR0bGUxFjAUBgNVBAoM\nDU9wc2NvZGUsIEluYy4xHDAaBgNVBAsME0NlcnRpZmljYXRlIFNlcnZpY2UxMjAw\nBgNVBAMMKW9wc2NvZGUuY29tL2VtYWlsQWRkcmVzcz1hdXRoQG9wc2NvZGUuY29t\nMB4XDTEwMDgwMzA0MDUzNVoXDTIwMDczMTA0MDUzNVowADCCASIwDQYJKoZIhvcN\nAQEBBQADggEPADCCAQoCggEBALwik6j3R7+xrB045NNoPdQMN0+sUJnUWiO9F+hO\nhhhcWbXB/rW9V6h8cIRcnRAlV4btFlY03Fr8WdWjBc5/QSx0GFs2cVP3yClTUero\n8md40cQ10RaV+f87zHbzW3bCfvH6BG3aD9Yro1DGbsumTL3G0wwoFo2FUNqJkfQp\nB/+RcJW5N3EqxeqnxmjO9+NDhpJylH13b4QquL8cnZTsHxycjQ1mND1vvKwyh1sc\nTbWAww3iDMNs/2At+H9W3AJEfv5cseW9uUcA6JmTalyaqdYYzlSVZaPlDL81n16Y\neYYI3ILcM3OSLplljFHcS3HcPv4kJujVvXJlNvG7x7tKuxcCAwEAATANBgkqhkiG\n9w0BAQUFAAOBgQBcoSP/2tFhP8yjF/dRDRdDed0/Cg0xnpp2wvM38gBRgvhpZbQ3\nI2rqpw5THNzrzBVnrYxd57uAa+y2MMG57XnvNWOmyL6WIYXLfN1QI3nHdpHS/QVF\nCRWpDWxLM1TkqAD9xQZOpUDdByF2exiCDNTzSYYg/ISLlIEzicNJeoPNbA==\n-----END CERTIFICATE-----\n","city":null,"email":"adrian+dopey@opscode.com","country":null,"first_name":"Adrian","password":"abcdef","twitter_account":null,"salt":"xBOmipWikVEicS7tNOPdQzPsPmsROMgPme5O19ZHh6R7N9MQT7d5olDiGFpO","display_name":"Adrian Cole","last_name":"Cole","image_file_name":null,"username":"dopey"}
|
Loading…
Reference in New Issue