test_sip_account.rb

  1# frozen_string_literal: true
  2
  3require "test_helper"
  4require "sip_account"
  5
  6class SipAccount
  7	public :password, :url
  8
  9	class New
 10		public :password
 11	end
 12end
 13
 14class SipAccountTest < Minitest::Test
 15	def setup
 16		@sip = SipAccount.new(
 17			url: "https://api.catapult.inetwork.com/v1/" \
 18			     "users/catapult_user/domains/catapult_domain/endpoints/test",
 19			username: "12345",
 20			password: "old password"
 21		)
 22	end
 23
 24	def test_with_random_password
 25		new_sip = @sip.with_random_password
 26		refute_equal @sip.password, new_sip.password
 27		refute_empty new_sip.password
 28		assert_kind_of String, new_sip.password
 29	end
 30
 31	def test_form
 32		form = @sip.form
 33		assert_equal "12345", form.field("username").value
 34		assert_equal "old password", form.field("password").value
 35		assert_equal "host.bwapp.io.example.com", form.field("server").value
 36	end
 37
 38	def test_put
 39		delete = stub_request(:delete, @sip.url).with(
 40			headers: {
 41				"Authorization" => "Basic Y2F0YXB1bHRfdG9rZW46Y2F0YXB1bHRfc2VjcmV0"
 42			}
 43		).to_return(status: 200)
 44
 45		post = stub_request(
 46			:post,
 47			"https://api.catapult.inetwork.com/v1/users/" \
 48			"catapult_user/domains/catapult_domain/endpoints"
 49		).with(
 50			body: open(__dir__ + "/data/catapult_create_sip.json").read.chomp,
 51			headers: {
 52				"Authorization" => "Basic Y2F0YXB1bHRfdG9rZW46Y2F0YXB1bHRfc2VjcmV0",
 53				"Content-Type" => "application/json"
 54			}
 55		).to_return(
 56			status: 201,
 57			headers: { "Location" => "http://example.com/endpoint" }
 58		)
 59
 60		new_sip = @sip.put.sync
 61		assert_equal "http://example.com/endpoint", new_sip.url
 62		assert_requested delete
 63		assert_requested post
 64	end
 65	em :test_put
 66
 67	def test_put_delete_fail
 68		stub_request(:delete, @sip.url).to_return(status: 400)
 69		assert_raises(RuntimeError) { @sip.put.sync }
 70	end
 71	em :test_put_delete_fail
 72
 73	def test_put_post_fail
 74		stub_request(:delete, @sip.url).to_return(status: 200)
 75		stub_request(
 76			:post,
 77			"https://api.catapult.inetwork.com/v1/users/" \
 78			"catapult_user/domains/catapult_domain/endpoints"
 79		).to_return(status: 400)
 80		assert_raises(RuntimeError) { @sip.put.sync }
 81	end
 82	em :test_put_post_fail
 83
 84	class NewTest < Minitest::Test
 85		def setup
 86			@sip = SipAccount::New.new(
 87				username: "12345",
 88				password: "old password"
 89			)
 90		end
 91
 92		def test_with_random_password
 93			new_sip = @sip.with_random_password
 94			refute_equal @sip.password, new_sip.password
 95			refute_empty new_sip.password
 96			assert_kind_of String, new_sip.password
 97		end
 98
 99		def test_put
100			post = stub_request(
101				:post,
102				"https://api.catapult.inetwork.com/v1/users/" \
103				"catapult_user/domains/catapult_domain/endpoints"
104			).with(
105				body: open(__dir__ + "/data/catapult_create_sip.json").read.chomp,
106				headers: {
107					"Authorization" => "Basic Y2F0YXB1bHRfdG9rZW46Y2F0YXB1bHRfc2VjcmV0",
108					"Content-Type" => "application/json"
109				}
110			).to_return(
111				status: 201,
112				headers: { "Location" => "http://example.com/endpoint" }
113			)
114
115			new_sip = @sip.put.sync
116			assert_equal "http://example.com/endpoint", new_sip.url
117			assert_requested post
118		end
119		em :test_put
120	end
121end