Skip to content

Commit 57409b5

Browse files
whaleyfernandezpablo85
authored andcommitted
Override equals/hashcode in Token
1 parent 979c657 commit 57409b5

File tree

2 files changed

+71
-7
lines changed

2 files changed

+71
-7
lines changed

src/main/java/org/scribe/model/Token.java

Lines changed: 27 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,25 +1,26 @@
11
package org.scribe.model;
22

3-
import java.io.Serializable;
3+
import java.io.*;
4+
import org.scribe.utils.*;
45

56
/**
67
* Represents an OAuth token (either request or access token) and its secret
7-
*
8+
*
89
* @author Pablo Fernandez
910
*/
1011
public class Token implements Serializable
1112
{
1213
private static final long serialVersionUID = 715000866082812683L;
13-
14+
1415
private final String token;
1516
private final String secret;
1617
private final String rawResponse;
1718

1819
/**
1920
* Default constructor
20-
*
21-
* @param token token value
22-
* @param secret token secret
21+
*
22+
* @param token token value. Can't be null.
23+
* @param secret token secret. Can't be null.
2324
*/
2425
public Token(String token, String secret)
2526
{
@@ -28,6 +29,9 @@ public Token(String token, String secret)
2829

2930
public Token(String token, String secret, String rawResponse)
3031
{
32+
Preconditions.checkNotNull(token, "Token can't be null");
33+
Preconditions.checkNotNull(secret, "Secret can't be null");
34+
3135
this.token = token;
3236
this.secret = secret;
3337
this.rawResponse = rawResponse;
@@ -73,6 +77,22 @@ public boolean isEmpty()
7377
*/
7478
public static Token empty()
7579
{
76-
return new Token("","");
80+
return new Token("", "");
81+
}
82+
83+
@Override
84+
public boolean equals(Object o)
85+
{
86+
if (this == o) return true;
87+
if (o == null || getClass() != o.getClass()) return false;
88+
89+
Token that = (Token) o;
90+
return token.equals(that.token) && secret.equals(that.secret);
91+
}
92+
93+
@Override
94+
public int hashCode()
95+
{
96+
return 31 * token.hashCode() + secret.hashCode();
7797
}
7898
}
Lines changed: 44 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,44 @@
1+
package org.scribe.model;
2+
3+
import static junit.framework.Assert.*;
4+
import org.junit.*;
5+
6+
public class TokenTest
7+
{
8+
@Test
9+
public void shouldTestEqualityBasedOnTokenAndSecret() throws Exception
10+
{
11+
Token expected = new Token("access","secret");
12+
Token actual = new Token("access","secret");
13+
14+
assertEquals(expected, actual);
15+
assertEquals(actual, actual);
16+
}
17+
18+
@Test
19+
public void shouldNotDependOnRawString() throws Exception
20+
{
21+
Token expected = new Token("access","secret", "raw_string");
22+
Token actual = new Token("access","secret", "different_raw_string");
23+
24+
assertEquals(expected, actual);
25+
}
26+
27+
@Test
28+
public void shouldReturnSameHashCodeForEqualObjects() throws Exception
29+
{
30+
Token expected = new Token("access","secret");
31+
Token actual = new Token("access","secret");
32+
33+
assertEquals(expected.hashCode(), actual.hashCode());
34+
}
35+
36+
@Test
37+
public void shouldNotBeEqualToNullOrOtherObjects() throws Exception
38+
{
39+
Token expected = new Token("access","secret","response");
40+
41+
assertNotSame(expected, null);
42+
assertNotSame(expected, new Object());
43+
}
44+
}

0 commit comments

Comments
 (0)