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\\"}"') }) })