import expect from "expect"
import Im from "immutable"
import curl from "core/curlify"
describe("curlify", function() {
it("prints a curl statement with custom content-type", function() {
var req = {
url: "http://example.com",
method: "POST",
body: {
id: 0,
name: "doggie",
status: "available"
},
headers: {
Accept: "application/json",
"content-type": "application/json"
}
}
let curlified = curl(Im.fromJS(req))
expect(curlified).toEqual("curl -X POST http://example.com -H \"Accept: application/json\" -H \"content-type: application/json\" -d {\"id\":0,\"name\":\"doggie\",\"status\":\"available\"}")
})
it("does not change the case of header in curl", function() {
var req = {
url: "http://example.com",
method: "POST",
headers: {
"conTenT Type": "application/Moar"
}
}
let curlified = curl(Im.fromJS(req))
expect(curlified).toEqual("curl -X POST http://example.com -H \"conTenT Type: application/Moar\"")
})
it("prints a curl statement with an array of query params", function() {
var req = {
url: "http://swaggerhub.com/v1/one?name=john|smith",
method: "GET"
}
let curlified = curl(Im.fromJS(req))
expect(curlified).toEqual("curl -X GET http://swaggerhub.com/v1/one?name=john|smith")
})
it("prints a curl statement with an array of query params and auth", function() {
var req = {
url: "http://swaggerhub.com/v1/one?name=john|smith",
method: "GET",
headers: {
authorization: "Basic Zm9vOmJhcg=="
}
}
let curlified = curl(Im.fromJS(req))
expect(curlified).toEqual("curl -X GET http://swaggerhub.com/v1/one?name=john|smith -H \"authorization: Basic Zm9vOmJhcg==\"")
})
it("prints a curl statement with html", function() {
var req = {
url: "http://swaggerhub.com/v1/one?name=john|smith",
method: "GET",
headers: {
accept: "application/json"
},
body: {
description: "Test"
}
}
let curlified = curl(Im.fromJS(req))
expect(curlified).toEqual("curl -X GET http://swaggerhub.com/v1/one?name=john|smith -H \"accept: application/json\" -d {\"description\":\"Test\"}")
})
it("handles post body with html", function() {
var req = {
url: "http://swaggerhub.com/v1/one?name=john|smith",
method: "POST",
headers: {
accept: "application/json"
},
body: {
description: "Test"
}
}
let curlified = curl(Im.fromJS(req))
expect(curlified).toEqual("curl -X POST http://swaggerhub.com/v1/one?name=john|smith -H \"accept: application/json\" -d {\"description\":\"Test\"}")
})
it("handles post body with special chars", function() {
var req = {
url: "http://swaggerhub.com/v1/one?name=john|smith",
method: "POST",
body: {
description: "@prefix nif: .\n" +
"@prefix itsrdf: ."
}
}
let curlified = curl(Im.fromJS(req))
expect(curlified).toEqual("curl -X POST http://swaggerhub.com/v1/one?name=john|smith -d {\"description\":\"@prefix nif: .@prefix itsrdf: .\"}")
})
it("handles delete form with parameters", function() {
var req = {
url: "http://example.com",
method: "DELETE",
headers: {
accept: "application/x-www-form-urlencoded"
}
}
let curlified = curl(Im.fromJS(req))
expect(curlified).toEqual("curl -X DELETE http://example.com -H \"accept: application/x-www-form-urlencoded\"")
})
it("should print a curl with formData", function() {
var req = {
url: "http://example.com",
method: "POST",
headers: { "content-type": "multipart/form-data" },
body: "id=123&name=Sahar"
}
let curlified = curl(Im.fromJS(req))
expect(curlified).toEqual("curl -X POST http://example.com -H \"content-type: multipart/form-data\" -F id=123 -F name=Sahar")
})
it("prints a curl post statement from an object", function() {
var req = {
url: "http://example.com",
method: "POST",
headers: {
accept: "application/json"
},
body: {
id: 10101
}
}
let curlified = curl(Im.fromJS(req))
expect(curlified).toEqual("curl -X POST http://example.com -H \"accept: application/json\" -d {\"id\":10101}")
})
it("prints a curl post statement from a string containing a single quote", function() {
var req = {
url: "http://example.com",
method: "POST",
headers: {
accept: "application/json"
},
body: "{\"id\":\"foo'bar\"}"
}
let curlified = curl(Im.fromJS(req))
expect(curlified).toEqual("curl -X POST http://example.com -H \"accept: application/json\" -d \"{\\\"id\\\":\\\"foo'bar\\\"}\"")
})
})