diff options
| author | Mark Nadig | 2013-01-30 08:41:39 -0700 | 
|---|---|---|
| committer | Vojta Jina | 2013-02-14 14:52:46 -0800 | 
| commit | 2a2123441c2b749b8f316a24c3ca3f77a9132a01 (patch) | |
| tree | d79574a58025ae124fcd6c4c146ed996fb8c49f2 /test/ngResource | |
| parent | 1d7a95df565192fc02a18b0b297b39dd615eaeb5 (diff) | |
| download | angular.js-2a2123441c2b749b8f316a24c3ca3f77a9132a01.tar.bz2 | |
fix($resource): params should expand array values properly
Today, calling e.g. var R = $resource('/Path/:a'); R.get({a: 'foo', bar: ['baz1', 'baz2']}); results in a query
string like "/Path/doh?bar=baz1,baz2" which is undesirable. This commit enhances resource to use
$http to encode any non-url parameters resulting in a query string like "/Path/doh?bar=baz1&bar=baz2".
BREAKING CHANGE: if the server relied on the buggy behavior then either the
backend should be fixed or a simple serialization of the array should be done
on the client before calling the resource service.
Diffstat (limited to 'test/ngResource')
| -rw-r--r-- | test/ngResource/resourceSpec.js | 27 | 
1 files changed, 18 insertions, 9 deletions
diff --git a/test/ngResource/resourceSpec.js b/test/ngResource/resourceSpec.js index 1edb5a95..db6fd402 100644 --- a/test/ngResource/resourceSpec.js +++ b/test/ngResource/resourceSpec.js @@ -118,15 +118,24 @@ describe("resource", function() {    }); -  it('should not encode @ in url params', function() { -    //encodeURIComponent is too agressive and doesn't follow http://www.ietf.org/rfc/rfc3986.txt -    //with regards to the character set (pchar) allowed in path segments -    //so we need this test to make sure that we don't over-encode the params and break stuff like -    //buzz api which uses @self +  // In order to get this passed, we need to fix $http - another breaking change, +  // so I'm gonna submit that as a separate CL. +  xit('should not encode @ in url params', function() { +   //encodeURIComponent is too agressive and doesn't follow http://www.ietf.org/rfc/rfc3986.txt +   //with regards to the character set (pchar) allowed in path segments +   //so we need this test to make sure that we don't over-encode the params and break stuff like +   //buzz api which uses @self +   var R = $resource('/Path/:a'); +   $httpBackend.expect('GET', '/Path/doh@fo%20o?!do%26h=g%3Da+h&:bar=$baz@1').respond('{}'); +   R.get({a: 'doh@fo o', ':bar': '$baz@1', '!do&h': 'g=a h'}); +  }); + + +  it('should encode array params', function() {      var R = $resource('/Path/:a'); -    $httpBackend.expect('GET', '/Path/doh@fo%20o?!do%26h=g%3Da+h&:bar=$baz@1').respond('{}'); -    R.get({a: 'doh@fo o', ':bar': '$baz@1', '!do&h': 'g=a h'}); +    $httpBackend.expect('GET', '/Path/doh&foo?bar=baz1&bar=baz2').respond('{}'); +    R.get({a: 'doh&foo', bar: ['baz1', 'baz2']});    });    it('should allow relative paths in resource url', function () { @@ -554,7 +563,7 @@ describe("resource", function() {          expect(response).toEqualData({            data: [{id: 1}, {id :2}],            status: 200, -          config: {method: 'GET', data: undefined, url: '/CreditCard?key=value'}, +          config: {method: 'GET', data: undefined, url: '/CreditCard', params: {key: 'value'}},            resource: [ { id : 1 }, { id : 2 } ]          });          expect(typeof response.resource[0].$save).toBe('function'); @@ -603,7 +612,7 @@ describe("resource", function() {          expect(response).toEqualData({            data : 'resource not found',            status : 404, -          config : { method : 'GET', data : undefined, url : '/CreditCard?key=value' } +          config : { method : 'GET', data : undefined, url : '/CreditCard', params: {key: 'value'}}          });        });  | 
