# frozen_string_literal: true require "test_helper" require "sip_account" class SipAccount public :password, :url class New public :password end end class SipAccountTest < Minitest::Test def setup @sip = SipAccount.new( url: "https://api.catapult.inetwork.com/v1/" \ "users/catapult_user/domains/catapult_domain/endpoints/test", username: "12345", password: "old password" ) end def test_with_random_password new_sip = @sip.with_random_password refute_equal @sip.password, new_sip.password refute_empty new_sip.password assert_kind_of String, new_sip.password end def test_form form = @sip.form assert_equal "12345", form.field("username").value assert_equal "old password", form.field("password").value assert_equal "host.bwapp.io.example.com", form.field("server").value end def test_put delete = stub_request(:delete, @sip.url).with( headers: { "Authorization" => "Basic Y2F0YXB1bHRfdG9rZW46Y2F0YXB1bHRfc2VjcmV0" } ).to_return(status: 200) post = stub_request( :post, "https://api.catapult.inetwork.com/v1/users/" \ "catapult_user/domains/catapult_domain/endpoints" ).with( body: open(__dir__ + "/data/catapult_create_sip.json").read.chomp, headers: { "Authorization" => "Basic Y2F0YXB1bHRfdG9rZW46Y2F0YXB1bHRfc2VjcmV0", "Content-Type" => "application/json" } ).to_return( status: 201, headers: { "Location" => "http://example.com/endpoint" } ) new_sip = @sip.put.sync assert_equal "http://example.com/endpoint", new_sip.url assert_requested delete assert_requested post end em :test_put def test_put_delete_fail stub_request(:delete, @sip.url).to_return(status: 400) assert_raises(RuntimeError) { @sip.put.sync } end em :test_put_delete_fail def test_put_post_fail stub_request(:delete, @sip.url).to_return(status: 200) stub_request( :post, "https://api.catapult.inetwork.com/v1/users/" \ "catapult_user/domains/catapult_domain/endpoints" ).to_return(status: 400) assert_raises(RuntimeError) { @sip.put.sync } end em :test_put_post_fail class NewTest < Minitest::Test def setup @sip = SipAccount::New.new( username: "12345", password: "old password" ) end def test_with_random_password new_sip = @sip.with_random_password refute_equal @sip.password, new_sip.password refute_empty new_sip.password assert_kind_of String, new_sip.password end def test_put post = stub_request( :post, "https://api.catapult.inetwork.com/v1/users/" \ "catapult_user/domains/catapult_domain/endpoints" ).with( body: open(__dir__ + "/data/catapult_create_sip.json").read.chomp, headers: { "Authorization" => "Basic Y2F0YXB1bHRfdG9rZW46Y2F0YXB1bHRfc2VjcmV0", "Content-Type" => "application/json" } ).to_return( status: 201, headers: { "Location" => "http://example.com/endpoint" } ) new_sip = @sip.put.sync assert_equal "http://example.com/endpoint", new_sip.url assert_requested post end em :test_put end end