@@ -46,6 +46,7 @@ public void shouldCreateCorrectly() throws Exception {
4646
4747 assertThat (transaction .getTransactionToken (), is (equalTo ("TRANSACTION_TOKEN" )));
4848 assertThat (transaction .getRecoveryCode (), is (equalTo ("RECOVERY_CODE" )));
49+ assertThat (transaction .getTotpSecret (), is (equalTo ("OTP_SECRET" )));
4950 assertThat (transaction .totpURI ("username" , "company" ), is (equalTo ("otpauth://totp/company:username?secret=OTP_SECRET&issuer=company" )));
5051 }
5152
@@ -55,6 +56,7 @@ public void shouldCreateCorrectlyWithSpaces() throws Exception {
5556
5657 assertThat (transaction .getTransactionToken (), is (equalTo ("TRANSACTION_TOKEN" )));
5758 assertThat (transaction .getRecoveryCode (), is (equalTo ("RECOVERY_CODE" )));
59+ assertThat (transaction .getTotpSecret (), is (equalTo ("OTP_SECRET" )));
5860 assertThat (transaction .totpURI ("user name" , "company name" ), is (equalTo ("otpauth://totp/company%20name:user%20name?secret=OTP_SECRET&issuer=company%20name" )));
5961 }
6062
@@ -64,6 +66,7 @@ public void shouldCreateCorrectlyWithWeirdCharacters() throws Exception {
6466
6567 assertThat (transaction .getTransactionToken (), is (equalTo ("TRANSACTION_TOKEN" )));
6668 assertThat (transaction .getRecoveryCode (), is (equalTo ("RECOVERY_CODE" )));
69+ assertThat (transaction .getTotpSecret (), is (equalTo ("OTP_SECRET" )));
6770 assertThat (transaction .totpURI ("user%name" , "compañy?!" ), is (equalTo ("otpauth://totp/compa%C3%B1y%3F!:user%25name?secret=OTP_SECRET&issuer=compa%C3%B1y?!" )));
6871 }
6972
@@ -91,6 +94,32 @@ public void shouldSerializeCorrectly() throws Exception {
9194 assertThat (restoredTransaction .getRecoveryCode (), is (equalTo ("RECOVERY_CODE" )));
9295 }
9396
97+ @ Test
98+ public void shouldThrowWhenRequestingOtpSecretAfterSerialization () throws Exception {
99+ exception .expect (IllegalStateException .class );
100+ exception .expectMessage ("There is no OTP Secret for this transaction" );
101+
102+ Transaction transaction = new Transaction ("TRANSACTION_TOKEN" , "RECOVERY_CODE" , "OTP_SECRET" );
103+
104+ // save
105+ ByteArrayOutputStream outputStream = new ByteArrayOutputStream ();
106+ ObjectOutputStream objectOutputStream = new ObjectOutputStream (outputStream );
107+ objectOutputStream .writeObject (transaction );
108+ objectOutputStream .close ();
109+ outputStream .close ();
110+
111+ byte [] binaryData = outputStream .toByteArray ();
112+
113+ // restore
114+ ByteArrayInputStream inputStream = new ByteArrayInputStream (binaryData );
115+ ObjectInputStream objectInputStream = new ObjectInputStream (inputStream );
116+ Transaction restoredTransaction = (Transaction ) objectInputStream .readObject ();
117+ objectInputStream .close ();
118+ inputStream .close ();
119+
120+ restoredTransaction .getTotpSecret ();
121+ }
122+
94123 @ Test
95124 public void shouldThrowWhenRequestingTotpUriAfterSerialization () throws Exception {
96125 exception .expect (IllegalStateException .class );
0 commit comments