public void testDocWithAttachment() throws IOException { String inlineTextString = "Inline text string created by cblite functional test"; send("PUT", "/db", Status.CREATED, null); Map<String, Object> attachment = new HashMap<String, Object>(); attachment.put("content_type", "text/plain"); attachment.put( "data", "SW5saW5lIHRleHQgc3RyaW5nIGNyZWF0ZWQgYnkgY2JsaXRlIGZ1bmN0aW9uYWwgdGVzdA=="); Map<String, Object> attachments = new HashMap<String, Object>(); attachments.put("inline.txt", attachment); Map<String, Object> docWithAttachment = new HashMap<String, Object>(); docWithAttachment.put("_id", "docWithAttachment"); docWithAttachment.put("text", inlineTextString); docWithAttachment.put("_attachments", attachments); Map<String, Object> result = (Map<String, Object>) sendBody("PUT", "/db/docWithAttachment", docWithAttachment, Status.CREATED, null); Map expChanges = new HashMap<String, Map<String, Object>>(); List changesResults = new ArrayList(); Map docChanges = new HashMap<String, Object>(); docChanges.put("id", "docWithAttachment"); docChanges.put("seq", 1); List lChanges = new ArrayList<Map<String, Object>>(); HashMap mChanges = new HashMap<String, Object>(); mChanges.put("rev", result.get("rev")); lChanges.add(mChanges); docChanges.put("changes", lChanges); changesResults.add(docChanges); expChanges.put("results", changesResults); expChanges.put("last_seq", 1); send("GET", "/db/_changes?feed=normal&heartbeat=300000&style=all_docs", Status.OK, expChanges); result = (Map<String, Object>) send("GET", "/db/docWithAttachment", Status.OK, null); Map<String, Object> attachmentsResult = (Map<String, Object>) result.get("_attachments"); Map<String, Object> attachmentResult = (Map<String, Object>) attachmentsResult.get("inline.txt"); // there should be either a content_type or content-type field. // https://github.com/couchbase/couchbase-lite-android-core/issues/12 // content_type becomes null for attachments in responses, should be as set in Content-Type String contentTypeField = (String) attachmentResult.get("content_type"); ; assertTrue(attachmentResult.containsKey("content_type")); assertNotNull(contentTypeField); URLConnection conn = sendRequest("GET", "/db/docWithAttachment/inline.txt", null, null); String contentType = conn.getHeaderField("Content-Type"); assertNotNull(contentType); assertTrue(contentType.contains("text/plain")); StringWriter writer = new StringWriter(); InputStream is = conn.getInputStream(); IOUtils.copy(is, writer, "UTF-8"); is.close(); String responseString = writer.toString(); assertTrue(responseString.contains(inlineTextString)); }