|
465 | 465 | end |
466 | 466 |
|
467 | 467 | context "includes the checksum" do |
468 | | - context "when @sha256 is false or nil" do |
469 | | - let(:params) { { param1: "value1", param2: "value2" } } |
470 | | - let(:checksum) { |
471 | | - # the hash can be sorted differently depending on the ruby version |
472 | | - if params.map{ |k, v| k }.join =~ /^param1/ |
473 | | - "67882ae54f49600f56f358c10d24697ef7d8c6b2" |
474 | | - else |
475 | | - "85a54e28e4ec18bfdcb214a73f74d35b09a84176" |
476 | | - end |
477 | | - } |
| 468 | + let(:method) { "join" } |
| 469 | + let(:params) { { param1: "value1", param2: "value2" } } |
| 470 | + let(:params_string) { params.map{ |k,v| "#{k}=" + URI.encode_www_form_component(v.to_s) unless k.nil? || v.nil? }.join("&") } |
| 471 | + let(:checksum_param) { method.to_s + params_string + secret } |
| 472 | + |
| 473 | + context "when @algorithm is false or nil" do |
| 474 | + let(:checksum) { Digest::SHA1.hexdigest(checksum_param ) } |
| 475 | + |
| 476 | + subject { api.get_url(:join, params)[0] } |
| 477 | + it('uses SHA1') { subject.should match(/checksum=#{checksum}$/) } |
| 478 | + end |
| 479 | + |
| 480 | + context "when @algorithm is is set to 'sha1'" do |
| 481 | + let(:api) { BigBlueButton::BigBlueButtonApi.new(url, secret, version, logger, "sha1") } |
| 482 | + let(:checksum) { Digest::SHA1.hexdigest(checksum_param ) } |
| 483 | + |
478 | 484 | subject { api.get_url(:join, params)[0] } |
479 | 485 | it('uses SHA1') { subject.should match(/checksum=#{checksum}$/) } |
480 | 486 | end |
481 | 487 |
|
482 | | - context "when @sha256 flag is true" do |
| 488 | + context "when @algorithm flag is set to 'sha2'" do |
| 489 | + let(:api) { BigBlueButton::BigBlueButtonApi.new(url, secret, version, logger, "sha2") } |
| 490 | + let(:checksum) { Digest::SHA256.hexdigest(checksum_param ) } |
| 491 | + |
| 492 | + subject { api.get_url(:join, params)[0] } |
| 493 | + it('uses SHA256') { subject.should match(/checksum=#{checksum}$/) } |
| 494 | + end |
| 495 | + |
| 496 | + context "when @algorithm flag is set to 'sha256'" do |
| 497 | + let(:api) { BigBlueButton::BigBlueButtonApi.new(url, secret, version, logger, "sha256") } |
| 498 | + let(:checksum) { Digest::SHA256.hexdigest(checksum_param ) } |
| 499 | + |
| 500 | + subject { api.get_url(:join, params)[0] } |
| 501 | + it('uses SHA256') { subject.should match(/checksum=#{checksum}$/) } |
| 502 | + end |
| 503 | + |
| 504 | + context "when @algorithm flag is set to 'sha512'" do |
| 505 | + let(:api) { BigBlueButton::BigBlueButtonApi.new(url, secret, version, logger, "sha512") } |
| 506 | + let(:checksum) { Digest::SHA512.hexdigest(checksum_param ) } |
| 507 | + |
| 508 | + subject { api.get_url(:join, params)[0] } |
| 509 | + it('uses SHA256') { subject.should match(/checksum=#{checksum}$/) } |
| 510 | + end |
| 511 | + |
| 512 | + # Ensure legacy support |
| 513 | + context "when @algorithm flag is true" do |
483 | 514 | let(:api) { BigBlueButton::BigBlueButtonApi.new(url, secret, version, logger, true) } |
484 | | - let(:params) { { param1: "value1", param2: "value2" } } |
485 | | - let(:checksum) { |
486 | | - # the hash can be sorted differently depending on the ruby version |
487 | | - if params.map{ |k,v| k }.join =~ /^param1/ |
488 | | - "0e7b1611809fad890a114dddae1a37fecf14c28971afc10ee3eac432da5b8b41" |
489 | | - else |
490 | | - "21bf2d24c27251c4b2b2f0d5dd4b966a2f16fbfc7882e102b44c6d67f728f0c8" |
491 | | - end |
492 | | - } |
| 515 | + let(:checksum) { Digest::SHA256.hexdigest(checksum_param ) } |
| 516 | + |
493 | 517 | subject { api.get_url(:join, params)[0] } |
494 | 518 | it('uses SHA256') { subject.should match(/checksum=#{checksum}$/) } |
495 | 519 | end |
|
0 commit comments