From 86588f08b39bb69c8b106cae7a1ab29bfcbb2b46 Mon Sep 17 00:00:00 2001 From: Matthew Hutchinson Date: Sat, 28 Sep 2024 22:14:10 +0100 Subject: [PATCH] fix tests, use image fixture instead of tmp file --- lib/lolcommits/plugin/uploldz.rb | 1 + test/images/lolcommit.jpg | Bin 0 -> 31829 bytes test/lolcommits/plugin/uploldz_test.rb | 178 ++++++++++++------------- 3 files changed, 88 insertions(+), 91 deletions(-) create mode 100644 test/images/lolcommit.jpg diff --git a/lib/lolcommits/plugin/uploldz.rb b/lib/lolcommits/plugin/uploldz.rb index ebe643e..dbdc614 100644 --- a/lib/lolcommits/plugin/uploldz.rb +++ b/lib/lolcommits/plugin/uploldz.rb @@ -49,6 +49,7 @@ def valid_configuration? # def run_capture_ready debug "Posting capture to #{configuration[:endpoint]}" + RestClient.post( configuration[:endpoint], { diff --git a/test/images/lolcommit.jpg b/test/images/lolcommit.jpg new file mode 100644 index 0000000000000000000000000000000000000000..e61a93941249231ef924082b299cd36e29c0df0c GIT binary patch literal 31829 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 i@K(X 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 literal 0 HcmV?d00001 diff --git a/test/lolcommits/plugin/uploldz_test.rb b/test/lolcommits/plugin/uploldz_test.rb index ae679de..02e9261 100644 --- a/test/lolcommits/plugin/uploldz_test.rb +++ b/test/lolcommits/plugin/uploldz_test.rb @@ -4,118 +4,114 @@ require 'webmock/minitest' describe Lolcommits::Plugin::Uploldz do - include Lolcommits::TestHelpers::GitRepo include Lolcommits::TestHelpers::FakeIO - describe "with a runner" do - def runner - # a simple lolcommits runner with an empty configuration Hash - @runner ||= Lolcommits::Runner.new( - lolcommit_path: Tempfile.new('lolcommit.jpg').path - ) - end + def valid_enabled_config + { + enabled: true, + endpoint: "https://uploldz.com/uplol", + optional_http_auth_username: 'joe', + optional_http_auth_password: '1234' + } + end - def plugin - @plugin ||= Lolcommits::Plugin::Uploldz.new(runner: runner) + describe "initalizing" do + it "assigns runner and all plugin options" do + _(plugin.runner).wont_be_nil + _(plugin.options).must_equal [ + :enabled, + :endpoint, + :optional_key, + :optional_http_auth_username, + :optional_http_auth_password + ] end + end - def valid_enabled_config - { - enabled: true, - endpoint: "https://uploldz.com/uplol", - optional_http_auth_username: 'joe', - optional_http_auth_password: '1234' - } + describe "#enabled?" do + it "is false by default" do + _(plugin.enabled?).must_equal false end - describe "initalizing" do - it "assigns runner and all plugin options" do - _(plugin.runner).must_equal runner - _(plugin.options).must_equal [ - :enabled, - :endpoint, - :optional_key, - :optional_http_auth_username, - :optional_http_auth_password - ] - end + it "is true when configured" do + plugin.configuration = valid_enabled_config + _(plugin.enabled?).must_equal true end + end - describe "#enabled?" do - it "is false by default" do - _(plugin.enabled?).must_equal false - end + describe "run_capture_ready" do + before { commit_repo_with_message("first commit!") } + after { teardown_repo } - it "is true when configured" do - plugin.configuration = valid_enabled_config - _(plugin.enabled?).must_equal true - end - end + it "syncs lolcommits" do + captured_img_path = File.expand_path("./test/images/lolcommit.jpg") - describe "run_capture_ready" do - before { commit_repo_with_message("first commit!") } - after { teardown_repo } - - it "syncs lolcommits" do - in_repo do - plugin.configuration = valid_enabled_config - - stub_request(:post, "https://uploldz.com/uplol").to_return(status: 200) - - plugin.run_capture_ready - - assert_requested :post, "https://uploldz.com/uplol", times: 1, - headers: {'Content-Type' => /multipart\/form-data/ } do |req| - _(req.body).must_match(/Content-Disposition: form-data;.+name="file"; filename="lolcommit.jpg.+"/) - _(req.body).must_match 'name="repo"' - _(req.body).must_match 'name="author_name"' - _(req.body).must_match 'name="author_email"' - _(req.body).must_match 'name="sha"' - _(req.body).must_match 'name="key"' - _(req.body).must_match "plugin-test-repo" - _(req.body).must_match "first commit!" - end + in_repo do + plugin.configuration = valid_enabled_config + plugin.runner.lolcommit_path = captured_img_path + + stub_request(:post, "https://uploldz.com/uplol").to_return(status: 200) + + plugin.run_capture_ready + + assert_requested :post, "https://uploldz.com/uplol", times: 1, + headers: {'Content-Type' => /multipart\/form-data/ } do |req| + _(req.body).must_match(/Content-Disposition: form-data;.+name="file"; filename="lolcommit.jpg"/) + _(req.body).must_match 'name="repo"' + _(req.body).must_match 'name="author_name"' + _(req.body).must_match 'name="author_email"' + _(req.body).must_match 'name="sha"' + _(req.body).must_match 'name="key"' + _(req.body).must_match "plugin-test-repo" + _(req.body).must_match "first commit!" end end end + end - describe "configuration" do - it "allows plugin options to be configured" do - # enabled, endpoint, key, user, password - inputs = %w( - true - https://my-server.com/uplol - key-123 - joe - 1337pass - ) - configured_plugin_options = {} - - fake_io_capture(inputs: inputs) do - configured_plugin_options = plugin.configure_options! - end + describe "configuration" do + it "allows plugin options to be configured" do + # enabled, endpoint, key, user, password + inputs = %w( + true + https://my-server.com/uplol + key-123 + joe + 1337pass + ) + configured_plugin_options = {} - _(configured_plugin_options).must_equal({ - enabled: true, - endpoint: "https://my-server.com/uplol", - optional_key: "key-123", - optional_http_auth_username: "joe", - optional_http_auth_password: "1337pass" - }) + fake_io_capture(inputs: inputs) do + configured_plugin_options = plugin.configure_options! end - describe "#valid_configuration?" do - it "returns false for an invalid configuration" do - plugin.configuration = { endpoint: "gibberish" } - _(plugin.valid_configuration?).must_equal false - end + _(configured_plugin_options).must_equal({ + enabled: true, + endpoint: "https://my-server.com/uplol", + optional_key: "key-123", + optional_http_auth_username: "joe", + optional_http_auth_password: "1337pass" + }) + end - it "returns true with a valid configuration" do - plugin.configuration = valid_enabled_config - _(plugin.valid_configuration?).must_equal true - end + describe "#valid_configuration?" do + it "returns false for an invalid configuration" do + plugin.configuration = { endpoint: "gibberish" } + _(plugin.valid_configuration?).must_equal false + end + + it "returns true with a valid configuration" do + plugin.configuration = valid_enabled_config + _(plugin.valid_configuration?).must_equal true end end end + + private + def plugin + @plugin ||= Lolcommits::Plugin::Uploldz.new( + runner: Lolcommits::Runner.new + ) + end end