blob: adf5995dc32689176d590df15c6c1248f9602b86 [file] [log] [blame]
// Copyright 2008 Google Inc.
//
// 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 com.google.codereview.rpc;
import com.google.codereview.internal.SubmitChange.SubmitChangeResponse;
import com.google.protobuf.Message;
import junit.framework.TestCase;
import java.io.ByteArrayOutputStream;
import java.io.IOException;
import java.util.Arrays;
import java.util.zip.DeflaterOutputStream;
public class MessageRequestEntityTest extends TestCase {
public void testCompressedEntity() throws Exception {
final Message msg = buildMessage();
final byte[] bin = compress(msg);
final String contentType =
"application/x-google-protobuf"
+ "; name=codereview.internal.SubmitChangeResponse"
+ "; compress=deflate";
final MessageRequestEntity mre = new MessageRequestEntity(msg);
assertTrue(mre.isRepeatable());
assertEquals(bin.length, mre.getContentLength());
assertEquals(contentType, mre.getContentType());
for (int i = 0; i < 5; i++) {
final ByteArrayOutputStream compressed = new ByteArrayOutputStream();
mre.writeRequest(compressed);
assertTrue(Arrays.equals(bin, compressed.toByteArray()));
}
}
private static Message buildMessage() {
final SubmitChangeResponse.Builder r = SubmitChangeResponse.newBuilder();
r.setStatusCode(SubmitChangeResponse.CodeType.PATCHSET_EXISTS);
return r.build();
}
private static byte[] compress(final Message m) throws IOException {
final ByteArrayOutputStream out = new ByteArrayOutputStream();
final DeflaterOutputStream dos = new DeflaterOutputStream(out);
m.writeTo(dos);
dos.close();
return out.toByteArray();
}
}