|  | @@ -307,6 +307,228 @@ class TestWorkspaceMembersEndpoint(FunctionalTest):
 | 
	
		
			
			| 307 | 307 |          assert 'message' in res.json.keys()
 | 
	
		
			
			| 308 | 308 |          assert 'details' in res.json.keys()
 | 
	
		
			
			| 309 | 309 |  
 | 
	
		
			
			|  | 310 | +    def test_api__create_workspace_member_role__ok_200__user_id(self):
 | 
	
		
			
			|  | 311 | +        """
 | 
	
		
			
			|  | 312 | +        Create workspace member role
 | 
	
		
			
			|  | 313 | +        :return:
 | 
	
		
			
			|  | 314 | +        """
 | 
	
		
			
			|  | 315 | +        self.testapp.authorization = (
 | 
	
		
			
			|  | 316 | +            'Basic',
 | 
	
		
			
			|  | 317 | +            (
 | 
	
		
			
			|  | 318 | +                'admin@admin.admin',
 | 
	
		
			
			|  | 319 | +                'admin@admin.admin'
 | 
	
		
			
			|  | 320 | +            )
 | 
	
		
			
			|  | 321 | +        )
 | 
	
		
			
			|  | 322 | +        # create workspace role
 | 
	
		
			
			|  | 323 | +        params = {
 | 
	
		
			
			|  | 324 | +            'user_id': 2,
 | 
	
		
			
			|  | 325 | +            'user_email_or_public_name': None,
 | 
	
		
			
			|  | 326 | +            'role': 'content-manager',
 | 
	
		
			
			|  | 327 | +        }
 | 
	
		
			
			|  | 328 | +        res = self.testapp.post_json(
 | 
	
		
			
			|  | 329 | +            '/api/v2/workspaces/1/members',
 | 
	
		
			
			|  | 330 | +            status=200,
 | 
	
		
			
			|  | 331 | +            params=params,
 | 
	
		
			
			|  | 332 | +        )
 | 
	
		
			
			|  | 333 | +        user_role_found = res.json_body
 | 
	
		
			
			|  | 334 | +        assert user_role_found['role'] == 'content-manager'
 | 
	
		
			
			|  | 335 | +        assert user_role_found['user_id'] == 2
 | 
	
		
			
			|  | 336 | +        assert user_role_found['workspace_id'] == 1
 | 
	
		
			
			|  | 337 | +
 | 
	
		
			
			|  | 338 | +        res = self.testapp.get('/api/v2/workspaces/1/members', status=200).json_body   # nopep8
 | 
	
		
			
			|  | 339 | +        assert len(res) == 2
 | 
	
		
			
			|  | 340 | +        user_role = res[0]
 | 
	
		
			
			|  | 341 | +        assert user_role['role'] == 'workspace-manager'
 | 
	
		
			
			|  | 342 | +        assert user_role['user_id'] == 1
 | 
	
		
			
			|  | 343 | +        assert user_role['workspace_id'] == 1
 | 
	
		
			
			|  | 344 | +        user_role = res[1]
 | 
	
		
			
			|  | 345 | +        assert user_role_found == user_role
 | 
	
		
			
			|  | 346 | +
 | 
	
		
			
			|  | 347 | +    def test_api__create_workspace_member_role__ok_200__user_email(self):
 | 
	
		
			
			|  | 348 | +        """
 | 
	
		
			
			|  | 349 | +        Create workspace member role
 | 
	
		
			
			|  | 350 | +        :return:
 | 
	
		
			
			|  | 351 | +        """
 | 
	
		
			
			|  | 352 | +        self.testapp.authorization = (
 | 
	
		
			
			|  | 353 | +            'Basic',
 | 
	
		
			
			|  | 354 | +            (
 | 
	
		
			
			|  | 355 | +                'admin@admin.admin',
 | 
	
		
			
			|  | 356 | +                'admin@admin.admin'
 | 
	
		
			
			|  | 357 | +            )
 | 
	
		
			
			|  | 358 | +        )
 | 
	
		
			
			|  | 359 | +        # create workspace role
 | 
	
		
			
			|  | 360 | +        params = {
 | 
	
		
			
			|  | 361 | +            'user_id': None,
 | 
	
		
			
			|  | 362 | +            'user_email_or_public_name': 'lawrence-not-real-email@fsf.local',
 | 
	
		
			
			|  | 363 | +            'role': 'content-manager',
 | 
	
		
			
			|  | 364 | +        }
 | 
	
		
			
			|  | 365 | +        res = self.testapp.post_json(
 | 
	
		
			
			|  | 366 | +            '/api/v2/workspaces/1/members',
 | 
	
		
			
			|  | 367 | +            status=200,
 | 
	
		
			
			|  | 368 | +            params=params,
 | 
	
		
			
			|  | 369 | +        )
 | 
	
		
			
			|  | 370 | +        user_role_found = res.json_body
 | 
	
		
			
			|  | 371 | +        assert user_role_found['role'] == 'content-manager'
 | 
	
		
			
			|  | 372 | +        assert user_role_found['user_id'] == 2
 | 
	
		
			
			|  | 373 | +        assert user_role_found['workspace_id'] == 1
 | 
	
		
			
			|  | 374 | +
 | 
	
		
			
			|  | 375 | +        res = self.testapp.get('/api/v2/workspaces/1/members', status=200).json_body   # nopep8
 | 
	
		
			
			|  | 376 | +        assert len(res) == 2
 | 
	
		
			
			|  | 377 | +        user_role = res[0]
 | 
	
		
			
			|  | 378 | +        assert user_role['role'] == 'workspace-manager'
 | 
	
		
			
			|  | 379 | +        assert user_role['user_id'] == 1
 | 
	
		
			
			|  | 380 | +        assert user_role['workspace_id'] == 1
 | 
	
		
			
			|  | 381 | +        user_role = res[1]
 | 
	
		
			
			|  | 382 | +        assert user_role_found == user_role
 | 
	
		
			
			|  | 383 | +
 | 
	
		
			
			|  | 384 | +    def test_api__create_workspace_member_role__ok_200__user_public_name(self):
 | 
	
		
			
			|  | 385 | +        """
 | 
	
		
			
			|  | 386 | +        Create workspace member role
 | 
	
		
			
			|  | 387 | +        :return:
 | 
	
		
			
			|  | 388 | +        """
 | 
	
		
			
			|  | 389 | +        self.testapp.authorization = (
 | 
	
		
			
			|  | 390 | +            'Basic',
 | 
	
		
			
			|  | 391 | +            (
 | 
	
		
			
			|  | 392 | +                'admin@admin.admin',
 | 
	
		
			
			|  | 393 | +                'admin@admin.admin'
 | 
	
		
			
			|  | 394 | +            )
 | 
	
		
			
			|  | 395 | +        )
 | 
	
		
			
			|  | 396 | +        # create workspace role
 | 
	
		
			
			|  | 397 | +        params = {
 | 
	
		
			
			|  | 398 | +            'user_id': None,
 | 
	
		
			
			|  | 399 | +            'user_email_or_public_name': 'Lawrence L.',
 | 
	
		
			
			|  | 400 | +            'role': 'content-manager',
 | 
	
		
			
			|  | 401 | +        }
 | 
	
		
			
			|  | 402 | +        res = self.testapp.post_json(
 | 
	
		
			
			|  | 403 | +            '/api/v2/workspaces/1/members',
 | 
	
		
			
			|  | 404 | +            status=200,
 | 
	
		
			
			|  | 405 | +            params=params,
 | 
	
		
			
			|  | 406 | +        )
 | 
	
		
			
			|  | 407 | +        user_role_found = res.json_body
 | 
	
		
			
			|  | 408 | +        assert user_role_found['role'] == 'content-manager'
 | 
	
		
			
			|  | 409 | +        assert user_role_found['user_id'] == 2
 | 
	
		
			
			|  | 410 | +        assert user_role_found['workspace_id'] == 1
 | 
	
		
			
			|  | 411 | +
 | 
	
		
			
			|  | 412 | +        res = self.testapp.get('/api/v2/workspaces/1/members', status=200).json_body   # nopep8
 | 
	
		
			
			|  | 413 | +        assert len(res) == 2
 | 
	
		
			
			|  | 414 | +        user_role = res[0]
 | 
	
		
			
			|  | 415 | +        assert user_role['role'] == 'workspace-manager'
 | 
	
		
			
			|  | 416 | +        assert user_role['user_id'] == 1
 | 
	
		
			
			|  | 417 | +        assert user_role['workspace_id'] == 1
 | 
	
		
			
			|  | 418 | +        user_role = res[1]
 | 
	
		
			
			|  | 419 | +        assert user_role_found == user_role
 | 
	
		
			
			|  | 420 | +
 | 
	
		
			
			|  | 421 | +    def test_api__create_workspace_member_role__err_400__nothing(self):
 | 
	
		
			
			|  | 422 | +        """
 | 
	
		
			
			|  | 423 | +        Create workspace member role
 | 
	
		
			
			|  | 424 | +        :return:
 | 
	
		
			
			|  | 425 | +        """
 | 
	
		
			
			|  | 426 | +        self.testapp.authorization = (
 | 
	
		
			
			|  | 427 | +            'Basic',
 | 
	
		
			
			|  | 428 | +            (
 | 
	
		
			
			|  | 429 | +                'admin@admin.admin',
 | 
	
		
			
			|  | 430 | +                'admin@admin.admin'
 | 
	
		
			
			|  | 431 | +            )
 | 
	
		
			
			|  | 432 | +        )
 | 
	
		
			
			|  | 433 | +        # create workspace role
 | 
	
		
			
			|  | 434 | +        params = {
 | 
	
		
			
			|  | 435 | +            'user_id': None,
 | 
	
		
			
			|  | 436 | +            'user_email_or_public_name': None,
 | 
	
		
			
			|  | 437 | +            'role': 'content-manager',
 | 
	
		
			
			|  | 438 | +        }
 | 
	
		
			
			|  | 439 | +        res = self.testapp.post_json(
 | 
	
		
			
			|  | 440 | +            '/api/v2/workspaces/1/members',
 | 
	
		
			
			|  | 441 | +            status=400,
 | 
	
		
			
			|  | 442 | +            params=params,
 | 
	
		
			
			|  | 443 | +        )
 | 
	
		
			
			|  | 444 | +
 | 
	
		
			
			|  | 445 | +    def test_api__create_workspace_member_role__err_400__wrong_user_id(self):
 | 
	
		
			
			|  | 446 | +        """
 | 
	
		
			
			|  | 447 | +        Create workspace member role
 | 
	
		
			
			|  | 448 | +        :return:
 | 
	
		
			
			|  | 449 | +        """
 | 
	
		
			
			|  | 450 | +        self.testapp.authorization = (
 | 
	
		
			
			|  | 451 | +            'Basic',
 | 
	
		
			
			|  | 452 | +            (
 | 
	
		
			
			|  | 453 | +                'admin@admin.admin',
 | 
	
		
			
			|  | 454 | +                'admin@admin.admin'
 | 
	
		
			
			|  | 455 | +            )
 | 
	
		
			
			|  | 456 | +        )
 | 
	
		
			
			|  | 457 | +        # create workspace role
 | 
	
		
			
			|  | 458 | +        params = {
 | 
	
		
			
			|  | 459 | +            'user_id': 47,
 | 
	
		
			
			|  | 460 | +            'user_email_or_public_name': None,
 | 
	
		
			
			|  | 461 | +            'role': 'content-manager',
 | 
	
		
			
			|  | 462 | +        }
 | 
	
		
			
			|  | 463 | +        res = self.testapp.post_json(
 | 
	
		
			
			|  | 464 | +            '/api/v2/workspaces/1/members',
 | 
	
		
			
			|  | 465 | +            status=400,
 | 
	
		
			
			|  | 466 | +            params=params,
 | 
	
		
			
			|  | 467 | +        )
 | 
	
		
			
			|  | 468 | +
 | 
	
		
			
			|  | 469 | +    def test_api__create_workspace_member_role__err_400__wrong_user_email_or_public_name(self):  # nopep8
 | 
	
		
			
			|  | 470 | +        """
 | 
	
		
			
			|  | 471 | +        Create workspace member role
 | 
	
		
			
			|  | 472 | +        :return:
 | 
	
		
			
			|  | 473 | +        """
 | 
	
		
			
			|  | 474 | +        self.testapp.authorization = (
 | 
	
		
			
			|  | 475 | +            'Basic',
 | 
	
		
			
			|  | 476 | +            (
 | 
	
		
			
			|  | 477 | +                'admin@admin.admin',
 | 
	
		
			
			|  | 478 | +                'admin@admin.admin'
 | 
	
		
			
			|  | 479 | +            )
 | 
	
		
			
			|  | 480 | +        )
 | 
	
		
			
			|  | 481 | +        # create workspace role
 | 
	
		
			
			|  | 482 | +        params = {
 | 
	
		
			
			|  | 483 | +            'user_id': None,
 | 
	
		
			
			|  | 484 | +            'user_email_or_public_name': 'nothing@nothing.nothing',
 | 
	
		
			
			|  | 485 | +            'role': 'content-manager',
 | 
	
		
			
			|  | 486 | +        }
 | 
	
		
			
			|  | 487 | +        res = self.testapp.post_json(
 | 
	
		
			
			|  | 488 | +            '/api/v2/workspaces/1/members',
 | 
	
		
			
			|  | 489 | +            status=400,
 | 
	
		
			
			|  | 490 | +            params=params,
 | 
	
		
			
			|  | 491 | +        )
 | 
	
		
			
			|  | 492 | +
 | 
	
		
			
			|  | 493 | +    def test_api__update_workspace_member_role__ok_200__nominal_case(self):
 | 
	
		
			
			|  | 494 | +        """
 | 
	
		
			
			|  | 495 | +        Update worskpace member role
 | 
	
		
			
			|  | 496 | +        """
 | 
	
		
			
			|  | 497 | +        # before
 | 
	
		
			
			|  | 498 | +        self.testapp.authorization = (
 | 
	
		
			
			|  | 499 | +            'Basic',
 | 
	
		
			
			|  | 500 | +            (
 | 
	
		
			
			|  | 501 | +                'admin@admin.admin',
 | 
	
		
			
			|  | 502 | +                'admin@admin.admin'
 | 
	
		
			
			|  | 503 | +            )
 | 
	
		
			
			|  | 504 | +        )
 | 
	
		
			
			|  | 505 | +        res = self.testapp.get('/api/v2/workspaces/1/members', status=200).json_body   # nopep8
 | 
	
		
			
			|  | 506 | +        assert len(res) == 1
 | 
	
		
			
			|  | 507 | +        user_role = res[0]
 | 
	
		
			
			|  | 508 | +        assert user_role['role'] == 'workspace-manager'
 | 
	
		
			
			|  | 509 | +        assert user_role['user_id'] == 1
 | 
	
		
			
			|  | 510 | +        assert user_role['workspace_id'] == 1
 | 
	
		
			
			|  | 511 | +        # update workspace role
 | 
	
		
			
			|  | 512 | +        params = {
 | 
	
		
			
			|  | 513 | +            'role': 'content-manager',
 | 
	
		
			
			|  | 514 | +        }
 | 
	
		
			
			|  | 515 | +        res = self.testapp.put_json(
 | 
	
		
			
			|  | 516 | +            '/api/v2/workspaces/1/members/1',
 | 
	
		
			
			|  | 517 | +            status=200,
 | 
	
		
			
			|  | 518 | +            params=params,
 | 
	
		
			
			|  | 519 | +        )
 | 
	
		
			
			|  | 520 | +        user_role = res.json_body
 | 
	
		
			
			|  | 521 | +        assert user_role['role'] == 'content-manager'
 | 
	
		
			
			|  | 522 | +        assert user_role['user_id'] == 1
 | 
	
		
			
			|  | 523 | +        assert user_role['workspace_id'] == 1
 | 
	
		
			
			|  | 524 | +        # after
 | 
	
		
			
			|  | 525 | +        res = self.testapp.get('/api/v2/workspaces/1/members', status=200).json_body   # nopep8
 | 
	
		
			
			|  | 526 | +        assert len(res) == 1
 | 
	
		
			
			|  | 527 | +        user_role = res[0]
 | 
	
		
			
			|  | 528 | +        assert user_role['role'] == 'content-manager'
 | 
	
		
			
			|  | 529 | +        assert user_role['user_id'] == 1
 | 
	
		
			
			|  | 530 | +        assert user_role['workspace_id'] == 1
 | 
	
		
			
			|  | 531 | +
 | 
	
		
			
			| 310 | 532 |  
 | 
	
		
			
			| 311 | 533 |  class TestWorkspaceContents(FunctionalTest):
 | 
	
		
			
			| 312 | 534 |      """
 | 
	
	
		
			
			|  | @@ -364,7 +586,7 @@ class TestWorkspaceContents(FunctionalTest):
 | 
	
		
			
			| 364 | 586 |          assert content['workspace_id'] == 1
 | 
	
		
			
			| 365 | 587 |  
 | 
	
		
			
			| 366 | 588 |      # Root related
 | 
	
		
			
			| 367 |  | -    def test_api__get_workspace_content__ok_200__get_all_root_content__legacy_html_slug(self):
 | 
	
		
			
			|  | 589 | +    def test_api__get_workspace_content__ok_200__get_all_root_content__legacy_html_slug(self):  # nopep8
 | 
	
		
			
			| 368 | 590 |          """
 | 
	
		
			
			| 369 | 591 |          Check obtain workspace all root contents
 | 
	
		
			
			| 370 | 592 |          """
 |