registration_tickets_unittest.py revision c927d5825c831e0372a75b500a57cb545f06bcf7
1#! /usr/bin/python 2 3# Copyright 2014 The Chromium OS Authors. All rights reserved. 4# Use of this source code is governed by a BSD-style license that can be 5# found in the LICENSE file. 6 7"""Unit tests for registration_tickets.py.""" 8 9import json 10import mox 11import unittest 12 13import common 14from cros_lib.fake_device_server import common_util 15from cros_lib.fake_device_server import registration_tickets 16from cros_lib.fake_device_server import resource_delegate 17from cros_lib.fake_device_server import server_errors 18 19 20class RegistrationTicketsTest(mox.MoxTestBase): 21 """Tests for the RegistrationTickets class.""" 22 23 def setUp(self): 24 """Sets up mox and a ticket / registration objects.""" 25 mox.MoxTestBase.setUp(self) 26 self.tickets = {} 27 self.registration = registration_tickets.RegistrationTickets( 28 resource_delegate.ResourceDelegate(self.tickets)) 29 30 31 def testFinalize(self): 32 """Tests that the finalize workflow does the right thing.""" 33 # Unclaimed ticket 34 self.tickets[(1234, None)] = dict(id=1234) 35 self.assertRaises(server_errors.HTTPError, 36 self.registration.POST, 1234, 'finalize') 37 38 # Claimed ticket 39 expected_ticket = dict(id=1234, userEmail='buffet@tasty.org') 40 self.tickets[(1234, None)] = expected_ticket 41 returned_json = json.loads(self.registration.POST(1234, 'finalize')) 42 43 self.assertEquals(returned_json['id'], expected_ticket['id']) 44 self.assertEquals(returned_json['userEmail'], 45 expected_ticket['userEmail']) 46 self.assertIn('robotAccountEmail', returned_json) 47 self.assertIn('robotAccountAuthorizationCode', returned_json) 48 49 50 def testClaim(self): 51 """Tests that we can claim a ticket.""" 52 self.tickets[(1234, None)] = dict(id=1234) 53 self.mox.StubOutWithMock(common_util, 'grab_header_field') 54 self.mox.StubOutWithMock(common_util, 'parse_serialized_json') 55 update_ticket = dict(userEmail='me') 56 common_util.parse_serialized_json().AndReturn(update_ticket) 57 common_util.grab_header_field('Authorization').AndReturn( 58 'Bearer %s' % self.registration.TEST_ACCESS_TOKEN) 59 60 self.mox.ReplayAll() 61 returned_json = json.loads(self.registration.PATCH(1234)) 62 self.assertIn('userEmail', returned_json) 63 # This should have changed to an actual user. 64 self.assertNotEquals(returned_json['userEmail'], 'me') 65 self.mox.VerifyAll() 66 67 68 def testInsert(self): 69 """Tests that we can create a new ticket.""" 70 self.mox.StubOutWithMock(common_util, 'parse_serialized_json') 71 common_util.parse_serialized_json().AndReturn(None) 72 73 self.mox.ReplayAll() 74 returned_json = json.loads(self.registration.POST()) 75 self.assertIn('id', returned_json) 76 self.mox.VerifyAll() 77 78 79 def testGet(self): 80 """Tests that we can retrieve a ticket correctly.""" 81 self.tickets[(1234, None)] = dict(id=1234) 82 returned_json = json.loads(self.registration.GET(1234)) 83 self.assertEquals(returned_json, self.tickets[(1234, None)]) 84 85 # Non-existing ticket. 86 self.assertRaises(server_errors.HTTPError, 87 self.registration.GET, 1235) 88 89 90 def testPatchTicket(self): 91 """Tests that we correctly patch a ticket.""" 92 expected_ticket = dict(id=1234, blah='hi') 93 update_ticket = dict(blah='hi') 94 self.tickets[(1234, None)] = dict(id=1234) 95 96 self.mox.StubOutWithMock(common_util, 'parse_serialized_json') 97 98 common_util.parse_serialized_json().AndReturn(update_ticket) 99 100 self.mox.ReplayAll() 101 returned_json = json.loads(self.registration.PATCH(1234)) 102 self.assertEquals(expected_ticket, returned_json) 103 self.mox.VerifyAll() 104 105 106 def testReplaceTicket(self): 107 """Tests that we correctly replace a ticket.""" 108 update_ticket = dict(id=12345, blah='hi') 109 self.tickets[(12345, None)] = dict(id=12345) 110 111 self.mox.StubOutWithMock(common_util, 'parse_serialized_json') 112 113 common_util.parse_serialized_json().AndReturn(update_ticket) 114 115 self.mox.ReplayAll() 116 returned_json = json.loads(self.registration.PUT(12345)) 117 self.assertEquals(update_ticket, returned_json) 118 self.mox.VerifyAll() 119 120 self.mox.ResetAll() 121 122 # Ticket id doesn't match. 123 update_ticket = dict(id=12346, blah='hi') 124 common_util.parse_serialized_json().AndReturn(update_ticket) 125 126 self.mox.ReplayAll() 127 self.assertRaises(server_errors.HTTPError, 128 self.registration.PUT, 12345) 129 self.mox.VerifyAll() 130 131 132if __name__ == '__main__': 133 unittest.main() 134