summaryrefslogtreecommitdiff
path: root/spec/mixlib/authentication/mixlib_authentication_spec.rb
diff options
context:
space:
mode:
Diffstat (limited to 'spec/mixlib/authentication/mixlib_authentication_spec.rb')
-rw-r--r--spec/mixlib/authentication/mixlib_authentication_spec.rb256
1 files changed, 127 insertions, 129 deletions
diff --git a/spec/mixlib/authentication/mixlib_authentication_spec.rb b/spec/mixlib/authentication/mixlib_authentication_spec.rb
index 69500a4..d0e8071 100644
--- a/spec/mixlib/authentication/mixlib_authentication_spec.rb
+++ b/spec/mixlib/authentication/mixlib_authentication_spec.rb
@@ -18,13 +18,13 @@
# limitations under the License.
#
-require File.expand_path(File.join(File.dirname(__FILE__), '..','..','spec_helper'))
-require 'rubygems'
+require File.expand_path(File.join(File.dirname(__FILE__), "..", "..", "spec_helper"))
+require "rubygems"
-require 'ostruct'
-require 'openssl'
-require 'mixlib/authentication/signatureverification'
-require 'time'
+require "ostruct"
+require "openssl"
+require "mixlib/authentication/signatureverification"
+require "time"
# TODO: should make these regular spec-based mock objects.
class MockRequest
@@ -102,10 +102,9 @@ describe "Mixlib::Authentication::SignedHeaderAuth" do
expect(V1_3_SHA256_SIGNING_OBJECT.sign(PRIVATE_KEY)).to eq(EXPECTED_SIGN_RESULT_V1_3_SHA256)
end
-
it "should generate the correct string to sign and signature for non-default proto version when used as a mixin" do
- algorithm = 'sha1'
- version = '1.1'
+ algorithm = "sha1"
+ version = "1.1"
V1_1_SIGNING_OBJECT.proto_version = "1.0"
expect(V1_1_SIGNING_OBJECT.proto_version).to eq("1.0")
@@ -118,19 +117,19 @@ describe "Mixlib::Authentication::SignedHeaderAuth" do
end
it "should not choke when signing a request for a long user id with version 1.1" do
- expect { LONG_SIGNING_OBJECT.sign(PRIVATE_KEY, 'sha1', '1.1') }.not_to raise_error
+ expect { LONG_SIGNING_OBJECT.sign(PRIVATE_KEY, "sha1", "1.1") }.not_to raise_error
end
it "should choke when signing a request for a long user id with version 1.0" do
- expect { LONG_SIGNING_OBJECT.sign(PRIVATE_KEY, 'sha1', '1.0') }.to raise_error(OpenSSL::PKey::RSAError)
+ expect { LONG_SIGNING_OBJECT.sign(PRIVATE_KEY, "sha1", "1.0") }.to raise_error(OpenSSL::PKey::RSAError)
end
it "should choke when signing a request with a bad version" do
- expect { V1_1_SIGNING_OBJECT.sign(PRIVATE_KEY, 'sha1', 'poo') }.to raise_error(Mixlib::Authentication::AuthenticationError)
+ expect { V1_1_SIGNING_OBJECT.sign(PRIVATE_KEY, "sha1", "poo") }.to raise_error(Mixlib::Authentication::AuthenticationError)
end
it "should choke when signing a request with a bad algorithm" do
- expect { V1_1_SIGNING_OBJECT.sign(PRIVATE_KEY, 'sha_poo', '1.1') }.to raise_error(Mixlib::Authentication::AuthenticationError)
+ expect { V1_1_SIGNING_OBJECT.sign(PRIVATE_KEY, "sha_poo", "1.1") }.to raise_error(Mixlib::Authentication::AuthenticationError)
end
end
@@ -144,7 +143,7 @@ describe "Mixlib::Authentication::SignatureVerification" do
it "should authenticate a File-containing request V1.1 - Merb" do
request_params = MERB_REQUEST_PARAMS.clone
request_params["file"] =
- { "size"=>MockFile.length, "content_type"=>"application/octet-stream", "filename"=>"zsh.tar.gz", "tempfile"=>MockFile.new }
+ { "size" => MockFile.length, "content_type" => "application/octet-stream", "filename" => "zsh.tar.gz", "tempfile" => MockFile.new }
mock_request = MockRequest.new(PATH, request_params, MERB_HEADERS_V1_1, "")
expect(Time).to receive(:now).at_least(:once).and_return(TIMESTAMP_OBJ)
@@ -157,7 +156,7 @@ describe "Mixlib::Authentication::SignatureVerification" do
it "should authenticate a File-containing request V1.3 SHA256 - Merb" do
request_params = MERB_REQUEST_PARAMS.clone
request_params["file"] =
- { "size"=>MockFile.length, "content_type"=>"application/octet-stream", "filename"=>"zsh.tar.gz", "tempfile"=>MockFile.new }
+ { "size" => MockFile.length, "content_type" => "application/octet-stream", "filename" => "zsh.tar.gz", "tempfile" => MockFile.new }
mock_request = MockRequest.new(PATH, request_params, MERB_HEADERS_V1_3_SHA256, "")
expect(Time).to receive(:now).at_least(:once).and_return(TIMESTAMP_OBJ)
@@ -215,7 +214,7 @@ describe "Mixlib::Authentication::SignatureVerification" do
#Time.stub!(:now).and_return(TIMESTAMP_OBJ)
auth_req = Mixlib::Authentication::SignatureVerification.new
- expect {auth_req.authenticate_user_request(mock_request, @user_private_key)}.to raise_error(Mixlib::Authentication::AuthenticationError)
+ expect { auth_req.authenticate_user_request(mock_request, @user_private_key) }.to raise_error(Mixlib::Authentication::AuthenticationError)
expect(auth_req).not_to be_a_valid_request
expect(auth_req).not_to be_a_valid_timestamp
@@ -223,7 +222,6 @@ describe "Mixlib::Authentication::SignatureVerification" do
expect(auth_req).not_to be_a_valid_content_hash
end
-
it "shouldn't authenticate if Authorization header is wrong" do
headers = MERB_HEADERS_V1_1.clone
headers["HTTP_X_OPS_CONTENT_HASH"] += "_"
@@ -255,7 +253,7 @@ describe "Mixlib::Authentication::SignatureVerification" do
end
it "shouldn't authenticate if the signature is wrong" do
- headers = MERB_HEADERS_V1_1.dup
+ headers = MERB_HEADERS_V1_1.dup
headers["HTTP_X_OPS_AUTHORIZATION_1"] = "epicfail"
mock_request = MockRequest.new(PATH, MERB_REQUEST_PARAMS, headers, BODY)
expect(Time).to receive(:now).at_least(:once).and_return(TIMESTAMP_OBJ)
@@ -270,7 +268,7 @@ describe "Mixlib::Authentication::SignatureVerification" do
end
it "shouldn't authenticate if the signature is wrong for v1.3 SHA256" do
- headers = MERB_HEADERS_V1_3_SHA256.dup
+ headers = MERB_HEADERS_V1_3_SHA256.dup
headers["HTTP_X_OPS_AUTHORIZATION_1"] = "epicfail"
mock_request = MockRequest.new(PATH, MERB_REQUEST_PARAMS, headers, BODY)
expect(Time).to receive(:now).at_least(:once).and_return(TIMESTAMP_OBJ)
@@ -301,7 +299,7 @@ V1_0_ARGS = {
:http_method => :post,
:timestamp => TIMESTAMP_ISO8601, # fixed timestamp so we get back the same answer each time.
:file => MockFile.new,
- :path => PATH
+ :path => PATH,
}
V1_1_ARGS = {
@@ -311,7 +309,7 @@ V1_1_ARGS = {
:timestamp => TIMESTAMP_ISO8601, # fixed timestamp so we get back the same answer each time.
:file => MockFile.new,
:path => PATH,
- :proto_version => 1.1
+ :proto_version => 1.1,
}
V1_3_ARGS_SHA256 = {
@@ -321,9 +319,9 @@ V1_3_ARGS_SHA256 = {
:timestamp => TIMESTAMP_ISO8601, # fixed timestamp so we get back the same answer each time.
:file => MockFile.new,
:path => PATH,
- :proto_version => '1.3',
+ :proto_version => "1.3",
:headers => {
- 'X-OpS-SeRvEr-ApI-VerSiOn' => '1'
+ "X-OpS-SeRvEr-ApI-VerSiOn" => "1",
}
# This defaults to sha256
}
@@ -332,9 +330,9 @@ LONG_PATH_LONG_USER_ARGS = {
:body => BODY,
:user_id => "A" * 200,
:http_method => :put,
- :timestamp => TIMESTAMP_ISO8601, # fixed timestamp so we get back the same answer each time.
+ :timestamp => TIMESTAMP_ISO8601, # fixed timestamp so we get back the same answer each time.
:file => MockFile.new,
- :path => PATH + "/nodes/#{"A" * 250}"
+ :path => PATH + "/nodes/#{"A" * 250}",
}
REQUESTING_ACTOR_ID = "c0f8a68c52bffa1020222a56b23cccfa"
@@ -349,7 +347,7 @@ X_OPS_AUTHORIZATION_LINES_V1_0 = [
"3tKHE+CfvP+WuPdWk4jv4wpIkAz6ZLxToxcGhXmZbXpk56YTmqgBW2cbbw4O",
"IWPZDHSiPcw//AYNgW1CCDptt+UFuaFYbtqZegcBd2n/jzcWODA7zL4KWEUy",
"9q4rlh/+1tBReg60QdsmDRsw/cdO1GZrKtuCwbuD4+nbRdVBKv72rqHX9cu0",
-"utju9jzczCyB+sSAQWrxSsXB/b8vV2qs0l4VD2ML+w=="
+"utju9jzczCyB+sSAQWrxSsXB/b8vV2qs0l4VD2ML+w==",
]
X_OPS_AUTHORIZATION_LINES = [
@@ -358,7 +356,7 @@ X_OPS_AUTHORIZATION_LINES = [
"c2R9bx/43IWA/r8w8Q6decuu0f6ZlNheJeJhaYPI8piX/aH+uHBH8zTACZu8",
"vMnl5MF3/OIlsZc8cemq6eKYstp8a8KYq9OmkB5IXIX6qVMJHA6fRvQEB/7j",
"281Q7oI/O+lE8AmVyBbwruPb7Mp6s4839eYiOdjbDwFjYtbS3XgAjrHlaD7W",
-"FDlbAG7H8Dmvo+wBxmtNkszhzbBnEYtuwQqT8nM/8A=="
+"FDlbAG7H8Dmvo+wBxmtNkszhzbBnEYtuwQqT8nM/8A==",
]
X_OPS_AUTHORIZATION_LINES_V1_3_SHA256 = [
@@ -367,154 +365,154 @@ X_OPS_AUTHORIZATION_LINES_V1_3_SHA256 = [
"42dZ9N+V9I5SVfcL/lWrrlpdybfceJC5jOcP5tzfJXWUITwb6Z3Erg3DU3Uh",
"H9h9E0qWlYGqmiNCVrBnpe6Si1gU/Jl+rXlRSNbLJ4GlArAPuL976iTYJTzE",
"MmbLUIm3JRYi00Yb01IUCCKdI90vUq1HHNtlTEu93YZfQaJwRxXlGkCNwIJe",
- "fy49QzaCIEu1XiOx5Jn+4GmkrZch/RrK9VzQWXgs+w=="
+ "fy49QzaCIEu1XiOx5Jn+4GmkrZch/RrK9VzQWXgs+w==",
]
# We expect Mixlib::Authentication::SignedHeaderAuth#sign to return this
# if passed the BODY above, based on version
EXPECTED_SIGN_RESULT_V1_0 = {
- "X-Ops-Content-Hash"=>X_OPS_CONTENT_HASH,
- "X-Ops-Userid"=>USER_ID,
- "X-Ops-Sign"=>"algorithm=sha1;version=1.0;",
- "X-Ops-Authorization-1"=>X_OPS_AUTHORIZATION_LINES_V1_0[0],
- "X-Ops-Authorization-2"=>X_OPS_AUTHORIZATION_LINES_V1_0[1],
- "X-Ops-Authorization-3"=>X_OPS_AUTHORIZATION_LINES_V1_0[2],
- "X-Ops-Authorization-4"=>X_OPS_AUTHORIZATION_LINES_V1_0[3],
- "X-Ops-Authorization-5"=>X_OPS_AUTHORIZATION_LINES_V1_0[4],
- "X-Ops-Authorization-6"=>X_OPS_AUTHORIZATION_LINES_V1_0[5],
- "X-Ops-Timestamp"=>TIMESTAMP_ISO8601
+ "X-Ops-Content-Hash" => X_OPS_CONTENT_HASH,
+ "X-Ops-Userid" => USER_ID,
+ "X-Ops-Sign" => "algorithm=sha1;version=1.0;",
+ "X-Ops-Authorization-1" => X_OPS_AUTHORIZATION_LINES_V1_0[0],
+ "X-Ops-Authorization-2" => X_OPS_AUTHORIZATION_LINES_V1_0[1],
+ "X-Ops-Authorization-3" => X_OPS_AUTHORIZATION_LINES_V1_0[2],
+ "X-Ops-Authorization-4" => X_OPS_AUTHORIZATION_LINES_V1_0[3],
+ "X-Ops-Authorization-5" => X_OPS_AUTHORIZATION_LINES_V1_0[4],
+ "X-Ops-Authorization-6" => X_OPS_AUTHORIZATION_LINES_V1_0[5],
+ "X-Ops-Timestamp" => TIMESTAMP_ISO8601,
}
EXPECTED_SIGN_RESULT_V1_1 = {
- "X-Ops-Content-Hash"=>X_OPS_CONTENT_HASH,
- "X-Ops-Userid"=>USER_ID,
- "X-Ops-Sign"=>"algorithm=sha1;version=1.1;",
- "X-Ops-Authorization-1"=>X_OPS_AUTHORIZATION_LINES[0],
- "X-Ops-Authorization-2"=>X_OPS_AUTHORIZATION_LINES[1],
- "X-Ops-Authorization-3"=>X_OPS_AUTHORIZATION_LINES[2],
- "X-Ops-Authorization-4"=>X_OPS_AUTHORIZATION_LINES[3],
- "X-Ops-Authorization-5"=>X_OPS_AUTHORIZATION_LINES[4],
- "X-Ops-Authorization-6"=>X_OPS_AUTHORIZATION_LINES[5],
- "X-Ops-Timestamp"=>TIMESTAMP_ISO8601
+ "X-Ops-Content-Hash" => X_OPS_CONTENT_HASH,
+ "X-Ops-Userid" => USER_ID,
+ "X-Ops-Sign" => "algorithm=sha1;version=1.1;",
+ "X-Ops-Authorization-1" => X_OPS_AUTHORIZATION_LINES[0],
+ "X-Ops-Authorization-2" => X_OPS_AUTHORIZATION_LINES[1],
+ "X-Ops-Authorization-3" => X_OPS_AUTHORIZATION_LINES[2],
+ "X-Ops-Authorization-4" => X_OPS_AUTHORIZATION_LINES[3],
+ "X-Ops-Authorization-5" => X_OPS_AUTHORIZATION_LINES[4],
+ "X-Ops-Authorization-6" => X_OPS_AUTHORIZATION_LINES[5],
+ "X-Ops-Timestamp" => TIMESTAMP_ISO8601,
}
EXPECTED_SIGN_RESULT_V1_3_SHA256 = {
- "X-Ops-Content-Hash"=>X_OPS_CONTENT_HASH_SHA256,
- "X-Ops-Userid"=>USER_ID,
- "X-Ops-Sign"=>"algorithm=sha256;version=1.3;",
- "X-Ops-Authorization-1"=>X_OPS_AUTHORIZATION_LINES_V1_3_SHA256[0],
- "X-Ops-Authorization-2"=>X_OPS_AUTHORIZATION_LINES_V1_3_SHA256[1],
- "X-Ops-Authorization-3"=>X_OPS_AUTHORIZATION_LINES_V1_3_SHA256[2],
- "X-Ops-Authorization-4"=>X_OPS_AUTHORIZATION_LINES_V1_3_SHA256[3],
- "X-Ops-Authorization-5"=>X_OPS_AUTHORIZATION_LINES_V1_3_SHA256[4],
- "X-Ops-Authorization-6"=>X_OPS_AUTHORIZATION_LINES_V1_3_SHA256[5],
- "X-Ops-Timestamp"=>TIMESTAMP_ISO8601
+ "X-Ops-Content-Hash" => X_OPS_CONTENT_HASH_SHA256,
+ "X-Ops-Userid" => USER_ID,
+ "X-Ops-Sign" => "algorithm=sha256;version=1.3;",
+ "X-Ops-Authorization-1" => X_OPS_AUTHORIZATION_LINES_V1_3_SHA256[0],
+ "X-Ops-Authorization-2" => X_OPS_AUTHORIZATION_LINES_V1_3_SHA256[1],
+ "X-Ops-Authorization-3" => X_OPS_AUTHORIZATION_LINES_V1_3_SHA256[2],
+ "X-Ops-Authorization-4" => X_OPS_AUTHORIZATION_LINES_V1_3_SHA256[3],
+ "X-Ops-Authorization-5" => X_OPS_AUTHORIZATION_LINES_V1_3_SHA256[4],
+ "X-Ops-Authorization-6" => X_OPS_AUTHORIZATION_LINES_V1_3_SHA256[5],
+ "X-Ops-Timestamp" => TIMESTAMP_ISO8601,
}
OTHER_HEADERS = {
# An arbitrary sampling of non-HTTP_* headers are in here to
# exercise that code path.
- "REMOTE_ADDR"=>"127.0.0.1",
- "PATH_INFO"=>"/organizations/local-test-org/cookbooks",
- "REQUEST_PATH"=>"/organizations/local-test-org/cookbooks",
- "CONTENT_TYPE"=>"multipart/form-data; boundary=----RubyMultipartClient6792ZZZZZ",
- "CONTENT_LENGTH"=>"394",
+ "REMOTE_ADDR" => "127.0.0.1",
+ "PATH_INFO" => "/organizations/local-test-org/cookbooks",
+ "REQUEST_PATH" => "/organizations/local-test-org/cookbooks",
+ "CONTENT_TYPE" => "multipart/form-data; boundary=----RubyMultipartClient6792ZZZZZ",
+ "CONTENT_LENGTH" => "394",
}
# This is what will be in request.params for the Merb case.
MERB_REQUEST_PARAMS = {
- "name"=>"zsh", "action"=>"create", "controller"=>"chef_server_api/cookbooks",
- "organization_id"=>"local-test-org", "requesting_actor_id"=>REQUESTING_ACTOR_ID,
+ "name" => "zsh", "action" => "create", "controller" => "chef_server_api/cookbooks",
+ "organization_id" => "local-test-org", "requesting_actor_id" => REQUESTING_ACTOR_ID
}
MERB_HEADERS_V1_3_SHA256 = {
# These are used by signatureverification.
- "HTTP_HOST"=>"127.0.0.1",
- "HTTP_X_OPS_SIGN"=>"algorithm=sha256;version=1.3;",
- "HTTP_X_OPS_REQUESTID"=>"127.0.0.1 1258566194.85386",
- "HTTP_X_OPS_TIMESTAMP"=>TIMESTAMP_ISO8601,
- "HTTP_X_OPS_CONTENT_HASH"=>X_OPS_CONTENT_HASH_SHA256,
- "HTTP_X_OPS_USERID"=>USER_ID,
- "HTTP_X_OPS_SERVER_API_VERSION"=>"1",
- "HTTP_X_OPS_AUTHORIZATION_1"=>X_OPS_AUTHORIZATION_LINES_V1_3_SHA256[0],
- "HTTP_X_OPS_AUTHORIZATION_2"=>X_OPS_AUTHORIZATION_LINES_V1_3_SHA256[1],
- "HTTP_X_OPS_AUTHORIZATION_3"=>X_OPS_AUTHORIZATION_LINES_V1_3_SHA256[2],
- "HTTP_X_OPS_AUTHORIZATION_4"=>X_OPS_AUTHORIZATION_LINES_V1_3_SHA256[3],
- "HTTP_X_OPS_AUTHORIZATION_5"=>X_OPS_AUTHORIZATION_LINES_V1_3_SHA256[4],
- "HTTP_X_OPS_AUTHORIZATION_6"=>X_OPS_AUTHORIZATION_LINES_V1_3_SHA256[5],
+ "HTTP_HOST" => "127.0.0.1",
+ "HTTP_X_OPS_SIGN" => "algorithm=sha256;version=1.3;",
+ "HTTP_X_OPS_REQUESTID" => "127.0.0.1 1258566194.85386",
+ "HTTP_X_OPS_TIMESTAMP" => TIMESTAMP_ISO8601,
+ "HTTP_X_OPS_CONTENT_HASH" => X_OPS_CONTENT_HASH_SHA256,
+ "HTTP_X_OPS_USERID" => USER_ID,
+ "HTTP_X_OPS_SERVER_API_VERSION" => "1",
+ "HTTP_X_OPS_AUTHORIZATION_1" => X_OPS_AUTHORIZATION_LINES_V1_3_SHA256[0],
+ "HTTP_X_OPS_AUTHORIZATION_2" => X_OPS_AUTHORIZATION_LINES_V1_3_SHA256[1],
+ "HTTP_X_OPS_AUTHORIZATION_3" => X_OPS_AUTHORIZATION_LINES_V1_3_SHA256[2],
+ "HTTP_X_OPS_AUTHORIZATION_4" => X_OPS_AUTHORIZATION_LINES_V1_3_SHA256[3],
+ "HTTP_X_OPS_AUTHORIZATION_5" => X_OPS_AUTHORIZATION_LINES_V1_3_SHA256[4],
+ "HTTP_X_OPS_AUTHORIZATION_6" => X_OPS_AUTHORIZATION_LINES_V1_3_SHA256[5],
}.merge(OTHER_HEADERS)
# Tis is what will be in request.env for the Merb case.
MERB_HEADERS_V1_1 = {
# These are used by signatureverification.
- "HTTP_HOST"=>"127.0.0.1",
- "HTTP_X_OPS_SIGN"=>"algorithm=sha1;version=1.1;",
- "HTTP_X_OPS_REQUESTID"=>"127.0.0.1 1258566194.85386",
- "HTTP_X_OPS_TIMESTAMP"=>TIMESTAMP_ISO8601,
- "HTTP_X_OPS_CONTENT_HASH"=>X_OPS_CONTENT_HASH,
- "HTTP_X_OPS_USERID"=>USER_ID,
- "HTTP_X_OPS_AUTHORIZATION_1"=>X_OPS_AUTHORIZATION_LINES[0],
- "HTTP_X_OPS_AUTHORIZATION_2"=>X_OPS_AUTHORIZATION_LINES[1],
- "HTTP_X_OPS_AUTHORIZATION_3"=>X_OPS_AUTHORIZATION_LINES[2],
- "HTTP_X_OPS_AUTHORIZATION_4"=>X_OPS_AUTHORIZATION_LINES[3],
- "HTTP_X_OPS_AUTHORIZATION_5"=>X_OPS_AUTHORIZATION_LINES[4],
- "HTTP_X_OPS_AUTHORIZATION_6"=>X_OPS_AUTHORIZATION_LINES[5],
+ "HTTP_HOST" => "127.0.0.1",
+ "HTTP_X_OPS_SIGN" => "algorithm=sha1;version=1.1;",
+ "HTTP_X_OPS_REQUESTID" => "127.0.0.1 1258566194.85386",
+ "HTTP_X_OPS_TIMESTAMP" => TIMESTAMP_ISO8601,
+ "HTTP_X_OPS_CONTENT_HASH" => X_OPS_CONTENT_HASH,
+ "HTTP_X_OPS_USERID" => USER_ID,
+ "HTTP_X_OPS_AUTHORIZATION_1" => X_OPS_AUTHORIZATION_LINES[0],
+ "HTTP_X_OPS_AUTHORIZATION_2" => X_OPS_AUTHORIZATION_LINES[1],
+ "HTTP_X_OPS_AUTHORIZATION_3" => X_OPS_AUTHORIZATION_LINES[2],
+ "HTTP_X_OPS_AUTHORIZATION_4" => X_OPS_AUTHORIZATION_LINES[3],
+ "HTTP_X_OPS_AUTHORIZATION_5" => X_OPS_AUTHORIZATION_LINES[4],
+ "HTTP_X_OPS_AUTHORIZATION_6" => X_OPS_AUTHORIZATION_LINES[5],
}.merge(OTHER_HEADERS)
# Tis is what will be in request.env for the Merb case.
MERB_HEADERS_V1_0 = {
# These are used by signatureverification.
- "HTTP_HOST"=>"127.0.0.1",
- "HTTP_X_OPS_SIGN"=>"version=1.0",
- "HTTP_X_OPS_REQUESTID"=>"127.0.0.1 1258566194.85386",
- "HTTP_X_OPS_TIMESTAMP"=>TIMESTAMP_ISO8601,
- "HTTP_X_OPS_CONTENT_HASH"=>X_OPS_CONTENT_HASH,
- "HTTP_X_OPS_USERID"=>USER_ID,
- "HTTP_X_OPS_AUTHORIZATION_1"=>X_OPS_AUTHORIZATION_LINES_V1_0[0],
- "HTTP_X_OPS_AUTHORIZATION_2"=>X_OPS_AUTHORIZATION_LINES_V1_0[1],
- "HTTP_X_OPS_AUTHORIZATION_3"=>X_OPS_AUTHORIZATION_LINES_V1_0[2],
- "HTTP_X_OPS_AUTHORIZATION_4"=>X_OPS_AUTHORIZATION_LINES_V1_0[3],
- "HTTP_X_OPS_AUTHORIZATION_5"=>X_OPS_AUTHORIZATION_LINES_V1_0[4],
- "HTTP_X_OPS_AUTHORIZATION_6"=>X_OPS_AUTHORIZATION_LINES_V1_0[5],
+ "HTTP_HOST" => "127.0.0.1",
+ "HTTP_X_OPS_SIGN" => "version=1.0",
+ "HTTP_X_OPS_REQUESTID" => "127.0.0.1 1258566194.85386",
+ "HTTP_X_OPS_TIMESTAMP" => TIMESTAMP_ISO8601,
+ "HTTP_X_OPS_CONTENT_HASH" => X_OPS_CONTENT_HASH,
+ "HTTP_X_OPS_USERID" => USER_ID,
+ "HTTP_X_OPS_AUTHORIZATION_1" => X_OPS_AUTHORIZATION_LINES_V1_0[0],
+ "HTTP_X_OPS_AUTHORIZATION_2" => X_OPS_AUTHORIZATION_LINES_V1_0[1],
+ "HTTP_X_OPS_AUTHORIZATION_3" => X_OPS_AUTHORIZATION_LINES_V1_0[2],
+ "HTTP_X_OPS_AUTHORIZATION_4" => X_OPS_AUTHORIZATION_LINES_V1_0[3],
+ "HTTP_X_OPS_AUTHORIZATION_5" => X_OPS_AUTHORIZATION_LINES_V1_0[4],
+ "HTTP_X_OPS_AUTHORIZATION_6" => X_OPS_AUTHORIZATION_LINES_V1_0[5],
}.merge(OTHER_HEADERS)
PASSENGER_REQUEST_PARAMS = {
- "action"=>"create",
+ "action" => "create",
#"tarball"=>#<File:/tmp/RackMultipart20091120-25570-mgq2sa-0>,
- "controller"=>"api/v1/cookbooks",
- "cookbook"=>"{\"category\":\"databases\"}",
+ "controller" => "api/v1/cookbooks",
+ "cookbook" => "{\"category\":\"databases\"}",
}
PASSENGER_HEADERS_V1_1 = {
# These are used by signatureverification.
- "HTTP_HOST"=>"127.0.0.1",
- "HTTP_X_OPS_SIGN"=>"algorithm=sha1;version=1.1;",
- "HTTP_X_OPS_REQUESTID"=>"127.0.0.1 1258566194.85386",
- "HTTP_X_OPS_TIMESTAMP"=>TIMESTAMP_ISO8601,
- "HTTP_X_OPS_CONTENT_HASH"=>X_OPS_CONTENT_HASH,
- "HTTP_X_OPS_USERID"=>USER_ID,
- "HTTP_X_OPS_AUTHORIZATION_1"=>X_OPS_AUTHORIZATION_LINES[0],
- "HTTP_X_OPS_AUTHORIZATION_2"=>X_OPS_AUTHORIZATION_LINES[1],
- "HTTP_X_OPS_AUTHORIZATION_3"=>X_OPS_AUTHORIZATION_LINES[2],
- "HTTP_X_OPS_AUTHORIZATION_4"=>X_OPS_AUTHORIZATION_LINES[3],
- "HTTP_X_OPS_AUTHORIZATION_5"=>X_OPS_AUTHORIZATION_LINES[4],
- "HTTP_X_OPS_AUTHORIZATION_6"=>X_OPS_AUTHORIZATION_LINES[5],
+ "HTTP_HOST" => "127.0.0.1",
+ "HTTP_X_OPS_SIGN" => "algorithm=sha1;version=1.1;",
+ "HTTP_X_OPS_REQUESTID" => "127.0.0.1 1258566194.85386",
+ "HTTP_X_OPS_TIMESTAMP" => TIMESTAMP_ISO8601,
+ "HTTP_X_OPS_CONTENT_HASH" => X_OPS_CONTENT_HASH,
+ "HTTP_X_OPS_USERID" => USER_ID,
+ "HTTP_X_OPS_AUTHORIZATION_1" => X_OPS_AUTHORIZATION_LINES[0],
+ "HTTP_X_OPS_AUTHORIZATION_2" => X_OPS_AUTHORIZATION_LINES[1],
+ "HTTP_X_OPS_AUTHORIZATION_3" => X_OPS_AUTHORIZATION_LINES[2],
+ "HTTP_X_OPS_AUTHORIZATION_4" => X_OPS_AUTHORIZATION_LINES[3],
+ "HTTP_X_OPS_AUTHORIZATION_5" => X_OPS_AUTHORIZATION_LINES[4],
+ "HTTP_X_OPS_AUTHORIZATION_6" => X_OPS_AUTHORIZATION_LINES[5],
}.merge(OTHER_HEADERS)
PASSENGER_HEADERS_V1_0 = {
# These are used by signatureverification.
- "HTTP_HOST"=>"127.0.0.1",
- "HTTP_X_OPS_SIGN"=>"version=1.0",
- "HTTP_X_OPS_REQUESTID"=>"127.0.0.1 1258566194.85386",
- "HTTP_X_OPS_TIMESTAMP"=>TIMESTAMP_ISO8601,
- "HTTP_X_OPS_CONTENT_HASH"=>X_OPS_CONTENT_HASH,
- "HTTP_X_OPS_USERID"=>USER_ID,
- "HTTP_X_OPS_AUTHORIZATION_1"=>X_OPS_AUTHORIZATION_LINES_V1_0[0],
- "HTTP_X_OPS_AUTHORIZATION_2"=>X_OPS_AUTHORIZATION_LINES_V1_0[1],
- "HTTP_X_OPS_AUTHORIZATION_3"=>X_OPS_AUTHORIZATION_LINES_V1_0[2],
- "HTTP_X_OPS_AUTHORIZATION_4"=>X_OPS_AUTHORIZATION_LINES_V1_0[3],
- "HTTP_X_OPS_AUTHORIZATION_5"=>X_OPS_AUTHORIZATION_LINES_V1_0[4],
- "HTTP_X_OPS_AUTHORIZATION_6"=>X_OPS_AUTHORIZATION_LINES_V1_0[5],
+ "HTTP_HOST" => "127.0.0.1",
+ "HTTP_X_OPS_SIGN" => "version=1.0",
+ "HTTP_X_OPS_REQUESTID" => "127.0.0.1 1258566194.85386",
+ "HTTP_X_OPS_TIMESTAMP" => TIMESTAMP_ISO8601,
+ "HTTP_X_OPS_CONTENT_HASH" => X_OPS_CONTENT_HASH,
+ "HTTP_X_OPS_USERID" => USER_ID,
+ "HTTP_X_OPS_AUTHORIZATION_1" => X_OPS_AUTHORIZATION_LINES_V1_0[0],
+ "HTTP_X_OPS_AUTHORIZATION_2" => X_OPS_AUTHORIZATION_LINES_V1_0[1],
+ "HTTP_X_OPS_AUTHORIZATION_3" => X_OPS_AUTHORIZATION_LINES_V1_0[2],
+ "HTTP_X_OPS_AUTHORIZATION_4" => X_OPS_AUTHORIZATION_LINES_V1_0[3],
+ "HTTP_X_OPS_AUTHORIZATION_5" => X_OPS_AUTHORIZATION_LINES_V1_0[4],
+ "HTTP_X_OPS_AUTHORIZATION_6" => X_OPS_AUTHORIZATION_LINES_V1_0[5],
}.merge(OTHER_HEADERS)
# generated with