1+ require "webmock/minitest"
12require_relative "test_helper"
23
3- class AppTest < Minitest ::Test
4+ class AppTest < Test
5+
6+ def test_health_check
7+ get "/health_check"
8+ assert_equal 200 , last_response . status
9+ assert_equal "OK" , last_response . body
10+ end
11+
12+ def test_parser_with_valid_signature
13+ user = "testuser"
14+ url = "https://example.com"
15+ base64_url = Base64 . urlsafe_encode64 ( url )
16+ key = "secret-key"
17+ signature = OpenSSL ::HMAC . hexdigest ( "sha1" , key , url )
18+
19+ response = JSON . dump ( { title : "Test Page" } )
20+
21+ Dir . mktmpdir do |dir |
22+ users_dir = File . join ( dir , "users" )
23+ Dir . mkdir ( users_dir )
24+ File . write ( File . join ( users_dir , user ) , key )
25+
26+ Dir . chdir ( dir ) do
27+ stub_request ( :get , url )
28+ . to_return (
29+ status : 200 ,
30+ body : response ,
31+ headers : { "Content-Type" => "application/json" }
32+ )
33+
34+ stub_request ( :post , "#{ ENV [ "PARSER_URL" ] } /parser" )
35+ . to_return (
36+ status : 200 ,
37+ body : response ,
38+ headers : { "Content-Type" => "application/json" }
39+ )
40+
41+ get "/parser/#{ user } /#{ signature } ?base64_url=#{ base64_url } "
42+
43+ assert_equal 200 , last_response . status
44+ assert_equal "application/json" , last_response . content_type
45+ assert_equal JSON . load ( response ) , JSON . load ( last_response . body )
46+ end
47+ end
48+ end
49+
50+ def test_parser_with_invalid_signature
51+ user = "testuser"
52+ url = "https://example.com"
53+ base64_url = Base64 . urlsafe_encode64 ( url )
54+ invalid_signature = "invalid"
55+
56+ Dir . mktmpdir do |dir |
57+ users_dir = File . join ( dir , "users" )
58+ Dir . mkdir ( users_dir )
59+ File . write ( File . join ( users_dir , user ) , "secret-key" )
60+
61+ Dir . chdir ( dir ) do
62+ get "/parser/#{ user } /#{ invalid_signature } ?base64_url=#{ base64_url } "
63+
64+ assert_equal 400 , last_response . status
65+ assert_equal "application/json" , last_response . content_type
66+
67+ body = JSON . parse ( last_response . body )
68+ assert_equal true , body [ "error" ]
69+ assert_equal "Invalid signature." , body [ "messages" ]
70+ end
71+ end
72+ end
473end
0 commit comments