|
15 | 15 | require "minitest/autorun" |
16 | 16 | require "transloadit" |
17 | 17 | require "vcr" |
| 18 | +require "open3" |
| 19 | +require "json" |
18 | 20 |
|
19 | 21 | VCR.configure do |c| |
20 | 22 | c.cassette_library_dir = "test/fixtures/cassettes" |
|
25 | 27 | def values_from_post_body(body) |
26 | 28 | Addressable::URI.parse("?" + CGI.unescape(body)).query_values |
27 | 29 | end |
| 30 | + |
| 31 | +module TransloaditCliHelpers |
| 32 | + TRANSLOADIT_CLI_PACKAGE = ENV.fetch("TRANSLOADIT_CLI_PACKAGE", "[email protected]") |
| 33 | + |
| 34 | + def run_transloadit_cli(command, payload, key:, secret:, algorithm: nil) |
| 35 | + return nil unless ENV["TEST_NODE_PARITY"] == "1" |
| 36 | + |
| 37 | + env = { |
| 38 | + "TRANSLOADIT_KEY" => key, |
| 39 | + "TRANSLOADIT_SECRET" => secret, |
| 40 | + "TRANSLOADIT_AUTH_KEY" => key, |
| 41 | + "TRANSLOADIT_AUTH_SECRET" => secret |
| 42 | + } |
| 43 | + |
| 44 | + args = [ |
| 45 | + "npm", "exec", "--yes", "--package", TRANSLOADIT_CLI_PACKAGE, "--", |
| 46 | + "transloadit", command |
| 47 | + ] |
| 48 | + args += ["--algorithm", algorithm] if algorithm |
| 49 | + |
| 50 | + stdout, stderr, status = Open3.capture3(env, *args, stdin_data: JSON.dump(payload)) |
| 51 | + raise "transloadit CLI #{command} failed: #{stderr}" unless status.success? |
| 52 | + |
| 53 | + stdout.strip |
| 54 | + end |
| 55 | + |
| 56 | + def run_transloadit_smart_sig(payload, key:, secret:) |
| 57 | + cli_payload = { |
| 58 | + workspace: payload.fetch(:workspace), |
| 59 | + template: payload.fetch(:template), |
| 60 | + input: payload.fetch(:input) |
| 61 | + } |
| 62 | + cli_payload[:url_params] = payload[:url_params] if payload.key?(:url_params) |
| 63 | + cli_payload[:expire_at_ms] = payload[:expire_at_ms] if payload.key?(:expire_at_ms) |
| 64 | + |
| 65 | + run_transloadit_cli("smart_sig", cli_payload, key: key, secret: secret) |
| 66 | + end |
| 67 | + |
| 68 | + def run_transloadit_sig(payload, key:, secret:, algorithm: nil) |
| 69 | + output = run_transloadit_cli("sig", payload, key: key, secret: secret, algorithm: algorithm) |
| 70 | + output && JSON.parse(output) |
| 71 | + end |
| 72 | +end |
| 73 | + |
| 74 | +Minitest::Test.include(TransloaditCliHelpers) |
| 75 | + |
0 commit comments