--- /dev/null
+<?php
+
+namespace Abraham\TwitterOAuth\Tests;
+
+use Abraham\TwitterOAuth\SignatureMethod;
+
+abstract class AbstractSignatureMethodTest extends \PHPUnit_Framework_TestCase
+{
+ protected $name;
+
+ /**
+ * @return SignatureMethod
+ */
+ abstract public function getClass();
+
+ abstract protected function signatureDataProvider();
+
+ public function testGetName()
+ {
+ $this->assertEquals($this->name, $this->getClass()->getName());
+ }
+
+ /**
+ * @dataProvider signatureDataProvider
+ */
+ public function testBuildSignature($expected, $request, $consumer, $token)
+ {
+ $this->assertEquals($expected, $this->getClass()->buildSignature($request, $consumer, $token));
+ }
+
+ protected function getRequest()
+ {
+ return $this->getMockBuilder('Abraham\TwitterOAuth\Request')
+ ->disableOriginalConstructor()
+ ->getMock();
+ }
+
+ protected function getConsumer($key = null, $secret = null, $callbackUrl = null)
+ {
+ return $this->getMockBuilder('Abraham\TwitterOAuth\Consumer')
+ ->setConstructorArgs([$key, $secret, $callbackUrl])
+ ->getMock();
+ }
+
+ protected function getToken($key = null, $secret = null)
+ {
+ return $this->getMockBuilder('Abraham\TwitterOAuth\Token')
+ ->setConstructorArgs([$key, $secret])
+ ->getMock();
+ }
+}